XSLT开发:如何将源XML元素值设置为新生成节点的属性值
问题原因
XSLT不支持直接在字面元素的属性值引号内嵌套<xsl:value-of>这类XSLT指令标签,你当前的写法属于语法错误。
解决方法
方法1:属性值模板(推荐,轻量场景首选)
XSLT提供了属性值模板语法,直接用{}包裹XPath表达式即可在属性中动态取值,写法如下:
<date value="{t:cell[1]}"> <xsl:value-of select="t:cell[1]"/> </date>
注意你原代码里属性名写的是when,和预期输出的value属性不一致,这里需要对应修改。
方法2:xsl:attribute显式创建属性(适合复杂逻辑场景)
如果属性值需要结合条件判断、循环等复杂逻辑生成,可以通过<xsl:attribute>节点显式创建属性:
<date> <xsl:attribute name="value"> <xsl:value-of select="t:cell[1]"/> </xsl:attribute> <xsl:value-of select="t:cell[1]"/> </date>
以上两种写法都可以生成你预期的转换结果。
内容的提问来源于stack exchange,提问作者adam19
相关产品推荐
相关产品推荐

