- - PR -
XSLTのロケーションパスにnode()を指定したのですが・・・
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-07-08 18:42
どうしても理解できなかったので、お力をお借りいたしたく。
下記のようなXML文書があるとします。 <?xml version="1.0" encoding="Shift_JIS"?> <document> <report>wingtip</report> <memo>2003</memo> </document> これをxalan2.5.1で下記stylesheetを使って変換しました。 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:strip-space elements="*"/> <xsl:template match="document"> <html> <xsl:value-of select="child::node()"/> <!-- (1) --> </html> </xsl:template> </xsl:stylesheet> 結果は <html>wingtip</html> でした。document要素のchild軸の指定をしている(つもり)なのですが、 <html>wingtip2003</html> にならないのはなぜですか? (1)の部分を <xsl:value-of select="self::node()"/> にして実行すると、今度は <html>wingtip2003</html> になりました。 document要素のself軸を指定している(つもり)なのに <html>wingtip</html> にならないのはなぜですか? よろしくお願いします。 [ メッセージ編集済み 編集者: ibiyu 編集日時 2003-07-08 18:43 ] |
|
投稿日時: 2003-07-09 13:37
Top > XML eXpert eXchange > XMLリンク集 > XML基本仕様
http://www.atmarkit.co.jp/fxml/links/indexpage/xmlspecs.html#xsl 7.6.1 xsl:value-of を用いたテキストの生成 http://www.infoteria.com/jp/contents/xml-data/REC-xslt-19991116-jpn.htm#value-of この式を評価すると、string 関数の呼び出しを実行したかのように、 関数: string string(object?) http://www.infoteria.com/jp/contents/xml-data/REC-xpath-19991116-jpn.htm#function-string ノード集合内のノードのうち、ドキュメント順で最初のノードの文字列値を返して、ノード集合を文字列に変換する。 その型のノードの文字列値 http://www.infoteria.com/jp/contents/xml-data/REC-xpath-19991116-jpn.htm#dt-string-value ルートノードの文字列値 は、ルートノードのすべての子孫テキストノードの文字列値をドキュメント順に連結したものである。 -------------------- 仕様の目次を暗記しておくと、理解できていなくとも あとで引く時に便利です。 |
|
投稿日時: 2003-07-09 15:59
MMXさん。
回答ありがとうございました。 >ルートノードの文字列値 は、ルートノードのすべての子孫テキストノードの文字列値を >ドキュメント順に連結したものである。 自分の持っている本にはそんなこと一言もふれてませんでした。 やはり、本家の仕様書をきちんと読まなくてはいけませんね。 |
1