我正在搜索为多个孩子设置相同ID的方法。我在XSL中做到了这一点:
<xsl:template match="ref">
<fields>
<field name="" value=""/>
</fields>
</xsl:template>
&#13;
我用XML获取它
<refs>
<ref alias="">
<fields>
<field name="something" value="something" />
<field name="something" value="something" />
</fields>
</refs>
<ref>
<fields>
<field name="something" value="something"/>
<field name="something" value="something"/>
</fields>
</ref>
</refs>
&#13;
我最后想要这个
<refs>
<ref alias="">
<fields>
<field name="something" value="something" index="0"/>
<field name="something" value="something" index="0"/>
</fields>
</refs>
<ref>
<fields>
<field name="something" value="something" index="1"/>
<field name="something" value="something" index="1"/>
</fields>
</ref>
</refs>
&#13;
我该如何处理?
答案 0 :(得分:0)
我会这样做:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="field">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:attribute name="index">
<xsl:value-of select="generate-id(..)" />
</xsl:attribute>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
这会为每个field
分配其父fields
的唯一ID。 id的确切格式取决于处理器。