Как добавить уникальный оцененный атрибут для каждого тега в XML с помощью XSL - PullRequest
1 голос
/ 14 апреля 2010

Я хочу добавить уникальный атрибут «ind» для каждого тега в xml. Как мне сделать это с помощью xsl. Это не должен быть порядковый номер. Пока он уникален для каждого тега, достаточно.

Ответы [ 2 ]

3 голосов
/ 15 апреля 2010

Возьмите преобразование идентичности, добавьте шаблон для элементов, в которые добавьте атрибут со значением, созданным generate-id ().

1 голос
/ 15 апреля 2010

Как то так?

Он также использует уникальное пространство имен для добавляемого нами атрибута, поэтому мы не перезаписываем существующие атрибуты нашими, если они имеют одинаковые имена.

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

Надеюсь, это поможет вам на вашем пути,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...