我正在使用某些XSLT,我创建了一个变量,该变量将在循环中使用,该变量将在循环时增加索引,因此$ index是变量。
这是我所拥有的:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/xml">
<html>
<head>
<title><xsl:value-of select="module/name[@ID='SDCModule001']/title "/></title>
</head>
<body>
<xsl:apply-templates select="module/name[@ID='SDCModule001']"/>
</body>
</html>
</xsl:template>
<xsl:template name="stepList" match="name">
<xsl:param name="index" select="1" />
<xsl:param name="total" select="numSteps" />
<xsl:variable name="step" select="concat('step', $index)"/>
<xsl:if test="not($index = $total)">
<p><xsl:value-of select="step1" /><xsl:value-of select="$step" /></p>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
将信息放在页面(<p><xsl:value-of select="step1" /> - <xsl:value-of select="$step" /></p>
)的段落中时,我得到:
执行此步骤1-步骤1
“执行此操作1”是从XML读取的内容,并且是正确的。我不确定<xsl:value-of select="$step" />
为什么要带回“ step1”而不是“ Do this 1”,因为<xsl:value-of select="$step" />
应该转换为<xsl:value-of select="step1" />
。
有什么提示我要去哪里吗?
谢谢。
答案 0 :(得分:2)
XSLT不是宏语言。
在宏语言中,变量保存表达式文本的片段,因此,如果$ x包含文本“删除文件'z'”,则评估$ x会导致文件被删除。
XSLT是一种传统的表达语言,其中变量保存值。评估包含文本“删除文件'z'”的变量只会返回该文本,不会导致任何文件被删除。同样,如果变量$ v1的值为“ $ v2”,则求值结果为字符串“ $ v2”,而不是变量$ v2的内容。