我想为xml中的每个标记添加一个唯一属性“ind”。我如何使用xsl。它不一定是一个序列号。只要它对每个标签都是唯一的就足够了。
答案 0 :(得分:3)
进行身份转换,为元素添加模板,其中add属性由generate-id()生成。
答案 1 :(得分:1)
这样的东西?
它还为我们添加的属性使用唯一的命名空间,因此如果它们具有相同的名称,我们不会覆盖任何现有属性。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" xmlns:mycomp="http://www.myuniquenamespace">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="node()">
<xsl:element name="{local-name()}" namespace="{namespace-uri()}">
<xsl:apply-templates select="@*"/>
<xsl:attribute name="someattr" namespace="http://www.myuniquenamespace">
<xsl:value-of select="generate-id()"/>
</xsl:attribute>
<xsl:apply-templates select="node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@* | text()">
<xsl:copy />
</xsl:template>
</xsl:stylesheet>
希望这可以帮助你,