1. ホーム
  2. xml

[解決済み] 自己閉鎖的なxsl:templateタグ?

2022-02-11 21:13:12

質問

古いxslファイルを見ていて、原作者がなぜ、いくつかの <xsl:template> という要素を セルフクロージングタグ を含む match この例では、次のような質問をしています。 <xsl:template match="title" /> :

XML

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
</catalog>

エックスエッチ

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

    <xsl:template match="/">
      <html>
          <body>
              <h2>My CD Collection</h2>  
              <xsl:apply-templates/>  
          </body>
      </html>
    </xsl:template>

    <xsl:template match="cd">
        <p>
            <xsl:apply-templates select="title"/>  
            <xsl:apply-templates select="artist"/>
        </p>
    </xsl:template>

    <xsl:template match="title" />

    <xsl:template match="artist">
        Artist: <span style="color:#00ff00">
                <xsl:value-of select="."/></span>
        <br />
    </xsl:template>
</xsl:stylesheet>

タグは自動的に閉じられるので、明らかに <xsl:template \> . このようなことをする意味は何でしょうか?に関連するXMLデータを隠すためのテクニックなのでしょうか? template マッチ属性で?

どのように解決するのですか?

セルフクロージング xsl:template タグは、マッチしたノードを抑制する役割を果たします。 これは一般に同一性変換と組み合わせて使われ、他のすべてが出力にコピーされるようにします。 ただし を抑制する。

<xsl:template match="title" /> に対して何もしません。 title の要素は、入力文書にマッチします。