5

次のように、xsl ドキュメントを html に変換しています。

  <xsl:template match="/">
    <html>
      <head>
        <title>Title</title>
      </head>
      <body>
        Blah-blah
      </body>
    </html>
  </xsl:template>

それは正しい方法ですか?それとも、 of を使用したxsl:element方が良いのでしょうか? 私はそのような変種の例を見ませんでした:

 <xsl:template match="/">
    <xsl:element name="html">
      <xsl:element name="head">
        <xsl:element name="title">
          Title
        </xsl:element>
      </xsl:element>
      <xsl:element name="body">
        Blah-blah
      </xsl:element>
    </xsl:element>
  </xsl:template>

どのバリアントが正しいですか?
よろしくお願いします。

4

1 に答える 1

4

リテラルの結果要素 (つまり、最初のアプローチ) は短く、入力しやすく、読みやすくなります。xsl:element入力データに基づいて要素名や名前空間を動的に計算する場合にのみ使用することをお勧めします。

<xsl:template match="*">
  <xsl:element name="{translate(local-name(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')}">
     <xsl:apply-templates/>
  </xsl:element>
</xsl:template>

それ以外の場合は、最初のサンプルのようにリテラルの結果要素を使用します。ただし、結果に関して正しいか間違っているかはありません。どちらのバリアントも同じ結果ツリーを返します。

于 2012-11-01T15:23:45.280 に答える