我有以下xml格式
<A>
<a>1</a>
<b>2</b>
<c>3</c>
........
........
</A>
我想将其格式化为
<A a="1" b="2">
<c>3</c>
.........
</A>
注意:我只希望前几个说2个孩子转换为父母的属性,而不是全部。
知道转换所有属性的xsl是
<xsl:template match="A">
<A>
<xsl:for-each select="*">
<xsl:attribute name="{name()}">
<xsl:value-of select="text()"/>
</xsl:attribute>
</xsl:for-each>
<A>
</xsl:template>
答案 0 :(得分:0)
只需使用一些位置谓词:
<xsl:template match="A">
<A>
<xsl:for-each select="*[position() <= 2]">
<xsl:attribute name="{name()}">
<xsl:value-of select="text()"/>
</xsl:attribute>
</xsl:for-each>
<xsl:copy-of select="*[position() > 2]"/>
</A>
</xsl:template>