<xsl:output> |
出力ドキュメントの特性を定義します。
カテゴリ
トップレベル要素
必須の属性
なし。
省略可能な属性
method 通常、 xml 、 html 、または text の 3 つの値のいずれかを指定します。この値は、生成されるドキュメントの種類を示します。XSLT プロセッサでは、その他の値を追加できます。生成されるドキュメントにその値がどのように影響するかは XSLT プロセッサによって異なります。 version 出力ドキュメントの XML または HTML 宣言の version 属性の値を定義します。この属性は、 method= " html " または method= " xml " の場合にのみ使用されます。 encoding 出力ドキュメントの XML 宣言の encoding 属性の値を定義します。 omit-xml-declaration 出力ドキュメントで XML 宣言を省略するかどうかを定義します。使用可能な値は、 yes と no です。この属性は、 method= " xml " の場合にのみ使用されます。 standalone 出力ドキュメントの XML 宣言の standalone 属性の値を定義します。有効な値は、 yes と no です。この属性は、 method= " xml " の場合にのみ使用されます。 doctype-public 出力ドキュメントの DOCTYPE 宣言の PUBLIC 属性の値を定義します。この属性により、出力ドキュメントの DTD の公開識別子を定義します。この属性は、 method= " html " または method= " xml " の場合にのみ使用されます。 doctype-system 出力ドキュメントの DOCTYPE 宣言の SYSTEM 属性の値を定義します。この属性により、出力ドキュメントの DTD のシステム識別子を定義します。この属性は、 method= " html " または method= " xml " の場合にのみ使用されます。 cdata-section-elements 出力ドキュメントで CDATA セクションとして書き込む要素をリストします。 CDATA セクションのすべての制限とエスケープ規則は、XSLT プロセッサによって処理されます。複数の要素をリストする必要がある場合は、要素名を 1 つまたは複数の空白スペース文字で区切ります。この属性は、 method= " xml " の場合にのみ使用されます。 indent 出力ドキュメント内のタグをインデントするかどうかを指定します。使用可能な値は、 yes と no です。この属性は method= " xml " または method= " html " の場合にのみ使用されます。また XSLT プロセッサを使用する必要はありません。 media-type 出力ドキュメントの MIME タイプを定義します。
コンテンツ
なし。<xsl:output> は空の要素です。
指定先
<xsl:output> は、トップレベル要素であり、<xsl:stylesheet> の子としてのみ使用できます。
定義先
XSLT 16 節「Output」
例
3 つのスタイルシートを作成して、XSLT 仕様で定義されている 3 つの出力方法について説明します。各スタイルシートでは、3 つの出力方法のいずれかを使用しています。3 つのすべての例で次の XML ドキュメントを使用します。
    <?xml version="1.0"?>
    <list>
      <title>A few of my favorite albums</title>
      <listitem>A Love Supreme</listitem>
      <listitem>Beat Crazy</listitem>
      <listitem>Here Come the Warm Jets</listitem>
      <listitem>Kind of Blue</listitem>
      <listitem>London Calling</listitem>
      <listitem>Remain in Light</listitem>
      <listitem>The Joshua Tree</listitem>
      <listitem>The Indestructible Beat of Soweto</listitem>
    </list>
3 つのスタイルシートと、各スタイルシートによって生成された結果を次に示します。最初に method="xml" スタイルシートを示します。
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:output
        method="xml"
        doctype-public="-//W3C/DTD XHTML 1.0//EN"
        doctype-system="file:///d:/xhtml.dtd"
        encoding="ISO-8859-1"
        indent="no"/>

      <xsl:template match="/">
        <html>
          <head>
            <title><xsl:value-of select="/list/title"/></title>
          </head>
          <body>
            <h1><xsl:value-of select="/list/title"/></h1>
            <p>
              <xsl:for-each select="/list/listitem">
                <xsl:number format="1. "/>
                <xsl:value-of select="."/>
                <br/>
              </xsl:for-each>
            </p>
          </body>
        </html>
      </xsl:template>

    </xsl:stylesheet>
