如何使用XSL为xml中的每个标记添加唯一值属性

时间:2010-04-14 19:59:42

标签: xml xslt

我想为xml中的每个标记添加一个唯一属性“ind”。我如何使用xsl。它不一定是一个序列号。只要它对每个标签都是唯一的就足够了。

2 个答案:

答案 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>

希望这可以帮助你,