XSL/XSLT (558レス)
XSL/XSLT http://medaka.5ch.io/test/read.cgi/php/999654569/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
263: nobodyさん [sage] 04/03/29 13:14 ID:??? 続き 261 :nobodyさん :sage :04/03/26 13:27 ID:??? >>260 で、できた!ありがとう! でも、なんでこうなるの? XML側にネームスペースがなかったり、名前付けされてたらマッチして、 デフォルトネームスペースがあるとマッチしない理屈がわかんない。 仕様?バグ?ポインタだけでも教えてもらえるとありがたい。 あと、>>260さんは何で知ってるの?(まさか、これFAQ?) http://medaka.5ch.io/test/read.cgi/php/999654569/263
264: nobodyさん [sage] 04/03/29 13:20 ID:??? 以上削除前の263でした。 262 :260 :sage :04/03/26 14:48 ID:??? >>260 の訂正 >xmlns:h=".." は xmlns=".." にしておいて >match="/html" あるいは match="html" などでもいいだろうけど。 >>261 test.xsl で xmlns:h="http://www.w3.org/1999/xhtml" が無い場合、 match="html" でマッチするのは 名前空間無し + "html" という要素だと思う。 で、XHTML のほうは <html xmlns="http://www.w3.org/1999/xhtml"> ... </html> なってたら、html 要素は内部的には 名前空間 "http://www.w3.org/1999/xhtml" + "html" になってる。 名前空間無し + "html" と 名前空間 "http://www.w3.org/1999/xhtml" + "html" は違ってる。なのでマッチしない。 そこで、>>260 に書いたみたく、XSLT の側でマッチさせる対象を後者の ような名前空間 + "html" なものになるよう指定しなきゃいけない。 <html xmlns:xhtml="http://www.w3.org/1999/xhtml"/> と書いた場合は、<html の html は「名前空間無し + "html"」になる。 プリフィックスで xhtml に "http://www.w3.org/1999/xhtml" を割りあててる から、これはデフォルトプリフィックス使ってる <html そのものには影響しない。 http://medaka.5ch.io/test/read.cgi/php/999654569/264
265: ”削除”後の260 [sage] 04/03/29 18:58 ID:??? (´・ω・`) http://medaka.5ch.io/test/read.cgi/php/999654569/265
266: nobodyさん [] 04/04/02 00:28 ID:I+SOWEa+ ・foo.xml <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="foo.xsl"?> <body> <ruby><rb>This</rb><rt>ディス</rt></ruby> <ruby><rb>is</rb><rt>イズ</rt></ruby> <ruby><rb>a</rb><rt>ア</rt></ruby> <ruby><rb>pen</rb><rt>ペン</rt></ruby>! </body> ・foo.xml <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.or/Profiles/XHTML-transitional"> <xsl:output indent="yes" method="html"/><xsl:template match="/"> <html><body> <xsl:for-each select="body"> <xsl:for-each select="ruby"> <xsl:value-of select="rb" /> </xsl:for-each> </xsl:for-each> </body></html> </xsl:template> </xsl:stylesheet> で、 <html xmlns="http://www.w3.or/Profiles/XHTML-transitional"> <body>This is a pen!</body></html> と出力させたいんだけど、 <html xmlns="http://www.w3.or/Profiles/XHTML-transitional"> <body>Thisisapen</body></html> 実際にはこう。どなたか知恵をお貸しください。おながいします。 http://medaka.5ch.io/test/read.cgi/php/999654569/266
267: nobodyさん [sage] 04/04/02 03:16 ID:??? '!'あたりを見るとXSLを理解してないような。 <xsl:template match="/"> <html><body> <xsl:for-each select="(body|.//rb)/text()"> <xsl:choose> <xsl:when test=".='?'"> <xsl:text> </xsl:text> </xsl:when> <xsl:otherwise> <xsl:value-of select="."/> </xsl:otherwise> </xsl:choose> </xsl:for-each> </body></html> </xsl:template> テストしてないので自信はないですが。頭と尻に余計なものがくっつくヨカン。 http://medaka.5ch.io/test/read.cgi/php/999654569/267
268: 267 [sage] 04/04/02 03:21 ID:??? 化けた。スマン。 <xsl:when test=".='&#10;'"> 全角を置き換えて。 http://medaka.5ch.io/test/read.cgi/php/999654569/268
269: 266 [sage] 04/04/02 20:40 ID:??? ありがとうございました。"!"は拾ってくれるようになりました。 <html xmlns="http://www.w3.or/Profiles/XHTML-transitional"><body> Thisisapen! </body></html> しかし、上のように単語間のスペースは拾われないみたいです。 おっしゃるとおりXSLTはまだかじりたてなので、自分でも調べてみます。 http://medaka.5ch.io/test/read.cgi/php/999654569/269
270: nobodyさん [sage] 04/04/02 20:50 ID:??? 自己レスです。xmlのほうのbodyタグに xml:space="preserv" と属性を加えたら期待通りの結果が得られました。 重ね重ねありがとうございました。 http://medaka.5ch.io/test/read.cgi/php/999654569/270
271: 267 [sage] 04/04/02 21:33 ID:??? <xsl:preserve-space>というタグがありますけど… あとxhtmlの識別子が間違ってますよ。 http://medaka.5ch.io/test/read.cgi/php/999654569/271
272: nobodyさん [] 04/04/08 12:47 ID:Pkn49QjT <A> <B><C>○あいう</C></B> <B><C>100</C></B> <B><C>200</C></B> <B><C>○いうえ</C></B> <B><C>50</C></B> </A> を <A> <B> <C>○あいう</C> <D>100</D> <D>200</D> </B> <B> <C>○いうえ</C> <D>50</D> </B> </A> に書き換えたいのですが、xpathで 1. /A/B/Cで○があるもの、もしくは○がないもの 2. 自分の一番近い兄で/A/B/Cで○があるもの というのはどう表記されるでしょうか? http://medaka.5ch.io/test/read.cgi/php/999654569/272
273: nobodyさん [sage] 04/04/08 13:10 ID:??? >>272 よく読んでいないけれど、ツリー構造の変更は XSL ではなくて、 DOM じゃないのか? http://medaka.5ch.io/test/read.cgi/php/999654569/273
274: nobodyさん [sage] 04/04/08 16:06 ID:??? >>272 >1. /A/B/Cで○があるもの、もしくは○がないもの starts-with(.,'○') か これを not() で囲う >2. 自分の一番近い兄で/A/B/Cで○があるもの >というのはどう表記されるでしょうか? preceding::C[starts-with(.,'○')][1] こんなでしょうか。ここから <xsl:template match="/A"> <A> <xsl:apply-templates select="B/C[starts-with(.,'○')]"/> </A> </xsl:template> <xsl:template match="B/C[starts-with(.,'○')]"> <xsl:variable name="val" select="."/> <B> <C><xsl:value-of select="."/></C> <xsl:for-each select="following::C[substring(.,1,1) != '○']"> <xsl:if test="preceding::C[starts-with(.,'○')][1] = $val"> <D><xsl:value-of select="."/></D> </xsl:if> </xsl:for-each> </B> </xsl:template> これでとりあえずできるかと。要素数増えるとfor-each以下が効率悪そうだけ ど。(.,'○')が顔文字にしか見えないのが欠点。 http://medaka.5ch.io/test/read.cgi/php/999654569/274
275: nobodyさん [sage] 04/04/08 18:38 ID:??? >>257 遅レスですが <xsl:copy-of select="document('')/...."/> ってこと?テンプレートとしては使えないけど。使えても意味ないけどね。 http://medaka.5ch.io/test/read.cgi/php/999654569/275
276: nobodyさん [sage] 04/04/09 10:37 ID:??? >>274 ありがとう。 元の処理に教えていただいたコードを入れて動かしたいと思います。 http://medaka.5ch.io/test/read.cgi/php/999654569/276
277: nobodyさん [sage] 04/04/18 17:14 ID:??? >>275 いや、C言語とかだと自分自身を出力するプログラムが書けるんですが http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/quine.html xsltの場合ネームスペースとかの関係で無理なんじゃないかと思って。 でもネームスペースを明示的に指定してやればできるのか? documentで参照するのはアリなのかなぁ。 http://medaka.5ch.io/test/read.cgi/php/999654569/277
278: nobodyさん [sage] 04/04/18 21:38 ID:??? >>277 document('')で自分を参照するのは割と普通に使いますよ。自分は、ですが。 使ってるソースを目にすることもあります。 参照したデータはテンプレートとして使われることはないのでネームスペース は(自分の少ない知識の範囲内では)そんなに問題にならないと思います。た とえば <xsl:template match="/"> <xsl:copy-of select="document('')//xsl:template[@match='/']"/> </xsl:template> これでも無限ループになる事はないです。もちろんこんなの意味ないので、別 のネームスペースを使って設定ファイル的なことをする方が一般的だと思います。 http://medaka.5ch.io/test/read.cgi/php/999654569/278
279: nobodyさん [sage] 04/05/07 01:25 ID:??? XSLTXTって使ってる人いますか? ttps://xsltxt.dev.java.net/ ttp://www.zanthan.com/ajm/xsltxt/index.html とりあえず < とか書かなくていいのがいい。 http://medaka.5ch.io/test/read.cgi/php/999654569/279
280: nobodyさん [sage] 04/05/07 01:26 ID:??? あ、&lt; です↑ http://medaka.5ch.io/test/read.cgi/php/999654569/280
281: nobodyさん [sage] 04/05/09 20:35 ID:??? >>279 > とりあえず < とか書かなくていいのがいい。 まともな XML オーサリングツール使えよ。 http://medaka.5ch.io/test/read.cgi/php/999654569/281
282: nobodyさん [age] 04/05/27 16:04 ID:??? <li a="2300" b="hoge"/> <li a="jiro" b="もっこり"/> <li a="義雄" b="boke"/> といったようなリストがあったとして、 属性b の値が hoge の時だけ 属性a の値を取りたいんですけど、 xpathではどうすればいいのでしょうか? http://medaka.5ch.io/test/read.cgi/php/999654569/282
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 276 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.008s