-1

以下の xml を使用して、次の作業を完了するために必要な xsl 変換コードを教えてください。

現在の XML:

<ROOTNODE>
  <SUBNODE1>
<DETAILS>
  <SOMETHING>Here</SOMETHING>
  <UNIMPORTANT1>Thing</UNIMPORTANT1>
</DETAILS>
<SOMEWHATIMPORTANT>This</SOMEWHATIMPORTANT>
<ALSOUNIMPORTANT>Very</ALSOUNIMPORTANT>
  </SUBNODE1>
</ROOTNODE>

出力 XML:

<DETAILS>
  <SOMETHING>Here</SOMETHING>
</DETAILS>
<SOMEWHATIMPORTANT>This</SOMEWHATIMPORTANT>
4

2 に答える 2

1

この変換:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

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

 <xsl:template match="/*|/*/*"><xsl:apply-templates/></xsl:template>
 <xsl:template match="*[contains(name(), 'UNIMPORTANT')]"/>
</xsl:stylesheet>

提供された XML ドキュメントに適用した場合:

<ROOTNODE>
    <SUBNODE1>
        <DETAILS>
            <SOMETHING>Here</SOMETHING>
            <UNIMPORTANT1>Thing</UNIMPORTANT1>
        </DETAILS>
        <SOMEWHATIMPORTANT>This</SOMEWHATIMPORTANT>
        <ALSOUNIMPORTANT>Very</ALSOUNIMPORTANT>
    </SUBNODE1>
</ROOTNODE>

必要な正しい結果が生成されます

<DETAILS>
   <SOMETHING>Here</SOMETHING>
</DETAILS>
<SOMEWHATIMPORTANT>This</SOMEWHATIMPORTANT>
于 2012-10-18T23:07:35.397 に答える
0

あなたは試すことができます:

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

    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/">
        <newroot>
            <DETAILS>
                <xsl:copy-of select="//DETAILS/SOMETHING"/>
            </DETAILS>
            <xsl:copy-of select="//SOMEWHATIMPORTANT"/>
        </newroot>
    </xsl:template>

</xsl:stylesheet>

アップデート

次の ANT プロジェクトを使用して、transform.xmlというこのスタイルシートを実行します。

.
├── build.xml
├── data.xml
└── transform.xsl

プロジェクトを実行すると、次の出力が生成されます。

$ ant && cat build/data.xml
Buildfile: /home/mark/tmp/build.xml

transform:
     [xslt] Processing /home/mark/tmp/data.xml to /home/mark/tmp/build/data.xml
     [xslt] Loading stylesheet /home/mark/tmp/transform.xsl

BUILD SUCCESSFUL
Total time: 0 seconds
<?xml version="1.0" encoding="UTF-8"?>
<newroot>
<DETAILS>
<SOMETHING>Here</SOMETHING>
</DETAILS>
<SOMEWHATIMPORTANT>This</SOMEWHATIMPORTANT>
</newroot>

build.xml

<project name="xslt-demo" default="transform">

    <target name="transform">
        <xslt style="transform.xsl" in="data.xml" out="build/data.xml"/>
    </target>

    <target name="clean">
        <delete dir="build"/>
    </target>

</project>

data.xml

<ROOTNODE>
  <SUBNODE1>
<DETAILS>
  <SOMETHING>Here</SOMETHING>
  <UNIMPORTANT1>Thing</UNIMPORTANT1>
</DETAILS>
<SOMEWHATIMPORTANT>This</SOMEWHATIMPORTANT>
<ALSOUNIMPORTANT>Very</ALSOUNIMPORTANT>
  </SUBNODE1>
</ROOTNODE>
于 2012-10-18T22:42:16.773 に答える