0

属性をサブ要素に変換しようとしています。つまり、次のようにします。

<employees companyid="101">
    <record>
        <id>1</id>
        <name>pradeep</name>
        <designation>softeng</designation>
    </record>
    <record>
        <id>2</id>
        <name>som</name>
        <designation>softeng</designation>
    </record>
    <record>
        <id>3</id>
        <name>Javed</name>
        <designation>softeng</designation>
    </record>
</employees>

こんな風に変身したい

<employees>
    <record>

        <id>1</id>
        <name>pradeep</name>
        <designation>softeng</designation>
    </record>
    <record>
        <id>2</id>
        <name>som</name>
        <designation>softeng</designation>
    </record>
    <record>
        <id>3</id>
        <name>Javed</name>
        <designation>softeng</designation>
    </record>
</employees>

動いていない。助言がありますか?

4

2 に答える 2

0

各レベルで<companyid>要素が必要になると思います。<record>以下を使用できます。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="node()" />
        </xsl:copy>
    </xsl:template>

    <xsl:template match="record">
        <xsl:copy>
            <companyid><xsl:value-of select="ancestor::employees/@companyid"/></companyid>
            <xsl:apply-templates />
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

<record>最初の要素にのみ表示させたい場合は、次のように変更<xsl:template match="record">できます<xsl:template match="record[1]">

于 2013-09-23T12:49:46.437 に答える
0
<?xml version="1.0" encoding="UTF-8"?>    
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <employees>
            <xsl:copy-of select="employees/*"/> 
        </employees>
    </xsl:template>
</xsl:stylesheet>

出力が正しく、companyid 属性のみを削除したいとします。

于 2013-09-23T13:00:35.913 に答える