-2

他のすべての構造と属性を保持しながら、選択したノードに新しい親を追加しようとしています。

元の構造(サンプルから削除された属性と他の子)

<document>
<pages>
    <page>
        <stream>
            <block>
                <table/> <!-- any number or tables or groups can exist in a block -->
                <group/>
            </block>
        </stream>
    </page>
</pages>
</document>

要求された結果:

<document>
<pages>
    <page>
        <stream>
            <block>
                <category> <!-- NEW PARENT, only 1 table per category-->
                    <table/> 
                </category>
                <category> <!-- NEW PARENT, only 1 group per category -->
                    <group/>
                </category>
            </block>
        </stream>
    </page>
</pages>
</document>

これは些細な問題のように思えますが、私はそれを理解したり、オンラインで解決策を見つけたりすることができないようです。

ありがとう

4

1 に答える 1

1

Identity Transform。1つの追加のテンプレートマッチングblock/*があり、各マッチをでラップし<category></category>ます。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="block/*">
        <category>
            <xsl:copy>
                <xsl:apply-templates select="@*|node()"/>
            </xsl:copy>
        </category>
    </xsl:template>
</xsl:stylesheet>
于 2012-12-24T01:16:22.887 に答える