探検


XSL/XSLT

1名無しさん@お腹いっぱい。
垢版 |
01/09/05 10:49ID:dYMWGvtU
語ろう。ていうか教えて。
296nobodyさん
垢版 |
04/06/23 14:51ID:???
>>295
"or"は論理演算子だからここで使っても意味ないよ(T/Fが返ってくる)。

select="created[not(../modified)] | modified"

でどう?
297295
垢版 |
04/06/23 14:59ID:???
>>296
ありがとうございます。出来ました。
298nobodyさん
垢版 |
04/06/25 16:19ID:???
xsl:copy-of で属性値を取得できません。
xsl:value-of なら属性値を取得できました。

-- xml --
<a href="http://example.org/"> example </a>
-- xsl --
<xsl:copy-of select="/a/@href" /> <br />
<xsl:value-of select="/a/@href" /> <br />
-- output --
<br />
http://example.org/ <br />
--

xsl:copy-of を使用して属性値を取得する方法をご存知の方がいらっしゃいましたら、
その方法をお教え下さいませ。
299nobodyさん
垢版 |
04/06/26 05:29ID:???
それだと copy-of でコピーされるのは属性ノードだからそのままでは出力で
きない。どうしてもしたいならこんな感じで、

<xsl:copy-of select="string(/a/@href)"/>

非ノードにしたものを渡せばよい。でも value-of のほうが適切。
300298
垢版 |
04/06/26 21:02ID:???
value-of を使うことに致します。ありがとう
301nobodyさん
垢版 |
04/07/03 03:02ID:???
次のようなXMLデータがあるとき、
name="foo"の前後のitemのname属性値を表示するようなXSLTはどう書けばいいんでしょうか?

<list>
<item name="hoge" />
<item name="foo" />
<item name="bar"/>
</list>
302nobodyさん
垢版 |
04/07/03 04:31ID:???
<xsl:value-of select="item[@name='foo']/preceding-sibling::item[1]/@name"/>
<xsl:value-of select="item[@name='foo']/following-sibling::item[1]/@name"/>
かな。試してないけど。
303301
垢版 |
04/07/04 00:41ID:???
>>301
それで成功しました。
ありがとうございます。
304nobodyさん
垢版 |
04/08/25 17:25ID:ly9L2Z7D
<root>
  <mage>
    <mage>
       <take>
  <toge>
みたいな構造になっているXMLファイルがあって(上では閉じタグ省略)、
いまrootから何階層目にいるのかを知るにはどうしたら良い?
305nobodyさん
垢版 |
04/08/25 18:19ID:???
>>304
count(ancestor::node())
でどうよ?
306nobodyさん
垢版 |
04/09/06 20:13ID:koFx6bH6
天気予報は既存の配信ビジネスを守るためにRSS配信できない
http://neta.ywcafe.net/000339.html

