2010-11-11 53 views
1

嗨,您是否知道如何声明一个链接(即:http://www.google.com)作为变量,然后将该变量用于其他if?这个?如何将变量声明为XSLT中的链接

<xsl:element name="a"> 
<xsl:attribute name="href">http://www.google.com</xsl:attribute>// first get the link 
<xsl:choose> 
<xsl:when test="http://www.google.com"> 
    Do something 1 
</xsl:when> 
<xsl:otherwise> 
    Do something 2 
</xsl:choose> 
</xsl:element> 

这是可能的吗?我应该看什么?

+0

你要匹配的字符串的内容,即“HTTP:// WWW谷歌融为一体”,或做某种分辨率或验证第一? – dlanod 2010-11-11 02:26:32

+0

如果你想提供你的输入XML和你想要输出的样子,这将会很有帮助。否则,我们只是猜测你想要什么。 – 2010-11-11 03:26:12

+0

好问题,+1。查看我的答案以获得完整的工作示例。 – 2010-11-11 03:33:36

回答

3

有外出如何声明 链接(即:HTTP://www.google.com)作为 变量,然后使用变量 为别的,如果?

使用此代码作为工作实例 - 当然,你需要学习XSLT的至少基础:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

<xsl:variable name="vLink" select="'http://www.google.com'"/> 

<xsl:template match="/"> 
    <xsl:choose> 
    <xsl:when test="$vLink = 'http://www.google.com'"> 
     It is the Google link... 
    </xsl:when> 
    <xsl:otherwise> 
    It is not (exactly) the Google link... 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 
</xsl:stylesheet> 

当这种转变是在任何XML文档应用(未使用),想要的结果产生:

It is the Google link... 

你也可以使用一个全局<xsl:param>这可以由转换的调用者在外部设置。

+0

+1好的答案。 – 2010-11-11 14:18:31

0

直接匹配内容,并将URL声明为变量。

-1

这在某种程度上是可能的,但XSL中没有if-else结构。这是我测试过的一个版本,您可能能够适应您的需求。我使用的输入是:

<?xml-stylesheet type="text/xsl" href="test.xsl"?> 
<xml> 
    <LinkValue>http://www.google.com/</LinkValue> 
</xml> 

是呈现“做点1”,如果LinkValue是上面的字符串或“做点2:”如果我修改它是XSL:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
     <xsl:variable name="LinkValue" select="//LinkValue"/> 
     <xsl:element name="a"> 
      <xsl:attribute name="href"><xsl:value-of select="$LinkValue"/></xsl:attribute> 
      <xsl:if test="$LinkValue = 'http://www.google.com/'"> 
       Do something 1 
      </xsl:if> 
      <xsl:if test="$LinkValue != 'http://www.google.com/'"> 
       Do something 2 
      </xsl:if> 
     </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 

希望你可以使用这些示例来确定您需要为您的场景实施的内容。

+0

嗯,不知道为什么我使用XSLT的引用说没有,如果 - 否则当选择 - 当存在。 Dimitre的回答比较好。 – dlanod 2010-11-11 03:35:25

+0

感谢您的帮助 – someguy 2010-11-11 05:13:14

0

如果你更需要在全球范围试试这个:

... 
<xsl:apply-templates select="a" /> 
... 

<xsl:template match="a"> 
    Just a link 
</xsl:template> 

<xsl:template match="a[starts-with(@href, 'http://google.com/') or starts-with(@href, 'http://www.google.com/')]"> 
    Link to google.com 
</xsl:template>