选择并处理XSLT中的所有属性

时间:2016-03-23 19:05:13

标签: xml xslt

我从外部系统接收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的标签?

1 个答案:

答案 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>

它是输入文档的简单递归副本。 第二个模板匹配所有属性节点并将它们转换为元素。