1

XSLT1.0 を使用して非常に単純にする必要があることを達成するのに苦労しているので、ご容赦ください。

これは私のオリジナルの XML です。

<adapter-response>
<status>success</status>
<data>
<inventory>
<servers>
....
....
</servers>
<routers>
....
....
</routers>
. ..
...
</インベントリ>
</adapter-response>

大量のデータを含む巨大な XML です。アダプター関連のタグを取り除き、インベントリ データを元のタグで保持したいだけです。したがって、最終的な XML は次のようになります。

<インベントリ>
<サーバー>
....
....
</サーバー>
<ルーター>
....
....
</ルーター>
...
...
</インベントリ>

助けてください!

よろしく、ラフル

4

1 に答える 1

1

提供された XML ドキュメントの「スケッチ」は整形式ではないため、ドキュメントを再構成したものは、質問で意図したものではない可能性があります。

<adapter-response>
    <status>success</status>
    <data>
        <inventory>
            <servers>
....
....
            </servers>
            <routers>
....
....
            </routers>
...
...
        </inventory>
    </data>
</adapter-response>

この変換:

<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="*[contains(name(), 'adapter')]">
  <xsl:apply-templates/>
 </xsl:template>
</xsl:stylesheet>

名前に string が含まれていない要素のみを出力にコピーします"adapter"。上記のドキュメントの結果は次のとおりです。

<status>success</status>
<data>
   <inventory>
      <servers>
....
....
            </servers>
      <routers>
....
....
            </routers>
...
...
        </inventory>
</data>
于 2012-05-23T13:29:24.310 に答える