diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/ja/web/api/xsltprocessor/generating_html | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip |
initial commit
Diffstat (limited to 'files/ja/web/api/xsltprocessor/generating_html')
-rw-r--r-- | files/ja/web/api/xsltprocessor/generating_html/index.html | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/files/ja/web/api/xsltprocessor/generating_html/index.html b/files/ja/web/api/xsltprocessor/generating_html/index.html new file mode 100644 index 0000000000..5dd0bc1f01 --- /dev/null +++ b/files/ja/web/api/xsltprocessor/generating_html/index.html @@ -0,0 +1,178 @@ +--- +title: Generating HTML +slug: Web/API/XSLTProcessor/Generating_HTML +translation_of: Web/API/XSLTProcessor/Generating_HTML +--- +<p> +</p> +<h2 id="HTML_.E3.82.92.E7.94.9F.E6.88.90.E3.81.99.E3.82.8B"> HTML を生成する </h2> +<p>ブラウザ内の XSLT の共通アプリケーションの一つは、クライアント上で XML を HTML へと変換することです。二つ目の例は、前回と同様の記事についての情報を含むドキュメント (example2.xml) を入力し、HTML ドキュメントへ変換します。 +</p><p>今回は、記事の <code><span><body></span></code> 要素は HTML 要素 (図 2 では <code><span><b></span></code> タグと <code><span><u></span></code> タグ) を含みます。XML ドキュメントは HTML 要素と XML 要素の両方を含みますが、一つの名前空間、つまり XML 要素のための名前空間のみが必要です。これには HTML 名前空間が無く、XHTML 名前空間を使用すると HTML ドキュメントのように振舞わない XML ドキュメントを XSL に生成させてしまうため、XSL スタイルシート内の <code>xsl:output</code> によって結果のドキュメントが HTML として扱われるようにします。XML 要素については、私たちの独自の名前空間 <code><a class=" external" href="http://devedge.netscape.com/2002/de">http://devedge.netscape.com/2002/de</a></code> と、それによって与えられる myNS プレフィックス <code>(xmlns:myNS="<span>http://devedge.netscape.com/2002/de</span>")</code> が必要です。 +</p><p><small><b>図 2 XML ファイル :(example2.xml)<span>view example | view source</span></b></small> +<span>XML Document (example2.xml):</span> +</p> +<pre><?xml version="1.0"?> +<?xml-stylesheet type="text/xsl" href="example2.xsl"?> + <myNS:Article xmlns:myNS="http://devedge.netscape.com/2002/de"> + <myNS:Title>My Article</myNS:Title> + <myNS:Authors> + <myNS:Author company="Foopy Corp.">Mr. Foo</myNS:Author> + <myNS:Author>Mr. Bar</myNS:Author> + </myNS:Authors> + <myNS:Body> + The <b>rain</b> in <u>Spain</u> stays mainly in the plains. + </myNS:Body> + </myNS:Article> +</pre> +<p>XSL スタイルシートは二つの名前空間を持つ必要があります。一つは XSLT 要素、もう一つは私たちの独自の XML 要素を XML ドキュメント内で使用するためのものです。XSL スタイルシートの出力は、<code>xsl:output</code> 要素を使用して <code>HTML</code> に設定します。出力を HTML に設定すると結果的に要素 (青色の部分) が名前空間を持たないため、これらの要素は HTML 要素とみなされます。 +</p><p><small><b>図 3 : 二つの名前空間をもつ XSL スタイルシート</b> (example2.xsl)</small> +<span>XSL Stylesheet (example2.xsl):</span> +</p> +<pre> <?xml version="1.0"?> + <xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:myNS="http://devedge.netscape.com/2002/de"> + + <xsl:output method="html"/> + ... + </xsl:stylesheet version="1.0"> +</pre> +<p>XML ドキュメントのルートノードに一致するテンプレートは、基本的な HTML ページの構造を生成するために作成し、使用されます。 +</p><p><small><b>図 4 : 基本的な HTML ドキュメントの生成</b></small> +<span>XSL スタイルシート (example2.xsl):</span> +</p> +<pre> ... + <xsl:template match="/"> + <html> + + <head> + + <title> + <xsl:value-of select="/myNS:Article/myNS:Title"/> + </title> + + <style type="text/css"> + .myBox {margin:10px 155px 0 50px; border: 1px dotted #639ACE; padding:0 5px 0 5px;} + </style> + + </head> + + <body> + <p class="myBox"> + <span class="title"> + <xsl:value-of select="/myNS:Article/myNS:Title"/> + </span> </br> + + Authors: <br /> + <xsl:apply-templates select="/myNS:Article/myNS:Authors/myNS:Author"/> + </p> + + <p class="myBox"> + <xsl:apply-templates select="//myNS:Body"/> + </p> + + </body> + + </html> + </xsl:template> + ... +</pre> +<p>例を完成するには、さらに三つの <code>xsl:template</code> が必要です。最初の <code>xsl:template</code> は、二番目のテンプレートが body ノードを処理する間、author ノードに使用されます。三番目のテンプレートは、任意のノードや任意の属性に対応する一般的な対応規則を持っています。これは XML ドキュメント内で、HTML 要素のすべてに対応し、変換生成される HTML ドキュメントにコピーする要素を予約しておくために必要です。 +</p><p><b><small>図 5 : 最終的な三つのテンプレート</small></b> +<span>XSL Stylesheet(example2.xsl):</span> +</p> +<pre> ... + <xsl:template match="myNS:Author"> + -- <xsl:value-of select="." /> + + <xsl:if test="@company"> + :: <b> <xsl:value-of select="@company" /> </b> + </xsl:if> + + <br /> + </xsl:template> + + <xsl:template match="myNS:Body"> + <xsl:copy> + <xsl:apply-templates select="@*|node()"/> + </xsl:copy> + </xsl:template> + + <xsl:template match="@*|node()"> + <xsl:copy> + <xsl:apply-templates select="@*|node()"/> + </xsl:copy> + </xsl:template> + ... +</pre> +<p>最終的な XSLT スタイルシートは次のようになります: +</p><p><small><b>図 6 : 最終的な XSLT スタイルシート<span>view example | view source</span></b></small> +<span>XSL Stylesheet:</span> +</p> +<pre> <?xml version="1.0"?> + <xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:myNS="http://devedge.netscape.com/2002/de"> + + <xsl:output method="html" /> + + <xsl:template match="/"> + <html> + + <head> + + <title> + <xsl:value-of select="/myNS:Article/myNS:Title"/> + </title> + + <style type="text/css"> + .myBox {margin:10px 155px 0 50px; border: 1px dotted #639ACE; padding:0 5px 0 5px;} + </style> + + </head> + + <body> + <p class="myBox"> + <span class="title"> + <xsl:value-of select="/myNS:Article/myNS:Title"/> + </span> <br /> + + Authors: <br /> + <xsl:apply-templates select="/myNS:Article/myNS:Authors/myNS:Author"/> + </p> + + <p class="myBox"> + <xsl:apply-templates select="//myNS:Body"/> + </p> + + </body> + + </html> + </xsl:template> + + <xsl:template match="myNS:Author"> + -- <xsl:value-of select="." /> + + <xsl:if test="@company"> + :: <b> <xsl:value-of select="@company" /> </b> + </xsl:if> + + <br /> + </xsl:template> + + <xsl:template match="myNS:Body"> + <xsl:copy> + <xsl:apply-templates select="@*|node()"/> + </xsl:copy> + </xsl:template> + + <xsl:template match="@*|node()"> + <xsl:copy> + <xsl:apply-templates select="@*|node()"/> + </xsl:copy> + </xsl:template> + </xsl:stylesheet> +</pre> +<div class="noinclude"> +</div> +{{ languages( { "en": "en/XSLT_in_Gecko/Generating_HTML", "fr": "fr/XSLT_dans_Gecko/G\u00e9n\u00e9ration_de_HTML", "ko": "ko/XSLT_in_Gecko/Generating_HTML" } ) }} |