XSL/XSLT (558レス)
XSL/XSLT http://medaka.5ch.io/test/read.cgi/php/999654569/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
92: nobodyさん [] 02/06/26 15:12 ID:kyxI2iEY <xsl:value-of select="preceding-sibling::foo[1]/a"/> とかじゃだめなの。 というかもう少し具体的に。 http://medaka.5ch.io/test/read.cgi/php/999654569/92
93: nobodyさん [] 02/06/26 15:34 ID:6FYKwyrE 173 :参加するカモさん :02/03/12 09:46 みんなメルマガ読んでる? あれ読むとひろゆきの性格よくわかるよ すっごい陰湿。 根暗。 正直、引くよ。2chの管理人って、こういう奴なのかって。 176:参加するカモさん :02/03/12 11:18 ひろゆきの裁判の報告の仕方はよくわかったけど、たまには相手側の言い分も聞いてみたいね まったく違う状況だったりしてw 177:参加するカモさん :02/03/12 11:42 ひろゆきさんっては自分の都合の良いことしか報告しないし、都合が悪くなると 報告しなくなっちゃうんだよね、、 それにしてもひろゆきさんてば見事に陰湿な文章書くなあ。。 http://medaka.5ch.io/test/read.cgi/php/999654569/93
94: nobodyさん [] 02/06/26 15:51 ID:GX1WMLoK >>92 うまく質問できていないみたいですいません。 <doc> <foo> <a>あ</a> <b>111<b> </foo> <foo> <a>あ</a> <b>123<b> </foo> <foo> <a>い</a> <b>324<b> </foo> ・ ・ ・ </doc> というようなXMLをXSLでHTML変換する際に foo/aの値でfooをソートして出力します。 その際aの値が「あ」から「い」に変わる時だけ 例えば<hr>を挿入したいと思っています。 使用しているのはIE6です。 ちょっとまだ良く分かってないところが多いので うまく説明できてないかもしれませんが。 先ほど教えていただいた <xsl:value-of select="preceding-sibling::foo[1]/a"/> はエラーになってしまいます。(エラー自体が文字化け) 長くなってすいません。 http://medaka.5ch.io/test/read.cgi/php/999654569/94
95: 92 [] 02/06/26 18:05 ID:vhsxGiH5 こうかな、、 <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:key name="group" match="doc/foo" use="a" /> <xsl:template match="/"> <html><body><xsl:apply-templates/></body></html> </xsl:template> <xsl:template match="doc"> <xsl:for-each select="foo[count(. | key('group', a)[1]) = 1]"> <xsl:sort select="a" data-type="text" order="ascending"/> <xsl:for-each select="key('group', a)"> <xsl:value-of select="a" /> <xsl:value-of select="b" /> <br /> </xsl:for-each> <hr/> </xsl:for-each> </xsl:template> </xsl:stylesheet> http://medaka.5ch.io/test/read.cgi/php/999654569/95
96: 94 [sage] 02/06/26 19:29 ID:??? アドバイスありがとうございます。 そのままコピペしてテストしてみましたが、 foo[count(. | key('group', a)[1]) = 1] でエラーがでてしまいました。 <xsl:for-each select="foo"> だとkey()で取得したノードリストが、複数でてしまいますし。 xsl:keyとkey関数を知らなかったので勉強になりました。 ちょっとこのアドバイスを元に考えてみます。 ほんとにありがとうございます! http://medaka.5ch.io/test/read.cgi/php/999654569/96
97: 結局さぁ [] 02/06/27 00:28 ID:kFFjIjuv XSLTってXSLの鬼っ子でしょ? とっとと改名しる! http://medaka.5ch.io/test/read.cgi/php/999654569/97
98: nobodyさん [sage] 02/07/03 10:46 ID:??? なんだか難しそうだな http://medaka.5ch.io/test/read.cgi/php/999654569/98
99: nobodyさん [] 02/07/03 19:07 ID:P21eikik Cocoon2でXSPを使ってHTMLを出力するとなぜか文字化けしちゃう。 XSPの出力エンコーディング設定ってどこですればいいんでしょうか? http://medaka.5ch.io/test/read.cgi/php/999654569/99
100: Cocoon2 [] 02/07/03 19:07 ID:P21eikik Cocoon2でXSPを使ってHTMLを出力するとなぜか文字化けしちゃう。 XSPの出力エンコーディング設定ってどこですればいいんでしょうか? http://medaka.5ch.io/test/read.cgi/php/999654569/100
101: nobodyさん [] 02/07/04 23:36 ID:QxzpOV1b あるxml文書をコピーする過程で、決まった要素にだけtemplateを適用したいのですが どーにもこーにもうまくいきません. <xsl:template match="@*|node()" priority="2"> <xsl:copy> <xsl:apply-templates select="@*|node()" /> </xsl:copy> </xsl:template> としておいて、例えば要素fooだけはそのままコピーするのではなく <xsl:template match="foo" priority="1"> <xsl:text>foo</xsl:text> </xsl:template> このtemplateが適用されて欲しいのですが、priority属性が効いてくれないみたいです。 というか根本的に考え方が違うのかもしれません。 最初のtemplate中で<xsl:when test="name()='foo'">を使って分岐させれば うまく(意図通りに)いくのですが、どうもスマートでないような気がします。 濃ゆいスレにそぐわない質問かもしれませんが、 よい方法があれば教えてください。 あ、環境はxalan+jdk1.3.0です。 http://medaka.5ch.io/test/read.cgi/php/999654569/101
102: nobodyさん [sage] 02/07/05 01:35 ID:??? >>100 ここ見れ↓ http://www.emergence.jp/mail-archive/ci/index.cgi?mss:54:200205:dmoeikbhogokbpdjofji http://medaka.5ch.io/test/read.cgi/php/999654569/102
103: Cocoon2 [] 02/07/05 10:46 ID:o63MT+vE >>102 まじで感謝! http://medaka.5ch.io/test/read.cgi/php/999654569/103
104: Spm [] 02/07/06 00:35 ID:zVcgsDeC >>101 そりゃあ、priority属性の値の高いほうが優先してマッチしますから、 その例の下のテンプレートは適用されないに決まっているのですけど: >どーにもこーにもうまくいきません とのことですので、もちろん最初は、priority属性をつけないで 試しては見たのでしょう? 下のテンプレートの方が規則からいって優先度が高いのは自明ですし…… xalanてそんなものですか。いやXTから乗り換えようと思っていたので。 http://medaka.5ch.io/test/read.cgi/php/999654569/104
105: 101 [] 02/07/06 02:17 ID:vHzD1DJG >>104 すいません,書いた後に気付きました... priority の値を逆にしてもやはり意図通りになりません. もちろん,仰るとおり,より限定されているfoo要素の方が 優先順位が高いのは自明なのですが,苦肉の策で試してみました. <xsl:template match="*" prioriry="0"> と <xsl:template match="*" prioriry="1"> では 後者が確実に適用さますが,match の内容が異なるとダメみたいですね... ちなみにXTでも試してみたのですが,xalanと挙動は同じでした. むぅ. http://medaka.5ch.io/test/read.cgi/php/999654569/105
106: 101 [sage] 02/07/06 02:20 ID:??? s/prioriry/priority/g です http://medaka.5ch.io/test/read.cgi/php/999654569/106
107: Spm [] 02/07/06 20:49 ID:zVcgsDeC >>106 当方のXTはきちんとfoo要素だけfooというテキストノードにしてくれてます。 priority属性もみてくれてますし。 これはxalanのせいじゃないかもしれないですね。 考えられるのは、qname(qualified name)が間違っていることくらいでしょうか。 マッチすらしてないって事です。 ソース文書のfoo要素に名前空間ついてませんか? ルート要素にデフォルトの名前空間(xmlns="uri")つけてませんか? 名前空間を除いたものを返すからname()関数による分岐はうまくいくのでしょう。 これしか考えられないのですが、違ってたらすみません。 http://medaka.5ch.io/test/read.cgi/php/999654569/107
108: nobodyさん [] 02/07/07 00:44 ID:wYb8dbIP >>107 >ソース文書のfoo要素に名前空間ついてませんか? >ルート要素にデフォルトの名前空間(xmlns="uri")つけてませんか? う,ビンゴです... デフォルトの名前空間指定のないxml文書なら xalan でもうまくいきました. ちなみに,デフォルトの名前空間がある場合にマッチさせる手段はあるのでしょうか? match=":foo" なんて安直な方法じゃダメでした(恥) # 「デフォルトの名前空間に関する問題は XSLT 2.0 で解決される」 # と聞いたことがあります. http://medaka.5ch.io/test/read.cgi/php/999654569/108
109: Spm [] 02/07/07 03:49 ID:ZDF4GXlm ソースファイルが (一般的にデフォルト名前空間が使われる) XHTMLだったとすれば: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xht="http://www.w3.org/1999/xhtml" > と、名前空間接頭辞を定義して、 NodeTestでNameTestを使う際、その接頭辞をくっつけます。 <xsl:template match="child::xht:h1"> リテラルなど </xsl:template> これはカレントノードがh1要素だった場合にマッチするでしょう。 # default-xpath-namespace属性っていうものらしいですね。 # http://www.w3.org/TR/xslt20/#unprefixed-qnames より http://medaka.5ch.io/test/read.cgi/php/999654569/109
110: 108 [] 02/07/07 16:47 ID:wYb8dbIP >>109 もう目からウロコです. ばっちりです,助かりました. ありがとうございました. http://medaka.5ch.io/test/read.cgi/php/999654569/110
111: nobodyさん [] 02/08/11 23:48 ID:77b+zq0z XSLTは変数の値変更できなくて不便でしょうがないので、 もう使用しないことにした。 http://medaka.5ch.io/test/read.cgi/php/999654569/111
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 447 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.011s