XSL/XSLT (558レス)
XSL/XSLT http://medaka.5ch.io/test/read.cgi/php/999654569/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
252: nobodyさん [sage] 04/02/22 17:24 ID:??? みなさんXSLの作成は何でやってます? XSLってもともと可読性にかけるし、 IEだとキャッシュ読んだりエラーがわかりにくかったりしてデバッグが激しくし辛いのだが。 http://medaka.5ch.io/test/read.cgi/php/999654569/252
253: nobodyさん [sage] 04/02/22 18:13 ID:??? 可読性に欠けないプログラミング言語ってある? インデントとかコメントとか自分で工夫するもんじゃない? IE じゃなくて、msxsl.exe とか使うのもいいと思うよ。 http://medaka.5ch.io/test/read.cgi/php/999654569/253
254: ヽ(´ー`)ノ [sage] 04/02/22 18:14 ID:??? > みなさんXSLの作成は何でやってます? Emacs 使いなので Emacs で。 > XSLってもともと可読性にかけるし、 書き方が下手なだけだと思うが。 > IEだとキャッシュ読んだりエラーがわかりにくかったりしてデバッグが激しくし辛いのだが。 msxsl.exe http://medaka.5ch.io/test/read.cgi/php/999654569/254
255: nobodyさん [sage] 04/02/22 20:09 ID:??? >>252 Komodo http://medaka.5ch.io/test/read.cgi/php/999654569/255
256: 250 [sage] 04/02/23 13:14 ID:??? >>251 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias"> <xsl:namespace-alias stylesheet-prefix="axsl" result-prefix="xsl"/> <xsl:template match="/"> <axsl:stylesheet> <axsl:template match="/"> <foo bar="{'{aaa}'}"/> </axsl:template> </axsl:stylesheet> </xsl:template> </xsl:stylesheet> こういう場合。 今試してみたらxsltproc(Using libxml 20604, libxslt 10102 and libexslt 802)だとunmatched '}'とパースエラーが出て、xalan 2.3.1だと問題無く処理できる。 xsltprocでもattribute要素使えば処理できる。 >>252 xsltはxmlなので読みやすいようにスタイルシートを適用してブラウザで見るのが良いかと。 直接編集できないけど。リアルタイムでスタイルシートを適用してくれるxmlエディタならできるかな? エディタはEmacsでxml-lite-modeを使っている。xsltプロセッサはメインがxsltprocで変な動きをしたときはxalan。 タグの閉じ忘れがチェックできるだけでもだいぶ違うよ。 http://medaka.5ch.io/test/read.cgi/php/999654569/256
257: nobodyさん [] 04/02/25 08:26 ID:Hbu4YFmr XSLTって自分自身を出力するスタイルシートは書ける? http://medaka.5ch.io/test/read.cgi/php/999654569/257
258: nobodyさん [] 04/03/24 22:07 ID:QhqWFZPy xhtml文書をxsltprocで変換したいと思ってるんだけど、 xhtml側のnamespaceの状態よってマッチしたりしなかったりするので困ってる。 ----- test.xsl ----- <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="html"/> </xsl:stylesheet> ----------------- [実行例] $ xsltproc.exe -v test.xsl test.xml 2>&1 | grep xsltProcessOneNode ----- test.xml ----- <?xml version="1.0"?> <html xmlns="http://www.w3.org/1999/xhtml"/> ----------------- xsltProcessOneNode: no template found for / xsltProcessOneNode: no template found for html このようにマッチしない。でも、namespaceを消したり名前を付けたりするとマッチする。 ----- test.xml ----- <?xml version="1.0"?> <html xmlns:xhtml="http://www.w3.org/1999/xhtml"/> ----------------- xsltProcessOneNode: no template found for / xsltProcessOneNode: applying template 'html' for html 何故?また回避策は? #現象が再現できる最小のソースです。validなxhtmlに対しても同様です。 http://medaka.5ch.io/test/read.cgi/php/999654569/258
259: nobodyさん [sage] 04/03/24 22:10 ID:??? 2行目×状態よって○状態によって xsltprocはCygwin版libxslt1.1.2-1です。 $ xsltproc --version Using libxml 20604, libxslt 10102 and libexslt 802 xsltproc was compiled against libxml 20604, libxslt 10102 and libexslt 802 libxslt 10102 was compiled against libxml 20604 libexslt 802 was compiled against libxml 20604 http://medaka.5ch.io/test/read.cgi/php/999654569/259
260: nobodyさん [sage] 04/03/29 11:53 ID:??? namespaceというのは要素の苗字に当たります。 xmlns="http://www.w3.org/1999/xhtml" と指定することは、この要素とその子孫要素の内プレフィックスの付いてないものの苗字は"http://www.w3.org/1999/xhtml"ですよと宣言することで、 xmlns:xhtml="http://www.w3.org/1999/xhtml" と指定することは、この要素とその子孫要素のうちxhtmlというプレフィックスが付いているものの苗字は"http://www.w3.org/1999/xhtml"ですよと宣言することです。 ですから1番目のtest.xmlのhtml要素はhttp://www.w3.org/1999/xhtmlという苗字を持ったhtml要素ということになります。 一方2番目のtest.xmlのhtml要素にはxhtmlというプレフィックスが無いため苗字無しのhtml要素となります。 test.xslでは苗字無しのhtml要素にマッチするようになっているため1番目のtest.xmlにはマッチしませんが2番目のtest.xmlではマッチします。 解決するためにはtest.xslのxsl:template要素にxmlns="http://www.w3.org/1999/xhtml"と宣言を加えるか、 xmlns:xhtml="http://www.w3.org/1999/xhtml"と宣言を加えてxsl:templateのmatch属性を"xhtml:html"とします。 これで苗字付きのhtml要素にマッチするようになります。 http://medaka.5ch.io/test/read.cgi/php/999654569/260
261: nobodyさん [sage] 04/03/29 12:55 ID:??? pc2鯖が消える前の>>258への解答ローカルで持ってるけど上げる? http://medaka.5ch.io/test/read.cgi/php/999654569/261
262: nobodyさん [sage] 04/03/29 13:12 ID:??? 貼っときますね 260 :nobodyさん :sage :04/03/26 13:09 ID:??? ----- test.xsl ----- <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:h="http://www.w3.org/1999/xhtml"> <xsl:template match="/h:html"/> </xsl:stylesheet> ----------------- あるいは ----- test.xsl ----- <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:h="http://www.w3.org/1999/xhtml"> <xsl:template match="/"><xsl:apply-templates select="h:html" /></xsl:template> <xsl:template match="h:html"/> </xsl:stylesheet> ----------------- とかどうですか。 xmlns:h=".." は xmlns=".." にしておいて match="/html" あるいは match="/h:html" などでもいいだろうけど。 http://medaka.5ch.io/test/read.cgi/php/999654569/262
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
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 287 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.009s