• ベストアンサー

xml による表示のしかたについて

素人による基礎的な質問で恐縮いたします。 どうしても 今の問題でつまづいてしまつて、中々先に進めないので 意を決してここで質問することにしました。 時間をとらせてすみません。 ■ xml シート <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet type="text/xsl" href="01.xsl"?> <map> <pref>北海道 <city>札幌市 <div>中央区</div> <div>東区</div> <div>北区</div> <div>白石区</div> </city> <city>函館市</city> <city>小樽市</city> <city>旭川市</city> <city>室蘭市</city> </pref> <pref>青森県 <city>青森市</city> <city>弘前市</city> <city>八戸市</city> </pref> </map> ■ xsl シート <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title>全国地域名</title> </head> <body> <h3 align="left">地域名リスト</h3> <td> <xsl:apply-templates /></td> </body> </html> </xsl:template> <xsl:template match="map"> <xsl:for-each select="pref"> <p><xsl:value-of select="city" /></p> </xsl:for-each> </xsl:template> </xsl:stylesheet> ■ 上記の記述に基づけば 次の表示になってしまいます。 地域名リスト 札幌市 中央区 東区 北区 白石区 青森市 ■私が望んでいる表示は下記のようなものです。 どのように xslシートを 書いたら下記のように表示できるでしょぅか。ひじょうに基礎的なところで躓いてしまっております。 よろしくご教授お願いいたします。 地域名リスト 札幌市 中央区 東区 北区 白石区 函館市 小樽市 旭川市 室蘭市 青森市 青森市 弘前市 八戸市

質問者が選んだベストアンサー

  • ベストアンサー
  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

><xsl:for-each select="pref"> ><p><xsl:value-of select="city" /></p> ></xsl:for-each> よーーーーーく 見てごらん for-eachの 繰り返す回数の基準は"pref" そしてその中で出力してる部分は1回のvalue-of(first-child) でも希望するのは全てのcityの出力。

tonbeisan
質問者

お礼

ありがとうございます。 おかげさまで 有効なヒントになりました。なんとか 壁を突破できそうです。  やっと ロケーションパスに 行き着きました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

関心カテゴリに「英語」が入っているので, 読んでもらえばわかるということで細かい解説は省く。 http://www.w3.org/TR/xslt#value-of >The xsl:value-of element is instantiated to create a text node in the result tree. The required select attribute is an expression; this expression is evaluated and the resulting object is converted to a string as if by a call to the string function. http://www.w3.org/TR/xpath#function-string The string function converts an object to a string as follows: * A node-set is converted to a string by returning the string-value of the node in the node-set 【that is first in document order】. If the node-set is empty, an empty string is returned. http://www.w3.org/TR/xslt#section-Applying-Template-Rules >5.4 Applying Template Rules A select attribute can be used to process nodes selected by an expression instead of processing all children. The value of the select attribute is an expression. The expression must evaluate to a node-set. The selected set of nodes is processed in document order, unless a sorting specification is present (see [10 Sorting]). これと http://www.w3.org/TR/xslt#built-in-rule 5.8 Built-in Template (略) の組み合わせでノードリストに含まれる各ノードのテキストが出力されているのを勘違いしている。 #もちろん,もう一段,xsl:for-eachを入れてもいいわけだけど。 あ、あと、himajin100000としては xsl:output要素が欲しいなー。 HTML/XHTMLは基本的にDOCTYPE宣言必須だし, XHTMLの場合は「XHTML の名前空間宣言」も必要だね。 #もう一つ言うと,個人的にはp要素への書き出しが嫌い。 #dl要素 dt要素 dd要素を駆使して欲しいな~

すると、全ての回答が全文表示されます。

関連するQ&A