【发布时间】:2014-05-13 13:36:10
【问题描述】:
我有类似这样的xml:
<a>
<b attr1="1" attr2="2" attr3="3"></b>
</a>
假设如果 attr1 存在或不为空,我需要将 attr2 的值更改为 22,并将生成的 xml 存储到变量中。
现在我有这样的东西:
<xsl:variable name="bla">
<xsl:choose>
<xsl:when test="b/@attr1 or b/@attr1 != ''">
true
</xsl:when>
<xsl:otherwise>
false
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="blabla">
<xsl:choose>
<xsl:when test="$bla">
<xsl:call-template name="ggg">
<xsl:with-param name="ccc" select="b"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="b"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:template name="ggg">
<xsl:param name="ccc"/>
<xsl:copy-of select="@*" />
<xsl:attribute name="attr2">22</xsl:attribute>
<xsl:copy-of select="node()" />
</xsl:template>
但它不起作用,我认为我走错了方向。
请帮忙。
---- 更新 ---- 期望的输出:
<a>
<b attr1="1" attr2="22" attr3="3"></b>
</a>
它应该存储到变量中,因为我需要再次传递它。
【问题讨论】:
-
你能指定想要的输出是什么吗?将值存储在变量中可能不是您情况的最佳解决方案。
-
我已经更新了问题。
-
你以后什么时候使用这个变量,有什么用?例如,您可以通过应用带有参数的模板来传递变量,但您仍然应该更准确地了解用例(存储变量可能只是获得所需内容的一种方式)。
-
这个 xml 可以是大 xml 的一部分,在某些情况下我需要使用这个进行更改或另一个,取决于变量值。