如何在XSLT中将变量声明为链接

时间:2010-11-11 02:02:30

标签: xslt

您好,如何将链接(即:http://www.google.com)声明为变量,然后将该变量用于其他if?这样的东西?

   <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>

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

4 个答案:

答案 0 :(得分: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>这可以由转化的调用者在外部设置。

答案 1 :(得分:0)

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

答案 2 :(得分: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> 

答案 3 :(得分:-1)

在某种程度上可能,但在XSL中没有if-else结构。这是我测试过的一个版本,您可以根据自己的需要进行调整。我使用的输入是:

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

如果LinkValue是上面的字符串,那么显示“Do something 1”的XSL或者如果我修改了它就是“Do something 2”:

<?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>

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