5

私は XSL が初めてで、この質問に関する情報を見つけることができません。これは XSLT 1.0 専用で、最終的には XSLTproc から実行されます。

XML の例を次に示します。

<root>
    <node>
        <data />
        <child>
            <grandchild />
        </child>
        <step-child action="removenode" />
    </node>
    <node>
        <data />
        <step-child action="removenode" />
    </node>
</root>

基本的に、次を除くすべてを保持したい:

  • なしで任意のノードを削除します<child>
  • すべて削除する<step-child>

不要なノードを削除する方法しかわかりませんが、それでも疑問です。これについて何か助けていただければ幸いです。

4

1 に答える 1

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

    <!--Identity template to copy all content by default-->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!--Remove node elements that do not have child elements, 
               and remove step-child elements -->
    <xsl:template match="node[not(child)] | step-child"/>

</xsl:stylesheet>
于 2012-06-01T21:40:41.740 に答える