このスタイルシートからは、次のような結果が生成されます。
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE html PUBLIC "-//W3C/DTD XHTML 1.0//EN" "file:///d:/xhtml.dtd">
    <html><head><title>A few of my favorite albums</title>
    </head><body><h1>A few of my favorite albums</h1>
    <p>1. A Love Supreme<br/>2. Beat Crazy<br/>3. Here Come the
    Warm Jets<br/>4. Kind of Blue<br/>5. London Calling<br/>6.
    Remain in Light<br/>7. The Joshua Tree<br/>8. The Indestructible
    Beat of Soweto<br/></p></body></html>
この一覧には改行が追加されています。元の出力では、<html> から </html> までの情報が 1 行に表示されます。 出力ドキュメントにはスタイルシートで指定した encoding が表示され、DOCTYPE 宣言には要求した PUBLIC 識別子と SYSTEM 識別子が含まれます。改行は追加されていますが、このドキュメントが空白スペースなどを使用して書式設定されていないことは明らかです。また、出力ドキュメントには空の <br/> 要素があります。method="html" を指定すると、これらの要素は異なる方法で処理されます。method="html" スタイルシートを次に示します。
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:output
        method="html"
        encoding="ISO-8859-1"
        doctype-public="-//W3C/DTD HTML 1.0 Transitional//EN"/>

      <xsl:template match="/">
        <html>
          <head>
            <title><xsl:value-of select="/list/title"/></title>
          </head>
          <body>
            <h1><xsl:value-of select="/list/title"/></h1>
            <p>
              <xsl:for-each select="/list/listitem">
                <xsl:number format="1. "/>
                <xsl:value-of select="."/>
                <br/>
              </xsl:for-each>
            </p>
          </body>
        </html>
      </xsl:template>

    </xsl:stylesheet>
このスタイルシートによって生成された HTML ドキュメントを次に示します。
    <!DOCTYPE HTML PUBLIC "-//W3C/DTD HTML 1.0 Transitional//EN">
    <html>
    <head>
    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>A few of my favorite albums</title>
    </head>
    <body>
    <h1>A few of my favorite albums</h1>
    <p>1. A Love Supreme<br>2. Beat Crazy<br>3. Here Come
    the Warm Jets<br>4. Kind of Blue<br>5. London Calling<br>6.
    Remain in Light<br>7. The Joshua Tree<br>8. The Indestructible
    Beat of Soweto<br>
    </p>
    </body>
    </html>
上記の例と同様に、一覧を読みやすくするために改行を追加しました。XSLT プロセッサにより、HTML ドキュメントの <head> 内に <META> 要素が自動的に挿入されます。前のスタイルシートで空白だった <br> 要素は従来の <br> タグになります。このような XSLT 出力により無効な XML (または XHTML) ドキュメントが生成されますが、生成されたドキュメントは既存の HTML ブラウザで動作します。 最後のスタイルシートでは、method="text" を使用します。
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:output method="text"/>

      <xsl:template match="/">
        <html>
          <head>
            <title><xsl:value-of select="/list/title"/></title>
          </head>
          <body>
            <h1><xsl:value-of select="/list/title"/></h1>
            <p>
              <xsl:for-each select="/list/listitem">
                <xsl:number format="1. "/>
                <xsl:value-of select="."/>
                <br/>
              </xsl:for-each>
            </p>
          </body>
        </html>
      </xsl:template>

    </xsl:stylesheet>
このスタイルシートの結果は次のとおりです。
    A few of my favorite albumsA few of my favorite albums1. A Love Supreme2. Beat
    Crazy3. Here Come the Warm Jets4. Kind of Blue5. London Calling6. Remain in
    Light7. The Joshua Tree8. The Indestructible Beat of Soweto
上記の例と同様に、ドキュメントがページに収まるように改行を挿入しました。これらの結果は、基本的に有用ではありません。注意してコーディングされた HTML 要素がテキストドキュメントに出力されない理由は、text 出力方法によりテキストノードのみが結果ツリーに出力されるためです。さまざまな HTML 要素を生成するように要求しましたが、method="text" と指定したため要求は無視されます。 /td>