我从外部系统接收XML,它使用属性来传递值。这是一个片段:
<declaratieUnica luna_r="01" nume_declar="aaa" prenume_declar="bbb">
<employer cif="1111" caen="0116">
</declaratieUnica>
为了处理这个输入,我必须将每个属性转换为带有值的真实标记,例如,上面的片段应该变成:
<declaratieUnica>
<luna_r>01</luna_r>
<nume_declar>aaa</nume_declar>
<prenume_declar>bbb</prenume_declar>
<employer>
<cif>1111</cif>
<caen>0116</caen>
</declaratieUnica>
我事先并不知道属性的数量,也不知道他们的名字。 在XSLT中是否有通用的说法:&#34;将所有属性转换为值为#34的标签?
答案 0 :(得分:1)
您可以使用以下样式表作为入门者:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="@*">
<xsl:element name="{name()}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
它是输入文档的简单递归副本。 第二个模板匹配所有属性节点并将它们转换为元素。