У меня есть XML, который выглядит следующим образом:
<A></A>
<A></A>
<A>
<a/>
<a/>
</A>
Как вы можете видеть, он имеет два уровня <A>
и <a>
.
Я написал XSL-преобразование, которое генерирует индексна каждом элементе <A>
, и он работает:
<xsl:template match "A">
<xsl:element name="Person">
<xsl:attribute name="id">
<xsl:number count="A"/>
</xsl:attribute>
</xsl:element>
</xsl>
Вывод:
<Person id="1"/>
<Person id="2"/>
<Person id="3"/>
Но как написать xsl: число для генерации того же числа на уровне <a>
(на ???
)?
<xsl:template match "A">
<xsl:element name="Person">
<xsl:attribute name="id">
<xsl:number count="A"/>
<xsl:apply-templates select="a"/>
</xsl:attribute>
</xsl:element>
</xsl>
<xsl:template match "a">
<xsl:element name="Item">
<xsl:attribute name="id">
<xsl:number count="???"/>
</xsl:attribute>
</xsl:element>
</xsl>
Ожидаемый результат (я хочу тот же id
для <Person>
и <Item>
):
<Person id="1"/>
<Person id="2"/>
<Person id="3">
<Item id="3"/>
<Item id="3"/>
</Person>
Я знаю, что это должен быть какой-то простой XPATHвыражение, но я действительно застрял на этом.