У меня есть XSL.Создание инкрементного идентификатора для атрибутов xml с использованием XSLT
<?xml version="1.0" encoding="UTF-8"?>
<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:template match="/">
<xsl:element name="root">
<xsl:apply-templates select="ModelDefinition/ContainerSpecNode"/>
</xsl:element>
</xsl:template>
<xsl:template match="ContainerSpecNode">
<xsl:element name="item">
<xsl:attribute name="id"><xsl:value-of select="@specId"/></xsl:attribute>
<xsl:attribute name="pathId"><xsl:value-of select="@pathId"/></xsl:attribute>
<xsl:attribute name="specId"><xsl:value-of select="@specId"/></xsl:attribute>
<xsl:attribute name="rel"><xsl:value-of select="@specType"/></xsl:attribute>
<xsl:element name="content">
<xsl:element name="name">
<xsl:value-of select="shortName"/>
<xsl:if test="(@minimumCardinalityCount = '0') or (@maximumCardinalityCount != '1')"> [<xsl:value-of select="@minimumCardinalityCount"/>..<xsl:value-of select="@maximumCardinalityCount"/>]</xsl:if>
</xsl:element>
</xsl:element>
<xsl:apply-templates select="propertySpecs/PropertySpecNode">
<xsl:sort select="shortName"/>
</xsl:apply-templates>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Здесь я хочу создать создать инкрементный уникальный номер для ID атрибутов элемента Item для каждого containerSpecNode так же, как «Tree_node_1», «Tree_Node_2» и так далее ... Здесь я изменил код, подобный этому.
. . . . . .
<xsl:element name="item">
<xsl:variable name="count">
<xsl:number/>
</xsl:variable>
<xsl:attribute name="id"><xsl:value-of select="'Tree_Node_'"/><xsl:value-of select="$count+1"/></xsl:attribute>
Он увеличивает значение счетчика, но не для всех ContainerSpecNode. Некоторые идентификаторы имеют повторяющееся значение.
Я хочу создать для каждого ContainerSpecNode. Как я могу это сделать. Могу ли я использовать для каждого цикла? и как?
Вы забыли показать нам исходный XML-документ, на котором применяется эта трансформация. Преобразование может быть написано намного короче и читаемо - если бы у нас также был исходный XML. Пожалуйста, отредактируйте вопрос и добавьте эту важную информацию. –
Я добавил свой исходный XML. Пожалуйста, проверьте . –
XML, который был добавлен, нигде не видно ??? –