<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> |