1

XSL を実行して XML ファイルの特定の要素を選択すると、選択されていない要素が生成された出力にギャップが生じます。

たとえば、黒猫のみを取得するように次を変換するとします。

<cats>
 <cat>
  <name>Steve</name>
  <color>black</color>
 </cat>
 <cat>
  <name>Tom</name>
  <color>tabby</color>
 </cat>
 <cat>
  <name>Archibald</name>
  <color>black</color>
 </cat>
</cats>

私はこれを得るかもしれません:

<cats>
 <cat>
  <name>Steve</name>
  <color>black</color>
 </cat>




 <cat>
  <name>Archibald</name>
  <color>black</color>
 </cat>
</cats>

これは XSL 自体で制御可能ですか、それとも使用しているツールの「機能」ですか?

4

1 に答える 1

2

これは XSL で制御できます。次のようなことをする必要があります:

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

    ....

</xsl:stylesheet>

これは、XML 内に空白要素 (改行、キャリッジ リターンなど) などがあるために発生<cat><name>ます。これらは、テキスト ノードと出力用の組み込みテンプレートによって照合されます。この<xsl:strip-space>要素は、入力から意味のない空白を削除します。次に、必要なインデントを実現するために要素を設定する必要がありindent="yes"ます。<xsl:output>

于 2013-10-08T10:57:23.393 に答える