国民の税金で気象データの収集・解析までしておきながら、
気象庁の官僚の天下り先である
・財団法人 気象業務支援センター
・財団法人 日本気象協会
の利権保護の為、未だRSS配信が拒まれているのだ。
将来的に行われるであろう地震予知の情報も、有料で国民に販売するつもりだろうか?
307nobodyさん
垢版 |
04/09/07 09:26ID:???
二重徴税で叩けないのかな。
308nobodyさん
垢版 |
04/09/07 09:29ID:???
>>306
是非はともかくそんなとこのソースを元に騒いでんの?w
309nobodyさん
垢版 |
04/09/07 14:14ID:???
XMLのスレにマルチしまくってるから放置しとけ
310nobodyさん
垢版 |
04/09/07 17:02ID:???
>>307
じゃあまずガソリンスタンドをたたいてくれ。
311nobodyさん
垢版 |
04/09/07 21:05ID:???
気象庁職員必死だな(w
312nobodyさん
垢版 |
04/09/08 11:32ID:???
306,307 は気象庁を、
310 はガソリンを、
308,311 は住民を、
各自、自由に叩いてください。
313 は XSL/XSLT ネタ、よろしく。
313nobodyさん
垢版 |
04/09/09 02:59ID:???
気象庁住民はガソリンで逝ってよし。
314nobodyさん
垢版 |
04/09/09 09:57ID:???
XSL/XSLT/ネタではなく
XSL/XSLTのネタよろしく。
315nobodyさん
垢版 |
04/09/24 05:09:23ID:/pWgzu1/
<a id="a0">
 <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"がほしいです。
共通の親をすべてならなんとかなるのですが、
その中で最初にマッチする親だとさっぱりわかりません。
よろしくおねがいします。
316nobodyさん
垢版 |
04/09/25 10:50:09ID:???
>>315

(descendant::c[. = 'foo0']/ancestor::*[./descendant::c[. = 'bar1']])[last()]/@id
317316
垢版 |
04/09/26 08:08:17ID:???
後で考えたら、えらい無駄な事をしてるな、と。
/descendant::c[self::node() = 'foo0']/ancestor::*[descendant::c = 'foo1'][position() = 1]
これでも、共通且つ最初にマッチする先祖を得られると思う。
318315
垢版 |
04/09/27 04:31:18ID:???
>>316
ありがとうございます。いけそうです。
再帰ばっかり考えてました。

自分のXPath能力の無さに(´・ω・`)ショボーン
319nobodyさん
垢版 |
04/09/28 17:39:48ID:???
質問です。

XSLT で <a href="javascript:foo('bar')">...</a> のようなタグを生成したいのですが、
引用符のエスケープの仕方がよくわかりません。ご存知の方、ご回答をお願いいたします。

現在はこんなコードを書いてます (エラーになります)
<a href="{concat('javascript:foo(', ''', @bar, ''', ')')}">
320319
垢版 |
04/09/28 17:41:28ID:???
>>319
化けてしまいましたが、''' のところは '&apos;' です。
321319
垢版 |
04/09/28 18:03:41ID:???
>>319
<xsl:attibute> を使えばいいのですね。自己解決しますた。お騒がせしました。
322nobodyさん
垢版 |
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(&apos;bar&apos;)</xsl:attribute>
<xsl:apply-templates />
</xsl:element>

アンカー・テキスト不変なら、こっち
<xsl:element name="a">
<xsl:attribute name="href">javascript:foo(&apos;bar&apos;)</xsl:attribute>
アンカー・テキスト
</xsl:element>
323nobodyさん
垢版 |
04/10/11 13:28:18ID:???
XSLT Standard Library
ttp://xsltsl.sourceforge.net/

exsltみたいなライブラリ集だけど、こっちの方が実用的?
324nobodyさん
垢版 |
04/10/14 23:53:23ID:DOJgSO2G
XML SchemaからXSLTの雛形というかスケルトンというか
土台を出力してくれるようなツールって無いでしょうか?
フルスクラッチで作るの、面倒じゃないですか?
325nobodyさん
垢版 |
04/10/15 00:48:57ID:???
>>324
スレ違いか
http://pc5.2ch.net/test/read.cgi/hp/1057198990/
326nobodyさん
垢版 |
04/12/06 00:30:36ID:???
data1.xmlというファイルがあって中にxslファイルの参照先も書いてあるとします。
<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という値を渡す方法ってあるのでしょうか?
327nobodyさん
垢版 |
04/12/06 15:30:17ID:???
何言いたいんだかようわからん
328nobodyさん
垢版 |
04/12/06 15:34:45ID:jrlDRA4f
URLを打ち込むときに
data1.xml?id=0と打ち込み、ID=0の商品に関する情報だけを
表示したいんです。
URLで打ち込んだデータをXSL内の変数に取り込みたいのです。
現在だと、hrefつかってもIDの数だけxmlファイルを作成しないと
いけなくなってしまうんです。
329nobodyさん
垢版 |
04/12/23 23:41:54ID:???
>>328
今更ながら、xsltで全て作成してjavascriptでlocation.queryから引数受け取ってwindowのロード時に違うノードサクージョ
330nobodyさん
垢版 |
05/01/08 15:33:14ID:???
すいません質問があります。
MSXSLを用いて変換を行おうとしているのですが
コマンドを打ち込んだときに

必要な属性'{http://www.w3.org/1999/XSL/Transform}version' が見つかりません

という変なエラーメッセージが出てしまいます。これはどうすればいいんでしょうか?
331nobodyさん
垢版 |
05/01/08 17:10:58ID:???
330ですが
解決しちゃいました どうもです
332nobodyさん
垢版 |
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を教えていただきたいのです。

よろしくお願いします。
333nobodyさん
垢版 |
05/01/10 19:48:07ID:???
アホか。マルチポストに返答するわけ無いだろ。
334nobodyさん
垢版 |
05/01/22 19:16:33ID:WsL3wQoU
<xsl:stylesheet xmlns:xsl="http://www.w3.org/(ry xmlns:aws="http://abc.com/"
exclude-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">
335334
垢版 |
05/01/22 19:17:52ID:WsL3wQoU
ああっ、途中で送ってしまった… orz

>>334のようにやると下のテンプレートの中身へ行かない?ようなのですが
どこに問題があるのでしょう?
336nobodyさん
垢版 |
05/01/24 03:30:34ID:???
>>332
もう解決してるのかもしれんが
//ele[not(@id=following-sibling::node()/@id)]/@id
とかでどうすか?
337nobodyさん
垢版 |
05/01/30 14:52:43ID:0RSaGusl
xmlをエクセルから作ってるんですが、日付が1900年形式でだされてしまいます。
それを表示する際に、dd-mmm-yyのフォーマットで表示したいんですが、どうすればよいでしょうか?

338nobodyさん
垢版 |
05/01/30 20:37:49ID:0RSaGusl
http://exslt.orgのテンプレート使ってやってみたんですが
すごい遅くなりました。前もってデータを変換してXMLをつくった
方が良さそうです...
339nobodyさん
垢版 |
2005/04/09(土) 23:05:41ID:0FjmIeSR
ノード名じゃなくて値がQNameのときに、それが特定のNSに属してるかってどうやって判断できる?

<先祖のどこか 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/なのかわからん。

ずうっと名前空間宣言を全部フォローして自分で覚えとくしかないのか?
340nobodyさん
垢版 |
2005/04/21(木) 17:08:59ID:???
XMLもXSLもXSLTも何も知りません。


Aに1・2という情報?属性?を付けて
Bに2・3を付けて
Cに1を付けて


1が付いているのはA・C
2が付いているのはA・B
3が付いているのはB

というように表示するにはどうすればいいでしょう
341nobodyさん
垢版 |
2005/04/21(木) 18:15:48ID:???
>>340
> XMLもXSLもXSLTも何も知りません。
勉強しろ。アフォか。
342nobodyさん
垢版 |
2005/04/21(木) 22:02:56ID:???
System.out.println("1が付いているのはA・C");
System.out.println("2が付いているのはA・B");
System.out.println("3が付いているのはB");
343nobodyさん
垢版 |
2005/04/21(木) 23:30:22ID:???
いや>>340的にはこっちのほうがわかりやすかろう。

MsgBox "1が付いているのはA・C", vbInformation
MsgBox "2が付いているのはA・B", vbInformation
MsgBox "3が付いているのはB", vbInformation
344nobodyさん
垢版 |
2005/07/29(金) 15:21:12ID:???
デフォルトの名前空間が指定されている時、プレフィックスの無い Element は XPath でどう表現すればいいの?

<?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 じゃうまくいかないみたい。
345nobodyさん
垢版 |
2005/08/04(木) 10:02:40ID:???
スタイルシート側(desin.xslのことか?)の名前空間の設定はどうなってる?
携帯だからアドバイスしづらいな…。

まあ多分スタイルシートではxmlns="XHTMLのURI"とかやってると思う。
(これ自体は問題ないし下手にprefixつけるとUAが出力結果をXHTMLとして認識できない。)
でもこの場合あんたのスタイルシート内のXpath式内でitem1を指定しても
それはXHTMLでのitem1要素を指定していることになっている。
もちろんあんたはそんなもの扱った覚えは無いだろうしXHTMLにもそんな要素はない。
正しく処理させるには名前空間について勉強してくれ。
ソースXML文書のprefix無い方の名前空間のURIを$aとおくと、
スタイルシート側にxmlns:omanko="$a"を書き加えXPathではomanko:item1と
指定すればいい。xsl:の部分とかも不都合があればばんばん書き換えればいいから。

携帯からだから妙ちくりんな書き方になったが頑張ってくれ
んじゃ
346nobodyさん
垢版 |
2005/08/14(日) 13:37:07ID:XDX8Ip5H
質問です。

UTF8で配信されるXMLをSHIFT_JISでHTML化したい
場合は

@JAVAのXMLパーサーとか使う
AperlとかphpでSOAP
なんていう方法しかありませんか?

現在はXSLTで簡単にスタイルシートあててやってますが
SHIFT_JISで出力するのは無理ぽ。。です。
どうにか方法はありますのでしょうか。。

携帯サイトを運営しているのですが
UTF8じゃ文字ばけするぞゴラァ!という
クレームが多くて困ってます。
347nobodyさん
垢版 |
2005/08/14(日) 15:10:24ID:???
>>346
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>
348nobodyさん
垢版 |
2005/08/14(日) 18:40:08ID:???
>>347

ご丁寧に有難う御座います。
<xsl:output method="html" encoding="Shift_JIS" />
なんてタグがあるなんて知りませんでした。。orz

早速、その方法を試してみました。

結果報告

@PCブラウザで見る(IE)
ホワイトアウトしてしまいました。
右クリでエンコード指定でシフトジスにすると表示されました。

A元からUTF8対応携帯で見る
文字化けしてしまいました。

Bシフトジスしか対応していない携帯で見る
うまく表示されるようになりました。

つまり 今まで見えてた@Aは見えなくなりましたが
Bは見えるようになりました。

恐らくブラウザ側ではUTF8として認識しているためだと
思います。

素直にphpのxmlパーサーとかでやりつかね・・・
(php5入ってないので・・・SOAP無理ぽ)

349nobodyさん
垢版 |
2005/08/14(日) 18:50:00ID:???
>>348
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
を挿入してみたらどうですかね。
350nobodyさん
垢版 |
2005/08/14(日) 19:36:51ID:???
>>348
phpでサーバサイドでのXSLT変換か。取りあえず、UTF-8からShift_JISへの変換はできたみたいだね。

phpの話になってスマンが、もしかして、header('Content-Type: text/html; charset=UTF-8');とかなってる?
header('Content-Type: text/html; charset=Shift_JIS');にしてみたら、もしかしたら動くかもね。
351nobodyさん
垢版 |
2005/08/14(日) 22:31:27ID:???
>>349
>>350

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
もやってみましたが、同様の結果でした。

どうもXSLTだけでの解決は難しそうなので
PHPでやってみます。

変更できたらまたご報告します。

(ちょちょっとPHPのXMLパーサ関数でやってみましたが、できそうです。)
352344
垢版 |
2005/08/17(水) 20:33:45ID:???
>345
わざわざ携帯から長いレスをサンクス
俺のレスの前が3ヶ月前だったので回答は期待できないと思ってスレみてなかったよorz

結局質問してから別の場所で答えを見つけたんだけど、
XSL で XPATH 書いても XSL で定義した既定のネームスペースは XPath には適用されないってことなんだよな。
なんでそんな変な仕様なのか理解に苦しむけど。
てことで、 XML の既定のネームスペースを XSL 側では Prefix 付きで定義することで解決しました。
353nobodyさん
垢版 |
2005/08/18(木) 19:39:40ID:???
ちょっとYOUはまだ勘違いしてるかも…。そこらへんはXSLTはまともな仕様でつよ。
もっと名前空間のよさを感じてちょうだい!!!!

そして私は
354344
垢版 |
2005/08/18(木) 22:02:59ID:???
ttp://www2.xml.gr.jp/log.html?MLID=xmlusers&N=5831
あたりを見て >352 のような結論に至ったわけだが、なんか勘違いがある?と思って
改めてリンク先のスレッドを読んでると
ttp://www2.xml.gr.jp/log.html?MLID=xmlusers&N=5842

> さらに、XPath式中のQNameを展開するときには、以下のルールが成り立ちます。
> 2. プリフィックスがついていない場合、ネームスペースURIはnullになる。
とあるな。確かに勘違いしてたかも。

> そして私は
続きが気になるよ(´・ω・`)
355初心者
垢版 |
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でどう指定すると閉じタグをいれることができるのでしょうか?
356nobodyさん
垢版 |
2005/09/04(日) 10:59:31ID:???
<xsl:output method="xml"/>
をxsl:stylesheetの直下に入れる、かな。
XHTMLでないHTMLとして出力されていると思われ。
357初心者
垢版 |
2005/09/05(月) 02:29:25ID:???
>>356
どうもありがとうございます。
おっしゃる通りの方法でできました。

ただ、新しい問題が発生しました。
お付き合いいただけましたら嬉しいです。

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 みたいな形で出力した方が適当でしょうか?
358初心者
垢版 |
2005/09/05(月) 02:47:17ID:???
ゴメンナサイ。
ググったら見つけました。

<xsl:output method="xml" omit-xml-declaration="yes" /> とすると、XML 宣言をしないようにできるようですが
実際には出力されてしまいます。
なにかおかしいですかね?
359nobodyさん
垢版 |
2005/09/10(土) 01:33:29ID:???
どっちでもいいけど
alt="{$変数名}"
とは書かないの?
call-templateする予定があるとか??
あと最初以外にXML宣言入るのは文法の問題あるよ。
ただUAが無視してくれているだけだけど。
360nobodyさん
垢版 |
2005/09/29(木) 03:07:41ID:???
age

どなたかXSLT2.0の話でも…
361nobodyさん
垢版 |
2005/09/29(木) 11:45:59ID:???
XSLTとDSSSLのいいとこどりみたいなXSieve
http://xsieve.sourceforge.net/
362nobodyさん
垢版 |
2005/10/01(土) 21:07:44ID:???
今アマゾンウェブサービスでXSLファイルを書いてるのですが
何故かVersion=2005-09-15だと、StyleにXSLファイル指定してもうまくいきません。
AWSでXSLやるときの条件みたいなものって何かありますか?
363nobodyさん
垢版 |
2005/10/04(火) 17:41:50ID:otfuFaaW
XSLTを書いていると、かなり長くなってしまったんですが、XSLTファイルをモジュールや関数みたいに分割することはできますか。
仕様書をみたけど、それらしい機能が見つかりませんでした。
364nobodyさん
垢版 |
2005/10/04(火) 21:01:50ID:???
xsl:include, xsl:import
365nobodyさん
垢版 |
2005/10/04(火) 21:53:53ID:otfuFaaW
>>364
ありがとう。スタイルシートの取り込みってあったから、てっきりCSSのことだと思ってた。
XSLTファイルじたいがスタイルシートなのね。べんきょうになりますた。
366nobodyさん
垢版 |
2005/10/15(土) 16:29:33ID:dOz9BDB0
XSLについて質問です。
DBから取得したデータを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の名前で参照するにはどうやればよいのでしょうか。

2005/10/15(土) 17:00:04ID:???
/child::A/child::*[attribute::key='str']/attribute::value

でいけると思われ。
(child::は省略可、attribute::は@に置換可)

結論を言うと、XPathの勉強をおすすめする。
368訂正
垢版 |
2005/10/15(土) 17:04:51ID:???
child::*はchild::Bにした方がいいかもしんね。
strにはkeyの値を入れるんだよ。
369nobodyさん
垢版 |
2005/10/15(土) 21:29:57ID:???
出来ましたありがとうございます。
本来なら勉強しなきゃいけないんですが、助かりました。
370nobodyさん
垢版 |
2005/10/17(月) 19:35:15ID:SiiJse0Y
ソースは
http://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と表示されますか?
どなたかご教授下さい。何卒宜しくお願い致します。
371nobodyさん
垢版 |
2005/10/17(月) 20:58:48ID:???
positionはfor-eachでselectした時点で決まるので、selectの時点で2005を含むかどうか調べる。

<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>
372370
垢版 |
2005/10/17(月) 23:18:37ID:???
>>371
うまくいきました!
本当に助かりました。有り難う御座います。
373370
垢版 |
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から始まります。
対処法をお教え頂けませんでしょうか?本当に度々ですみません。
374nobodyさん
垢版 |
2005/10/18(火) 12:21:24ID:???
>連続質問ですみません。ソースは引き続き
とか書くと相手にされない件
375nobodyさん
垢版 |
2005/10/18(火) 16:18:41ID:EpeUQJeg
XSLTで変数使えるのは分かったんだけど、

「x=x+1」のような

インクリメントってできないの?
376nobodyさん
垢版 |
2005/10/18(火) 16:58:00ID:???
>>373
371と同じ。
377nobodyさん
垢版 |
2005/10/18(火) 23:23:32ID:???
>>375
マルチポストですね?
378nobodyさん
垢版 |
2005/10/19(水) 15:52:23ID:HblKNOzD
>>374
すみません。気を付けます。

>>376
アドバイスあるが等御座います。
もすこしfor-each やifやwhen勉強して出直してきます・・・
379nobodyさん
垢版 |
2005/10/19(水) 16:32:01ID:???
そっちよりもXPathを覚えるほうがいいかと。
380nobodyさん
垢版 |
2005/10/20(木) 13:50:48ID:???
>>379
仰せの通りXPathについていろいろ調べたことろ、

<xsl:for-each select="data[contains(name, '3') and uriage > 0 ]">

とするだけでNaNをはじくことが出来ました。
なんか凄い初歩的で恥ずかしい質問であるにもかかわらずお答え下さった皆様方、
この度は誠に有り難う御座います。

これを機会にXPathを精進・・
381nobodyさん
垢版 |
2005/10/22(土) 08:44:56ID:???
>>380
ていうかお前にはxmlはおろかwebそのもののセンスも無いからやめとけ
382nobodyさん
垢版 |
2005/10/22(土) 20:01:27ID:???
遅すぎるお前のレスもセンスがねーよw 2chやめろな。
383nobodyさん
垢版 |
2005/10/23(日) 01:17:07ID:???
ん?逆切れかマケウチ君
384nobodyさん
垢版 |
2005/10/23(日) 20:44:14ID:???
>>380
低脳が。センスのないHPもさっさとたたみな
キモイんだよ、デザインが
385nobodyさん
垢版 |
2005/10/24(月) 09:48:44ID:3//Wc9qN
HPって「たたむ」って表現するんだ・・・初めてしったよ
386nobodyさん
垢版 |
2005/11/11(金) 13:59:20ID:nEB8ZVf7
xreaでサーバーサイド変換て出来るんですか?

http://www.atmarkit.co.jp/fxml/tecs/006stylelink/06.html

を試してみようと思いましたが

http://sb.xrea.com/showthread.php?t=5996&highlight=xsl

どう見ても無理です。

本当にありがとうございました
387385
垢版 |
2005/11/11(金) 14:02:26ID:???
>>386
と思ったらもうインストローリングされてました。
私の記述ミスです。

本年もよろしくご指導のほどお願いいたします
388nobodyさん
垢版 |
2005/11/11(金) 14:10:06ID:???
インストローリング の検索結果のうち 日本語のページ 約 286 件
389nobodyさん
垢版 |
2005/11/11(金) 20:58:02ID:???
ローリングストーンズのヴォーカル無い曲。
390nobodyさん
垢版 |
2005/11/17(木) 02:28:40ID:???
バージョン2が勧告候補になりますた。
早めに勉強しましょう。
391nobodyさん
垢版 |
2005/11/17(木) 08:43:17ID:???
>>390
新機能とか変更点を簡潔に説明したサイト教えてけれ。
392nobodyさん
垢版 |
2005/11/18(金) 17:50:43ID:???
http://pcweb.mycom.co.jp/news/2005/11/04/034.html
393nobodyさん
垢版 |
2005/12/13(火) 01:57:44ID:???
>>344
数ヶ月ぶりに自己レス

/[local-name()="root" and namespace-uri()="http://example.com"]/item1

でどうだろう?
394nobodyさん
垢版 |
2005/12/14(水) 09:14:43ID:???
>>393
いや、だから>>345がスタイルシートの中でURIが一緒な
任意のプリフィクスを付けろとアドバイスしてるだろう。
なんでそんな面倒なことするの。しかも間違ってるし。
395nobodyさん
垢版 |
2005/12/14(水) 11:59:03ID:???
>>393
まず名前空間から勉強し直せ、ゴラァァ!!
396nobodyさん
垢版 |
2005/12/15(木) 20:20:47ID:???
>>344を書いたの俺だけど間違っているかもしらん。すまん。
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で使用されるお。
・シーケンスっつーのはアイテムたちの順序ある並びだお
・アイテムというのはノードと、リテラルチックな”値”のことだお

もっとセンセーショナルな事実が解ったらまたカキコするお。
でも駄目人間の俺より仕様書を信用するべきだお。
またもや携帯からの書き込みだから妙なことになってるかもしらん。
バイバイ
レスを投稿する


ニューススポーツなんでも実況