XSL/XSLT
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
01/09/05 10:49ID:dYMWGvtU0304nobodyさん
04/08/25 17:25ID:ly9L2Z7D<mage>
<mage>
<take>
<toge>
みたいな構造になっているXMLファイルがあって(上では閉じタグ省略)、
いまrootから何階層目にいるのかを知るにはどうしたら良い?
0306nobodyさん
04/09/06 20:13ID:koFx6bH6http://neta.ywcafe.net/000339.html
国民の税金で気象データの収集・解析までしておきながら、
気象庁の官僚の天下り先である
・財団法人 気象業務支援センター
・財団法人 日本気象協会
の利権保護の為、未だRSS配信が拒まれているのだ。
将来的に行われるであろう地震予知の情報も、有料で国民に販売するつもりだろうか?
0307nobodyさん
04/09/07 09:26ID:???0309nobodyさん
04/09/07 14:14ID:???0311nobodyさん
04/09/07 21:05ID:???0312nobodyさん
04/09/08 11:32ID:???310 はガソリンを、
308,311 は住民を、
各自、自由に叩いてください。
313 は XSL/XSLT ネタ、よろしく。
0313nobodyさん
04/09/09 02:59ID:???0314nobodyさん
04/09/09 09:57ID:???XSL/XSLTのネタよろしく。
0315nobodyさん
04/09/24 05:09:23ID:/pWgzu1/<b id="b0">
<c>foo0</c>
<c>bar0</c>
</b>
<b id="b1">
<c>foo1</c>
<c>bar1</c>
</b>
</a>
のようなデータから、<c>の値を2つ指定して最初に出てくる共通の親要素を
見つけるにはどうすればよいでしょうか?
例えば、"foo0"と"bar0"なら "b0"、"foo0"と"foo1"なら"a0"がほしいです。
共通の親をすべてならなんとかなるのですが、
その中で最初にマッチする親だとさっぱりわかりません。
よろしくおねがいします。
0316nobodyさん
04/09/25 10:50:09ID:???(descendant::c[. = 'foo0']/ancestor::*[./descendant::c[. = 'bar1']])[last()]/@id
0317316
04/09/26 08:08:17ID:???/descendant::c[self::node() = 'foo0']/ancestor::*[descendant::c = 'foo1'][position() = 1]
これでも、共通且つ最初にマッチする先祖を得られると思う。
0319nobodyさん
04/09/28 17:39:48ID:???XSLT で <a href="javascript:foo('bar')">...</a> のようなタグを生成したいのですが、
引用符のエスケープの仕方がよくわかりません。ご存知の方、ご回答をお願いいたします。
現在はこんなコードを書いてます (エラーになります)
<a href="{concat('javascript:foo(', ''', @bar, ''', ')')}">
0322nobodyさん
04/09/28 20:00:16ID:???こういう事ですね?
<xsl:element name="a">
<xsl:attribute name="href">javascript:foo(&apos;bar&apos;)</xsl:attribute>
<xsl:apply-templates />
</xsl:element>
コピペするならこっち
<xsl:element name="a">
<xsl:attribute name="href">javascript:foo('bar')</xsl:attribute>
<xsl:apply-templates />
</xsl:element>
アンカー・テキスト不変なら、こっち
<xsl:element name="a">
<xsl:attribute name="href">javascript:foo('bar')</xsl:attribute>
アンカー・テキスト
</xsl:element>
0323nobodyさん
04/10/11 13:28:18ID:???ttp://xsltsl.sourceforge.net/
exsltみたいなライブラリ集だけど、こっちの方が実用的?
0324nobodyさん
04/10/14 23:53:23ID:DOJgSO2G土台を出力してくれるようなツールって無いでしょうか?
フルスクラッチで作るの、面倒じゃないですか?
0325nobodyさん
04/10/15 00:48:57ID:???スレ違いか
http://pc5.2ch.net/test/read.cgi/hp/1057198990/
0326nobodyさん
04/12/06 00:30:36ID:???<xml...
<xslt:sheet1.xsl.....
<DataList>
<Data ID="0">
<String>データ0</String>
</Data>
<Data ID="0">
<String>データ0</String>
</Data>
<Data ID="0">
<String>データ0</String>
</Data>
</DataList>
このdata1.xmlファイルをdata1.xml?id=0みたいな呼び出し方をしてxslファイルにid=0という値を渡す方法ってあるのでしょうか?
0327nobodyさん
04/12/06 15:30:17ID:???0328nobodyさん
04/12/06 15:34:45ID:jrlDRA4fdata1.xml?id=0と打ち込み、ID=0の商品に関する情報だけを
表示したいんです。
URLで打ち込んだデータをXSL内の変数に取り込みたいのです。
現在だと、hrefつかってもIDの数だけxmlファイルを作成しないと
いけなくなってしまうんです。
0329nobodyさん
04/12/23 23:41:54ID:???今更ながら、xsltで全て作成してjavascriptでlocation.queryから引数受け取ってwindowのロード時に違うノードサクージョ
0330nobodyさん
05/01/08 15:33:14ID:???MSXSLを用いて変換を行おうとしているのですが
コマンドを打ち込んだときに
必要な属性'{http://www.w3.org/1999/XSL/Transform}version' が見つかりません
という変なエラーメッセージが出てしまいます。これはどうすればいいんでしょうか?
0331nobodyさん
05/01/08 17:10:58ID:???解決しちゃいました どうもです
0332nobodyさん
05/01/10 19:16:25ID:???XMLのあるタグの属性が同じレベルのタグの属性とダブっっている時、
変換後にその属性のダブった部分を除きながら属性を並べたい場合は
どうすればよいでしょうか?
例えば
xml
<a>
<ele id="1"/>
<ele id="2"/>
<ele id="2"/>
<ele id="3"/>
<ele id="4"/>
<ele id="4"/>
<ele id="4"/>
<ele id="5"/>
</a>
を変換して
1 2 3 4 5
にするようなXSLを教えていただきたいのです。
よろしくお願いします。
0333nobodyさん
05/01/10 19:48:07ID:???0334nobodyさん
05/01/22 19:16:33ID:WsL3wQoUexclude-result-prefixes="human">
<xsl:for-each select="people/person/age">
ここで別のXMLを取ってくる
<xsl:apply-templates select="human:hobbies/human:hoby" />
</xsl:for-each>
<xsl:template match="human:hobby">
0335334
05/01/22 19:17:52ID:WsL3wQoU>>334のようにやると下のテンプレートの中身へ行かない?ようなのですが
どこに問題があるのでしょう?
0336nobodyさん
05/01/24 03:30:34ID:???もう解決してるのかもしれんが
//ele[not(@id=following-sibling::node()/@id)]/@id
とかでどうすか?
0337nobodyさん
05/01/30 14:52:43ID:0RSaGuslそれを表示する際に、dd-mmm-yyのフォーマットで表示したいんですが、どうすればよいでしょうか?
0338nobodyさん
05/01/30 20:37:49ID:0RSaGuslすごい遅くなりました。前もってデータを変換してXMLをつくった
方が良さそうです...
0339nobodyさん
2005/04/09(土) 23:05:41ID:0FjmIeSR<先祖のどこか xmlns:x="http://pc8.2ch.net/test/read.cgi/php/">
...中略...<ここ この属性の値をチェックしたい="x:999654569"/>
node系関数のnamespace-uri()は値は見れないし、
string系の関数じゃ、xが本当にhttp://pc8.2ch.net/test/read.cgi/php/なのかわからん。
ずうっと名前空間宣言を全部フォローして自分で覚えとくしかないのか?
0340nobodyさん
2005/04/21(木) 17:08:59ID:???Aに1・2という情報?属性?を付けて
Bに2・3を付けて
Cに1を付けて
1が付いているのはA・C
2が付いているのはA・B
3が付いているのはB
というように表示するにはどうすればいいでしょう
0342nobodyさん
2005/04/21(木) 22:02:56ID:???System.out.println("2が付いているのはA・B");
System.out.println("3が付いているのはB");
0343nobodyさん
2005/04/21(木) 23:30:22ID:???MsgBox "1が付いているのはA・C", vbInformation
MsgBox "2が付いているのはA・B", vbInformation
MsgBox "3が付いているのはB", vbInformation
0344nobodyさん
2005/07/29(金) 15:21:12ID:???<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="design.xsl"?>
<hage:root xmlns="http://example.com" xmlns:hage="http://example.com/hage/">
<item1>あいうえお</item1>
<item2>かきくけこ</item2>
</hage:root>
こんな XML から "あいうえお"を取り出したいんだけど /hage:root/item1 じゃうまくいかないみたい。
0345nobodyさん
2005/08/04(木) 10:02:40ID:???携帯だからアドバイスしづらいな…。
まあ多分スタイルシートではxmlns="XHTMLのURI"とかやってると思う。
(これ自体は問題ないし下手にprefixつけるとUAが出力結果をXHTMLとして認識できない。)
でもこの場合あんたのスタイルシート内のXpath式内でitem1を指定しても
それはXHTMLでのitem1要素を指定していることになっている。
もちろんあんたはそんなもの扱った覚えは無いだろうしXHTMLにもそんな要素はない。
正しく処理させるには名前空間について勉強してくれ。
ソースXML文書のprefix無い方の名前空間のURIを$aとおくと、
スタイルシート側にxmlns:omanko="$a"を書き加えXPathではomanko:item1と
指定すればいい。xsl:の部分とかも不都合があればばんばん書き換えればいいから。
携帯からだから妙ちくりんな書き方になったが頑張ってくれ
んじゃ
0346nobodyさん
2005/08/14(日) 13:37:07ID:XDX8Ip5HUTF8で配信されるXMLをSHIFT_JISでHTML化したい
場合は
�@JAVAのXMLパーサーとか使う
�AperlとかphpでSOAP
なんていう方法しかありませんか?
現在はXSLTで簡単にスタイルシートあててやってますが
SHIFT_JISで出力するのは無理ぽ。。です。
どうにか方法はありますのでしょうか。。
携帯サイトを運営しているのですが
UTF8じゃ文字ばけするぞゴラァ!という
クレームが多くて困ってます。
0347nobodyさん
2005/08/14(日) 15:10:24ID:???XSLTのoutput要素のencoding属性使ってもうまくいくと思う。
まぁ、XMLパーサ使ってフィルタプログラム作成するなり、既存のフィルタツールなり使ったほうが
柔軟性はあるが。
<<サンプル>>
■data.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="data.xsl" ?>
<root>
<data>あああ</data>
<data>いいい</data>
</root>
■data.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Shift_JIS" />
<xsl:template match="root">
<html><head><title>utf8->SJIS</title></head><body>
<xsl:for-each select="data">
<xsl:value-of select="text()" /><br />
</xsl:for-each>
</body></html>
</xsl:template>
</xsl:stylesheet>
0348nobodyさん
2005/08/14(日) 18:40:08ID:???ご丁寧に有難う御座います。
<xsl:output method="html" encoding="Shift_JIS" />
なんてタグがあるなんて知りませんでした。。orz
早速、その方法を試してみました。
結果報告
�@PCブラウザで見る(IE)
ホワイトアウトしてしまいました。
右クリでエンコード指定でシフトジスにすると表示されました。
�A元からUTF8対応携帯で見る
文字化けしてしまいました。
�Bシフトジスしか対応していない携帯で見る
うまく表示されるようになりました。
つまり 今まで見えてた�@�Aは見えなくなりましたが
�Bは見えるようになりました。
恐らくブラウザ側ではUTF8として認識しているためだと
思います。
素直にphpのxmlパーサーとかでやりつかね・・・
(php5入ってないので・・・SOAP無理ぽ)
0349nobodyさん
2005/08/14(日) 18:50:00ID:???<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
を挿入してみたらどうですかね。
0350nobodyさん
2005/08/14(日) 19:36:51ID:???phpでサーバサイドでのXSLT変換か。取りあえず、UTF-8からShift_JISへの変換はできたみたいだね。
phpの話になってスマンが、もしかして、header('Content-Type: text/html; charset=UTF-8');とかなってる?
header('Content-Type: text/html; charset=Shift_JIS');にしてみたら、もしかしたら動くかもね。
0351nobodyさん
2005/08/14(日) 22:31:27ID:???>>350
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
もやってみましたが、同様の結果でした。
どうもXSLTだけでの解決は難しそうなので
PHPでやってみます。
変更できたらまたご報告します。
(ちょちょっとPHPのXMLパーサ関数でやってみましたが、できそうです。)
0352344
2005/08/17(水) 20:33:45ID:???わざわざ携帯から長いレスをサンクス
俺のレスの前が3ヶ月前だったので回答は期待できないと思ってスレみてなかったよorz
結局質問してから別の場所で答えを見つけたんだけど、
XSL で XPATH 書いても XSL で定義した既定のネームスペースは XPath には適用されないってことなんだよな。
なんでそんな変な仕様なのか理解に苦しむけど。
てことで、 XML の既定のネームスペースを XSL 側では Prefix 付きで定義することで解決しました。
0353nobodyさん
2005/08/18(木) 19:39:40ID:???もっと名前空間のよさを感じてちょうだい!!!!
そして私は
0354344
2005/08/18(木) 22:02:59ID:???あたりを見て >352 のような結論に至ったわけだが、なんか勘違いがある?と思って
改めてリンク先のスレッドを読んでると
ttp://www2.xml.gr.jp/log.html?MLID=xmlusers&N=5842
に
> さらに、XPath式中のQNameを展開するときには、以下のルールが成り立ちます。
> 2. プリフィックスがついていない場合、ネームスペースURIはnullになる。
とあるな。確かに勘違いしてたかも。
> そして私は
続きが気になるよ(´・ω・`)
0355初心者
2005/09/04(日) 03:53:09ID:???AWSでxsltを始めたばかりです。
<img>
<xsl:attribute name="src">
<xsl:value-of select="aws:MediumImage/aws:URL" />
</xsl:attribute>
<xsl:attribute name="width">
<xsl:value-of select="aws:MediumImage/aws:Width" />
</xsl:attribute>
<xsl:attribute name="height">
<xsl:value-of select="aws:MediumImage/aws:Height" />
</xsl:attribute>
<xsl:attribute name="alt">
<xsl:value-of select="$amazon_item_name" />
</xsl:attribute>
</img>
とすると、<img src="http://images.amazon.com/images/P/xxx.jpg" width="xxx" height="xxx" alt="xxx">になってしまい、閉じタグをいれることができません。
xsltでどう指定すると閉じタグをいれることができるのでしょうか?
0356nobodyさん
2005/09/04(日) 10:59:31ID:???をxsl:stylesheetの直下に入れる、かな。
XHTMLでないHTMLとして出力されていると思われ。
0357初心者
2005/09/05(月) 02:29:25ID:???どうもありがとうございます。
おっしゃる通りの方法でできました。
ただ、新しい問題が発生しました。
お付き合いいただけましたら嬉しいです。
xslt で出力される html は単独の html ではなく
ある html ファイルの <body> 内に include させたいと考えています。
今までは <xsl:output method="html" /> としていて、問題はありませんでしたが
<xsl:output method="xml" /> や <xsl:output method="xhtml" /> にすることにより
xslt によって出力される html の1行目には <?xml version="1.0" encoding="UTF-8"?>
が入ってしまうようになってしまいました。
つまり、<body> 内に <?xml version="1.0" encoding="UTF-8"?> が入ってしまいます。
文法的には問題ないようですが、なんだか気持ち悪いです。
xhtml や xml で出力するのではなく、text みたいな形で出力した方が適当でしょうか?
0358初心者
2005/09/05(月) 02:47:17ID:???ググったら見つけました。
<xsl:output method="xml" omit-xml-declaration="yes" /> とすると、XML 宣言をしないようにできるようですが
実際には出力されてしまいます。
なにかおかしいですかね?
0359nobodyさん
2005/09/10(土) 01:33:29ID:???alt="{$変数名}"
とは書かないの?
call-templateする予定があるとか??
あと最初以外にXML宣言入るのは文法の問題あるよ。
ただUAが無視してくれているだけだけど。
0360nobodyさん
2005/09/29(木) 03:07:41ID:???どなたかXSLT2.0の話でも…
0361nobodyさん
2005/09/29(木) 11:45:59ID:???http://xsieve.sourceforge.net/
0362nobodyさん
2005/10/01(土) 21:07:44ID:???何故かVersion=2005-09-15だと、StyleにXSLファイル指定してもうまくいきません。
AWSでXSLやるときの条件みたいなものって何かありますか?
0363nobodyさん
2005/10/04(火) 17:41:50ID:otfuFaaW仕様書をみたけど、それらしい機能が見つかりませんでした。
0364nobodyさん
2005/10/04(火) 21:01:50ID:???0365nobodyさん
2005/10/04(火) 21:53:53ID:otfuFaaWありがとう。スタイルシートの取り込みってあったから、てっきりCSSのことだと思ってた。
XSLTファイルじたいがスタイルシートなのね。べんきょうになりますた。
0366nobodyさん
2005/10/15(土) 16:29:33ID:dOz9BDB0DBから取得したデータをXMLに出力し、それをXSLTでXSLに変換かけたいと思ってます。
そこで下記のコードなんですが
<A>
<B key="test1" value="aaa1" />
<B key="test2" value="aaa2" />
</A>
<C>
<D value="" />
</C>
Dのvalueの値にBのvalueの値を入れたいと思ってます。
イメージ的には、/D/@value = /B/key["test"]@value ?? なんですが、/A/B[1]/@valueのように
番号ではなくkeyの名前で参照するにはどうやればよいのでしょうか。
0367サッカー少年大好き
2005/10/15(土) 17:00:04ID:???でいけると思われ。
(child::は省略可、attribute::は@に置換可)
結論を言うと、XPathの勉強をおすすめする。
0368訂正
2005/10/15(土) 17:04:51ID:???strにはkeyの値を入れるんだよ。
0369nobodyさん
2005/10/15(土) 21:29:57ID:???本来なら勉強しなきゃいけないんですが、助かりました。
0370nobodyさん
2005/10/17(月) 19:35:15ID:SiiJse0Yhttp://www.wakkaya.com/test/a.xmlと
http://www.wakkaya.com/test/a.xslです。
まず、
<data><a>あああ2003</a><b>21</b></data>
<data><a>あああ2004</a><b>30</b></data>
<data><a>あああ2005</a><b>14</b></data>
<data><a>いいい2003</a><b>30</b></data>
<data><a>いいい2004</a><b>45</b></data>
<data><a>いいい2005</a><b>80</b></data>
<data><a>ううう2003</a><b>99</b></data>
<data><a>ううう2004</a><b>77</b></data>
<data><a>ううう2005</a><b>46</b></data>
という感じのxmlがあります。
<a>に2005が含まれている箇所だけ抽出し、
<b>の大きい順に並べ替えるようにしてから番号を振るようにします。書くと
<xsl:sort select="b" order="descending" data-type="number" />
<xsl:if test="contains(a, '2005')">
<tr>
<td><xsl:number value="position()" /></td>
<td><xsl:value-of select="a" /></td>
<td><xsl:value-of select="b" /></td>
</tr>
</xsl:if>
という感じです。いざxmlを見てみると番号が1、2、3とならずに
2、4、9となるのです。どうやれば1、2、3と表示されますか?
どなたかご教授下さい。何卒宜しくお願い致します。
0371nobodyさん
2005/10/17(月) 20:58:48ID:???<xsl:for-each select="data[contains(a, '2005')]">
<xsl:sort select="b" order="descending" data-type="number" />
<tr>
<td><xsl:number value="position()" /></td>
<td><xsl:value-of select="a" /></td>
<td><xsl:value-of select="b" /></td>
</tr>
</xsl:for-each>
0373370
2005/10/18(火) 08:05:21ID:???http://www.wakkaya.com/test/a.xmlと
http://www.wakkaya.com/test/a.xslです。
今度は、<b>の中身が空の場合は表示しないようにしたいのです。
<xsl:choose>
<xsl:when test="b=''">
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="data[contains(a,'2005')]">
<xsl:sort select="a" order="acsending" data-type="text" />
<tr>
<td><xsl:number value="position()" /></td>
<td><xsl:value-of select="a" /></td>
<td><xsl:value-of select="b" /></td>
</tr>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
と、<a>順で並べ替えるようにしたのですが、しっかり空の要素も表示されてしまいます。
ちなみに、xsl:for-each 以下に xsl:choose を入れると、例のごとく番号が2から始まります。
対処法をお教え頂けませんでしょうか?本当に度々ですみません。
0374nobodyさん
2005/10/18(火) 12:21:24ID:???とか書くと相手にされない件
0375nobodyさん
2005/10/18(火) 16:18:41ID:EpeUQJeg「x=x+1」のような
インクリメントってできないの?
0378nobodyさん
2005/10/19(水) 15:52:23ID:HblKNOzDすみません。気を付けます。
>>376
アドバイスあるが等御座います。
もすこしfor-each やifやwhen勉強して出直してきます・・・
0379nobodyさん
2005/10/19(水) 16:32:01ID:???0380nobodyさん
2005/10/20(木) 13:50:48ID:???仰せの通りXPathについていろいろ調べたことろ、
<xsl:for-each select="data[contains(name, '3') and uriage > 0 ]">
とするだけでNaNをはじくことが出来ました。
なんか凄い初歩的で恥ずかしい質問であるにもかかわらずお答え下さった皆様方、
この度は誠に有り難う御座います。
これを機会にXPathを精進・・
0382nobodyさん
2005/10/22(土) 20:01:27ID:???0383nobodyさん
2005/10/23(日) 01:17:07ID:???0385nobodyさん
2005/10/24(月) 09:48:44ID:3//Wc9qN0386nobodyさん
2005/11/11(金) 13:59:20ID:nEB8ZVf7http://www.atmarkit.co.jp/fxml/tecs/006stylelink/06.html
を試してみようと思いましたが
http://sb.xrea.com/showthread.php?t=5996&highlight=xsl
どう見ても無理です。
本当にありがとうございました
0388nobodyさん
2005/11/11(金) 14:10:06ID:???0389nobodyさん
2005/11/11(金) 20:58:02ID:???0390nobodyさん
2005/11/17(木) 02:28:40ID:???早めに勉強しましょう。
0392nobodyさん
2005/11/18(金) 17:50:43ID:???0393nobodyさん
2005/12/13(火) 01:57:44ID:???数ヶ月ぶりに自己レス
/[local-name()="root" and namespace-uri()="http://example.com"]/item1
でどうだろう?
0394nobodyさん
2005/12/14(水) 09:14:43ID:???いや、だから>>345がスタイルシートの中でURIが一緒な
任意のプリフィクスを付けろとアドバイスしてるだろう。
なんでそんな面倒なことするの。しかも間違ってるし。
0396nobodyさん
2005/12/15(木) 20:20:47ID:???XPath式にてdefault namespaceを指定しようとしたら、
nullなnamespaceになるのをならないと勘違いしていた。
とりあえずXPath式内でdefault namespaceのnodesを指定したければ
default namespaceのURIを別のprefixにも指定すればOKだと思う.
(XMLでは一つのURIを複数のprefixに充ててはいけないルールは無い)
まあこんなnullpoな俺だがcandidateなXPath2.0のspecificationをプリントして見てます。
今のところlearnした事柄:
・やっぱり名前空間の仕組みはアレだからdeprecateらしい
・型についての概念が出てくる。XML Schemaの知識が必要。
・XPath2.0はXPath1.0のスーパーセットだお。つまり1.0の式が2.0でも通用するお。
・2.0は少なくともXSLT2.0とXQuery1.0で使用されるお。
・シーケンスっつーのはアイテムたちの順序ある並びだお
・アイテムというのはノードと、リテラルチックな”値”のことだお
もっとセンセーショナルな事実が解ったらまたカキコするお。
でも駄目人間の俺より仕様書を信用するべきだお。
またもや携帯からの書き込みだから妙なことになってるかもしらん。
バイバイ
0397nobodyさん
2006/03/04(土) 02:07:19ID:c1CTCPapXSLT(XPath)で、Textや属性のQNameってどうやって調べれば良いんでしょうか?
例えば、
<ns0:boards xmlns:ns0="http://2ch.net">
<board nick="ns0:webprog"/>
<board nick="ns0:tech"/>
<board nick="ns0:unix"/>
</ns0:boards>
で、
「値が、名前空間が"http://2ch.net"でローカル名が"webprog"の値を持つboard要素」って、
どうやって調べればよいのか…。
全然知らないんですがXPath1.0じゃだめでXPath2.0の●●じゃないと無理とかあるんでしょうか。
0398nobodyさん
2006/03/04(土) 02:08:42ID:???×「値が、…
○「属性値が、…
0400nobodyさん
2006/03/04(土) 09:38:14ID:???詞ね
<xsl:template match="/boards/board[@nick=concat(name(namespace::*[.='http://2ch.net']),':webprog')]">
<xsl:value-of select="@nick"/>
</xsl:template>
0401nobodyさん
2006/03/04(土) 09:45:21ID:???0402nobodyさん
2006/03/04(土) 12:59:39ID:???ありがとうございます。
頂いた答えをヒントにして、苦節1時間、やっと出来ました。
<xsl:template select="/ns0:boards/board/@nick[../namespace::*[local-name(.)=substring-before(string(../@nick),':')] and substring-after(.,':')='webprog']">
<xsl:value-of select="."/>
</xsl:template>
しかし、なんでこんな普通の選択のためにゴリゴリ書くんでしょう…。
>>399が言ってることがまっとうで、
XSLT/XPath/XMLSchema?の仕様の方が逝かれてるのではないか、という気がしてきます…。
0403nobodyさん
2006/03/04(土) 13:01:00ID:c1CTCPapXMLSchemaではQNameという型があります。>>397のnickのように使われます。
よく?使われる例は、
<hoge xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<value xsi:type="xsd:string">123456789</value>
</hoge>
だと、/hoge/value の値は、文字列”123456789”で、
<hoge xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<value xsi:type="xsd:int">123456789</value>
</hoge>
だと、/hoge/value の値は、32bit整数 123456789 で、
<hoge xmlns:tns="http://www.2ch.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<value xsi:type="tns:code">123456789</value>
</hoge>
だと、/hoge/value の値は、名前空間http://www.2ch.netで定義されたcode型の123456789、
なんて事になります。
でも、その直感はあながち間違いでもないように思えるのは、>>402に書いたとおりです。
■ このスレッドは過去ログ倉庫に格納されています