在for-each
语句中,我想为每个匹配的节点生成ID。
给出一些XML文件:
<event attr1="qwertz">
<test>Test</test>
</event>
<event attr1="asdfg">
<test>Test</test>
</event>
......以及以下规则:
<xsl:for-each select="event">
<xsl:element name="event">
<xsl:attribute name="id">id/{generate-id(test)}</xsl:attribute>
</xsl:element>
</xsl:for-each>
我总是得到这样的东西:
<event id="id/generate-id(test)"/>
<event id="id/generate-id(test)"/>
<event id="id/generate-id(test)"/>
...
在XSLT中调用此函数的正确语法是什么?提前谢谢!
答案 0 :(得分:2)
使用:
<event id="id/{generate-id(test)}"/>
或详细:
<xsl:element name="event">
<xsl:attribute name="id">
<xsl:text>id/<xsl:text>
<xsl:value-of select="generate-id(test)"/>
</xsl:attribute>
</xsl:element>
注意:属性值模板仅适用于文字结果元素,仅适用于XSLT指令的某些属性。