| <xsl:output> | |
| 出力ドキュメントの特性を定義します。 | |
| カテゴリ | |
|
トップレベル要素 |
|
| 必須の属性 | |
|
なし。 |
|
| 省略可能な属性 | |
|
|
| コンテンツ | |
|
なし。<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> | |