У меня этот XML как мой вход:XSLT: Как изменить имя тега, если это родительский или дочерний узел?
<unidad num="2.">
<tag></tag>
<tag2></tag2>
<unidad num="2.1">
<tag></tag>
<tag2></tag2>
<unidad num="2.1.1">
<tag></tag>
<tag2></tag2>
<unidad num="2.1.1.1">
<tag></tag>
<tag2></tag2>
</unidad>
</unidad>
</unidad>
</unidad>
Мой вывод должен быть:
<sub>
<tag></tag>
<tag2></tag2>
<sub2>
<tag></tag>
<tag2></tag2>
<sub3>
<tag></tag>
<tag2></tag2>
<sub4>
<tag></tag>
<tag2></tag2>
</sub4>
</sub3>
</sub2>
</sub>
Я не могу найти правильный способ сделать это. Я работаю с шаблонами, я имею это:
<xsl:for-each select="unidad">
<xsl:call-template name="unidades1"/>
</xsl:for-each>
<xsl:template name="unidades1">
<xsl:element name="sub1">
<xsl:text></xsl:text>
</xsl:element>
<xsl:if test="position() != last()">
<xsl:apply-templates select="child::*"/>
</xsl:if>
</xsl:template>
<xsl:template match="unidad">
<xsl:call-template name="unidades2"/>
</xsl:template>
<xsl:template name="unidades2">
<xsl:element name="sub2">
<xsl:text></xsl:text>
</xsl:element>
<xsl:if test="position() != last()">
<xsl:apply-templates select="child::*"/>
</xsl:if>
</xsl:template>
С помощью этого XSLT, каждый ребенок Унидад соответствует второму условию, так написано, как sub2, и я не знаю, как считать, если ему является дочерним элементом другого элемента unidad. Любые идеи, как достичь этого? Благодаря!