Rav*_*noy 15 xml xslt xpath apache-cocoon
我正在开发一个使用apache cocoon将XML转换为PDF的应用程序,我正在重新设计处理输入XML的XSL.
目前在XSL中,我们有这样的代码
<xsl:variable name="variable1">
<xsl:choose>
<xsl:when test="$testVariable ='1'">
<xsl:value-of select="'A'"/>
</xsl:when>
<xsl:when test="$testVariable ='1'">
<xsl:value-of select="'B'"/>
</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:variable name="variable2">
<xsl:choose>
<xsl:when test="$testVariable ='1'">
<xsl:value-of select="'X'"/>
</xsl:when>
<xsl:when test="$testVariable ='1'">
<xsl:value-of select="'Y'"/>
</xsl:when>
</xsl:choose>
</xsl:variable>
Run Code Online (Sandbox Code Playgroud)
如果我改成它会有用吗?
<xsl:variable name="variable1"/>
<xsl:variable name="variable2"/>
<xsl:choose>
<xsl:when test="$testVariable ='1'">
<xsl:variable name="variable1" select="'A'">
<xsl:variable name="variable2" select="'X'">
</xsl:when>
<xsl:when test="$testVariable ='2'">
<xsl:variable name="variable1" select="'B'">
<xsl:variable name="variable2" select="'Y'">
</xsl:when>
</xsl:choose>
Run Code Online (Sandbox Code Playgroud)
JLR*_*she 29
不,与许多其他语言不同,XSLT变量在创建后无法更改其值.但是,您可以使用以下技术避免无关代码:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:variable name="mapping">
<item key="1" v1="A" v2="B" />
<item key="2" v1="X" v2="Y" />
</xsl:variable>
<xsl:variable name="mappingNode"
select="document('')//xsl:variable[@name = 'mapping']" />
<xsl:template match="....">
<xsl:variable name="testVariable" select="'1'" />
<xsl:variable name="values" select="$mappingNode/item[@key = $testVariable]" />
<xsl:variable name="variable1" select="$values/@v1" />
<xsl:variable name="variable2" select="$values/@v2" />
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
事实上,一旦你得到values变量,你甚至可能不需要单独variable1和variable2变量.你可以使用$values/@v1而$values/@v2不是.
| 归档时间: |
|
| 查看次数: |
93367 次 |
| 最近记录: |