XSL/XSLT (558レス)
上下前次1-新
142(1): 141 [<age/>] 02/09/18 15:02 ID:??? AAS
ていうか <sage/> ちゃった。
143: 02/09/18 15:12 ID:??? AAS
>>141 >>142
XMLタグの使い方間違えたから1番上に来ちゃったぞ
144: 02/09/18 15:15 ID:??? AAS
ここですか、XMLタグの使えない人々の集まるスレは
145(1): JTR 02/09/25 19:45 ID:y/qFoSLv(1) AAS
ソフト・リサーチ・センターからCocoon2の書籍がでるみたい。
出版社のHPで目次見たけど結構よさげ。
たぶんC2の専門書って日本ではこれが最初かも。
それにしてもC2を仕事で使ってる人ってどれくらい
いるんだろうか。パフォーマンス的には問題ないのかな。
146: 02/09/25 20:00 ID:??? AAS
>>145
C2仕事で使ってるYO パフォーマンスはServletでSAX使ったアプリ書いた
のと同じ程度だYO(そのまんまじゃん)
C2自体がパフォーマンスの足を引っ張るというよりも、サーバのスペックとか
DBの性能とかが重要だねやっぱり。
147(1): 02/10/02 00:23 ID:??? AAS
他板でこんなスレ見つけました。
XML使いの板
2chスレ:hp
レベル低め、XSLT中心、WEBでの利用。
他にXML語れる所知りませんか?
148(1): 02/10/02 11:18 ID:??? AAS
>>上様
こんなの。
XML [WebProg]
コンテンツとデザインの分離 [WebProg]
XMLの必要性 [プログラム]
XMLプログラミング [プログラム]
XMLを限り無くオカルトに語る [心と宗教]
149: 147 02/10/02 14:08 ID:??? AAS
>>148
サンクス
全部見てきたよ。
……最後のスレ、こいつは…
150(1): 02/10/05 16:58 ID:eN4sGb4j(1) AAS
普通のプロバに設置するCGIでXLSTできないかなあ
151: 02/10/05 23:24 ID:??? AAS
>>150
IEならXSLT入ってるぞ。
…てのはだめなんだよな。
おれも情報きぼん
152: 02/10/07 05:30 ID:??? AAS
拾ってきた
2chスレ:tech
153(1): [age] 02/10/11 04:30 ID:??? AAS
XSLTパーサのXERCESをインストールしようとしているのですが,うまくいきません.
解凍した後,コマンドラインから
SET CLASSPATH=%CLASSPATH%;C:\Xerces\xerces.jar
と入力しましたが,サンプルで試した所,
Exception in thresd "main" java.lang.NoClassDeFoundError
となってしまいました.バージョンは2.2.0です.
お分かりになる方,よろしくお願いします.
154: 02/10/15 01:38 ID:okBjBmnc(1) AAS
>>153
サンプルを実行したとき、何てコマンドラインに入力したんだよ
java -jar xxxx.jar か?
155(1): 02/10/29 00:17 ID:??? AAS
XMLからXSLT変換で、違う形式のXMLファイルを出力したとしよう。
変換後のXMLファイルと、変換に使ったXSLTファイルを用いて、
元のXMLファイルを再現できるものだろうか?
変換
XML[A] + XSLT → XML[B]
戻す。
XML[B]の情報 + XSLTの情報 → XML[A]
156: 02/10/29 19:23 ID:??? AAS
>>155
問題になるのは変換時に捨ててしまった情報をどうするかだと思われ。
157: 02/10/29 23:52 ID:??? AAS
完全な再現は出来ないと思う。
同じXSLTを使って、おなじXML[B]を生成するのなら、出切るかもしれない。
いや、正直わからん。俺頭悪いし。
158(1): 八べえ 02/11/12 15:09 ID:gxn/By35(1) AAS
Cocoon2を使用して、WEB表示を行うとソースに
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
が追記されてしまいます。
これにより、Shift-JISで書いているxml,xsltが文字化けを起こしています。
sitemap.xmap,cocoon.xconfをみてもそれらしき設定が見当たりません。
どのようにしたら、追記されなくなるのでしょうか?
159: bloom 02/11/12 15:36 ID:VFQMwTMk(1) AAS
外部リンク:homepage.mac.com
160(1): HTMLをSJISで表示 02/11/13 10:55 ID:oYHYr3JM(1/2) AAS
>>158
docs/samples/hello-page.xml
<?xml version="1.0" encoding="Shift_JIS"?>
を入れると、正常なUTF-8に変換されるので、文字化けしない。
結果charset=UTF-8
xslt の中のoutput は利かない。
結果htmlも、SJISにする場合は、serializer に指定する。
html serializer に、sjis 版追加
<map:serializer name="html-sjis" logger="sitemap.serializer.html" mime-type="text/html" pool-grow="4" pool-max="32" pool-min="4" src="org.apache.cocoon.serialization.HTMLSerializer">
<buffer-size>1024</buffer-size>
<encoding>Shift_JIS</encoding>
</map:serializer>
hello.html のマップをコピーして sjis バージョンを作る
<map:match pattern="hello-sjis.html"><!-- ここ**-->
<map:generate src="docs/samples/hello-page.xml"/>
<map:transform src="stylesheets/page/simple-page2html.xsl"/>
<map:serialize type="html-sjis"/><!-- ここ**-->
</map:match>
ばんざーい。 これで完成 結果charset=Shift_JIS
161(1): XMLをSJISで出力 02/11/13 11:03 ID:oYHYr3JM(2/2) AAS
hello.html を指定すると UTF-8版が表示され、
hello-sjis.html を指定すると、 SJIS版が表示されるようになる。
別件だが
xml の出力の中の encoding=UTF-8 を変更する場合は、xslt の中で、
<xsl:output omit-xml-declaration="no" encoding="Shift_JIS"/>
とかやると良い。
162: 160=161 02/11/13 15:02 ID:fcqFiIq0(1/2) AAS
>>160 = >>161
ばんざ〜い!!
みなさんありがとうございました。
無事、SJIS表示できるようになりました。
163: 教えて下さい 02/11/13 17:52 ID:fcqFiIq0(2/2) AAS
xslの全ての<xsl:value-of select=....>の項目に、
「disable-output-escaping="yes"」を指定したいのですが、
まとめて設定するにはどのようにしたらよいのでしょうか?
164: 02/11/15 22:35 ID:Q0ofQCcS(1) AAS
disable-output-escaping="yes" を <xsl:value-of に追加する
XSLT を書いて XSLT を変換...
165: 02/11/15 23:27 ID:y2tgiCuR(1) AAS
エディタで一括変換
166(1): 02/12/09 01:32 ID:eA2V6vYL(1) AAS
すごい単純な質問なんですけど、
<a>
<xsl:attribute name="href">
<xsl:value-of select="@url" />
</xsl:attribute>
<xsl:attribute name="target">
_self
</xsl:attribute>
<xsl:value-of select="@url" />
</a>
とXSLでリンクを作ったんですが、targetを _self にしても、_blank みたいに別ウィンドウでリンク先が表示されてしまいます。
_self や _top のように別ウィンドウを開かないでリンク先を表示させるにはどうすればいいのでしょうか?
167: 166 02/12/09 01:51 ID:??? AAS
自己レスです。
<xsl:attribute name="target">_self</xsl:attribute>
と繋げればうまくいきました。どうも間にリターンがあったのが原因みたいです。
168: 03/01/06 07:36 ID:??? AAS
DTDで
<!ENTITY foo SYSTEM "bar.xml">
を XML schema で表現するにはどうすればいいんですか?
169: 03/01/06 07:44 ID:L2+zJcVG(1) AAS
しまった、ageておこう
170: 山崎渉 [(^^)sage] 03/01/15 13:36 ID:??? AAS
(^^)
171: 03/01/22 05:21 ID:vujRJlnb(1) AAS
i love love generation
172: ぱむ 03/01/28 17:32 ID:IBfGocF/(1) AAS
cocoonのsitemap.xmapで2つ以上のxmlを1つのxslに適用したい場合は
どうすればいいんですか?
<map:generate src="aaa.xml"/>
<map:generate src="bbb.xml"/>
<map:transform src="ccc.xsl"/>
とすると「適用出来るxmlは1つだけ」というエラーが出てしまいます。
だれか宜しくお願いします。
173: 03/01/29 13:27 ID:L9yee78Z(1) AAS
xmlは死んだ
174: 03/02/11 22:52 ID:K0N8t3Ee(1) AAS
xmlは死んだ
175: 03/02/12 17:42 ID:rtj1FkeB(1) AAS
MS、XDocsの正式名称「InfoPath」発表
外部リンク[html]:www.zdnet.co.jp
MicrosoftはInfoPathで作成したフォームを使い
医療電子データ交換用形式で送るデモも実施。
同社はXFormsではなくXSLTの採用を決定
176: 03/02/12 17:56 ID:gzTJY/OJ(1) AAS
外部リンク:www.agemasukudasai.com
177(4): 03/02/20 19:11 ID:ywFHezDA(1) AAS
名前空間接頭辞 foo と bar を使った xml 文書があります.
----------
<foo:root xmlns:foo="外部リンク:foo-namespace" xmlns:bar="外部リンク:bar-namespace">
<bar:e1>this is <foo:e2>a</foo:e2> pen. </bar:e1>
</foo:root>
----------
これを以下の xslt に食わせて,
foo に属する要素を全て bar の要素に変換します.
----------
<xsl:stylesheet xmlns:xsl="外部リンク:www.w3.org"
xmlns:foo="外部リンク:foo-namespace" xmlns:bar="外部リンク:bar-namespace" version="1.0">
<xsl:output indent="yes" omit-xml-declaration="yes" />
<xsl:template match="foo:root"><bar:root><xsl:apply-templates select="*" /></bar:root></xsl:template>
<xsl:template match="foo:e2"><bar:e2><xsl:value-of select="." /></bar:e2></xsl:template>
<xsl:template match="@*|node()"><xsl:copy><xsl:apply-templates select="@*|node()" /></xsl:copy></xsl:template>
</xsl:stylesheet>
----------
すると,以下のような xml 文書 (多少整形してあります) が得られるのですが,
----------
<bar:root xmlns:bar="外部リンク:bar-namespace" xmlns:foo="外部リンク:foo-namespace">
<bar:e1>this is <bar:e2>a</bar:e2> pen.</bar:e1>
</bar:root>
----------
結果として全く使われていない foo に対する宣言が文書に含まれてしまいます.
exclude-result-prefixes="foo" を指定しても,bar:e1 要素に宣言が現れるだけで意味がありませんでした.
これを取り除く (最適化?) することはできないのでしょうか.
いや,実害はないんですけど気持ち悪くて...
178: 177 03/02/20 19:13 ID:??? AAS
書き込むときに「改行が多い!!」って怒られちゃったので
改行削ったらソースが読みづらくなってしまいました……スマンコ
179(1): 03/02/21 01:48 ID:??? AAS
>>177
で、変換は何で?
180(1): 177 03/02/21 10:10 ID:??? AAS
>>179
えーと,「何で変換する必要があるの?」という意味でしょうか.
>>177で挙げた例は,現象が再現する最小限のソースでして
(もっと短くできるかもしれませんが),実際は置き換え以外にも色々やってるんです...
181(1): 03/02/22 22:09 ID:??? AAS
>>180
transformer は何?という意味
182: 177 03/02/23 21:47 ID:ORn8WdNQ(1) AAS
>>181
すいません,書き忘れました.
xalan-java 2.4.D1 です.
183: 山崎渉 [(^^)] 03/03/13 17:11 ID:??? AAS
(^^)
184: 03/04/02 23:28 ID:??? AAS
ほすさげ
185: [‘‘] 03/04/07 01:23 ID:??? AAS
(MS)XSL+JavaScriptで入力フォーム(UI)を作るという方法論は間違いだったと激しく後悔中。
素直に全部JavaScriptにするか、サーバサイドで作るべきだダタヨ。
186: 03/04/07 01:46 ID:uo8jDP5o(1) AAS
ん。XForm ではなくて、XSLで?
187: 山崎渉 [(^^)] 03/04/17 12:08 ID:??? AAS
(^^)
188(1): 03/04/19 11:48 ID:4Vo7Hobj(1) AAS
あの・・・XSLTってタグ自身を出力できない?
下の様にすると全タグについて定義しなくてはならなくなってしまう・・
<xsl:template match="ABCD">
<ABCD>
<xsl:apply-template/>
</ABCD>
</xsl:template>
やりたいことは
xmlの一部のタグだけ変換したいのですが
それ以外はそのままのタグで出力したいのです
copy-of とか使うと編集できないし。。。
すごくくだらない質問ですみませんが教えていただけないでしょうか?
189: 03/04/20 04:35 ID:??? AAS
>>188
<xsl:template match="ABCD">
<xsl:element name="{local-name()}">
<xsl:apply-template/>
</xsl:element>
</xsl:template>
ABCD をワイルドカードにすると全部引っかかる。
190: 山崎渉 [(^^)sage] 03/04/20 06:00 ID:??? AAS
∧_∧
( ^^ )< ぬるぽ(^^)
191: 03/05/19 12:22 ID:UmHfFrg2(1) AAS
いい書籍ない?
オライリーのはわかりにくい。
192: 山崎渉 [(^^)] 03/05/22 02:00 ID:??? AAS
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
193: 山崎渉 [(^^)] 03/05/28 17:20 ID:??? AAS
AA省
194: 山崎 渉 [(^^)] 03/07/15 11:14 ID:??? AAS
AA省
195: 山崎 渉 [(^^)sage] 03/08/02 02:37 ID:??? AAS
∧_∧
( ^^ )< ぬるぽ(^^)
196: ぼるじょあ ◆ySd1dMH5Gk [(^^)] 03/08/02 05:19 ID:??? AAS
AA省
197: 山崎 渉 [(^^)] 03/08/15 22:59 ID:??? AAS
AA省
198: 03/09/07 21:17 ID:PQrT+UlA(1) AAS
<x>a b c <y>d</y> e <y>f</y> <y>g</y> h</x>
を
<p>a b c <q>d</q> e <q>f</q> <q>g</q> h</p>
に変換する XSL が分からん。for-each じゃ出来ないよね?
199(1): 03/09/07 23:33 ID:X8dU+/Y3(1) AAS
xにマッチしてpにおきかえるテンプレートと
yにマッチしてqにおきかえるテンプレートをかけばいいだけじゃんよ
200(1): 03/09/09 01:09 ID:??? AAS
>>199
あー、徹夜明けでボケてた。
その通りです失礼
201(1): 03/09/26 10:15 ID:Hq0iAR6d(1) AAS
<date>9月2日</date>
<title>ちょっとここを通られた</title>
<p>なぞの白い物体に我が家をあらされてしまった。</p>
<p>訴訟を起こして謝罪と賠償を要求したい。</p>
を
<div class="section">
<h2><date>9月2日</h2>
<div class="subsection">
<h3>ちょっとここを通られた</h3>
<p>なぞの白い物体に我が家をあらされてしまった。</p>
<p>訴訟を起こして謝罪と賠償を要求したい。</p>
</div>
</div>
と変換するにはXSLTをどう書けばいいのでしょうか。
202(1): 03/09/26 11:50 ID:??? AAS
>>201
まず整形式にしろ。話はそれからだ。
203(1): 03/09/26 17:56 ID:??? AAS
>>202
すみません
<h2><date>9月2日</h2> は <h2>9月2日</h2> の誤りです。
204: 03/09/26 22:18 ID:??? AAS
>>203
整形式にしなきゃいけないのは変換前のほうなんだが。
本当にやりたいことは別にあるんじゃないかとも思うが、
とりあえず、親要素を???とすれば、こんな感じ。
<xsl:template match="???">
<div class="section">
<xsl:apply-templates select="date" />
<div class="subsection">
<xsl:apply-templates select="title" />
<xsl:apply-templates select="p" />
</div>
</div>
</xsl:template>
<xsl:template match="date"><h2><xsl:xsl:apply-templates /></h2></xsl:template>
<xsl:template match="title"><h3><xsl:xsl:apply-templates /></h3></xsl:template>
<xsl:template match="p"><p><xsl:xsl:apply-templates /></p></xsl:template>
205(1): 03/10/10 20:26 ID:??? AAS
俺はサイトの文法は
<section>
<title>TITLE</title>
<sentences><p></p>....</sentences>
<section>
<title>子セクションTITLE</title>
<sentences><p></p>....</sentences>
</section>
<section>
<title>子セクションTITLE</title>(以下略&再帰的な文法)
</section>
</section>
にしてる。
206: 03/10/14 00:50 ID:??? AAS
>>205
俺もそんな感じ
207(1): 03/10/17 21:05 ID:ckGd54O2(1) AAS
質問です。
XSLTで、元の構造を保ったまま、
XMLのテキストを一部分だけ変えるというのは簡単に出来るのでしょうか?
例えば、簡単な例ですが、
<A>
<B>hoge</B>
</A>
とあったときにhogeを何か別の文字列に変換したいという事です。
やはりその構造にあった、スタイルシートを書くしかないのでしょうか?
208(1): 03/10/18 00:03 ID:??? AAS
>>207
どの要素内容のテキストのhogeも全部書き換えていいなら簡単。
でも、そのためにXSLTを使うなんて馬鹿げてる。
209(1): 03/10/18 14:56 ID:??? AAS
>>208
そういうことのためにXSLTがあるんじゃないの?
それが馬鹿げてるってことはXSLT自体が馬鹿げてるってことだろ。
210: 03/10/19 10:59 ID:??? AAS
>>209
スキーマを換えるためにあると考えるのが普通だろ。
単なる置換とはぜんぜん違うよ。
211: 03/10/19 17:43 ID:??? AAS
XMLをXSLでHTMLに変換して、↓のような感じにしたいです。
何がしたいのかというとページ内リンクがしたくて、
c要素を変換した(1*)や(*2)などを押すと、
f要素の(*1)や(*2)に飛びたいのです。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="sample.xsl" type="text/XSL"?>
<A>
<b>テキスト1<c id="A" /></b>
<b>テキスト2<c id="B" /></b>
<b>テキスト3<c id="A" /></b>
<b>テキスト4<c id="A" /></b>
<e>
<f id="A">参照テキスト</f>
<f id="B">参照テキスト</f>
</e>
</a>
↓変換↓
テキスト1(*1)
テキスト2(*2)
テキスト3(*1)
テキスト4(*1)
(*1)参照テキスト
(*2)参照テキスト
212: 211の続き 03/10/19 17:44 ID:??? AAS
ページ内リンク自体は簡単にできるのですが、
(*1)、(*2)などの番号を振るのが難しいです。
f要素の番号は単純にnumberでカウントしているのですが、
c要素での番号が振れません。
xslはネットをうろついて見つけた近そうなものを
参考にしながら、こんな感じになっています。
↓
213: 212の続き 03/10/19 17:48 ID:??? AAS
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="外部リンク:www.w3.org" version="1.0">
<xsl:output method="html" version="4.0" encoding="Shift_JIS" />
<xsl:template match="/">
<html><head><title>sample</title></head><body>
<xsl:apply-templates />
</body></html>
</xsl:template>
<xsl:template match="b">
<div><xsl:apply-templates /></div>
</xsl:template>
<xsl:template match="c">
<xsl:variable name="ID" select="@id" />
<xsl:element name="a">
<xsl:attribute name="href">#<xsl:value-of select="@id" /></xsl:attribute>
(*<xsl:number count="f" /><xsl:value-of select="../../e/f/@id[../@id=$ID]" />)
</xsl:element>
<xsl:apply-templates />
</xsl:template>
214: 213の続き 03/10/19 17:49 ID:??? AAS
<xsl:template match="f">
<div>
<xsl:element name="a">
<xsl:attribute name="name"><xsl:value-of select="@id" /></xsl:attribute>
(*<xsl:number count="f" />)
</xsl:element>
<xsl:apply-templates />
</div>
</xsl:template>
</xsl:stylesheet>
f要素にマッチングさせたnumberをとかを取得できればいいのかなーと思って、
いろいろと考えてみたのですが、↑まで書いたところで???になりました。
どなたかお知恵を貸してください。。。。
215(2): 03/11/29 01:53 ID:0RUQwDGu(1) AAS
AA省
216: 215 03/11/30 02:13 ID:??? AAS
「タグ付きで、そのまま出力」 は xsl:copy-of を使用して解決しました。
「タグを削って 32bytes に切り詰め、最後の 3bytes を '...' に変換し、出力」 は未解決です。
どなたか御協力を賜りたく思います。
217(1): 03/11/30 02:59 ID:??? AAS
仕様書読んだことある?
プログラミング言語の経験は?
218: 215 03/11/30 05:20 ID:??? AAS
「タグを削って 32bytes に切り詰め、最後の 3bytes を '...' に変換し、出力」 も自己解決しました。
お騒がせして御免なさい。
>217
>仕様書
少しは読みますが、リファレンス的です。
>プログラミング言語
c/c++ を使う事が出来ます。
219(1): 04/01/02 03:53 ID:goN3d3Pm(1/3) AAS
XSLTで1つのXMLファイル上に存在するn件のデータを50件ずつ表示を
行いたいんだけど、そういうことって簡単にできますか?
どんな感じで実装すれば良いのかご存知の方教えてください。
javascriptでXSLTを触らないとダメなのかな・・。
220(1): 04/01/02 13:08 ID:??? AAS
>>219
トップレベルの xsl:param へ実行時にパラメータを渡せるから、
それで、a < position() and position() <= a + 50 とかすれ。
221(2): 04/01/02 14:59 ID:goN3d3Pm(2/3) AAS
>>220
IEから外部パラメータとして与える方法を探したけどどうしてもわかりません。
普通に/list.xml&index=50とかURL書いても無視されるし。
222(1): 04/01/02 15:25 ID:??? AAS
>>221
クライアント側で変換させるなんて論外じゃねぇの
223(1): 04/01/02 16:08 ID:goN3d3Pm(3/3) AAS
>>222
え・・そうなんすか。
ホントXML全然知らないんで、とんちんかんなレスになっちゃうかも
しれないけど、XSLTってユーザーの入力値にマッチした情報の抽出を行うとか、
そういう制御は得意かと思っていたんですが違うんですか?
それはサーバサイドでやるべき事っていうことですか。
根本的なところを理解していなかったか・・_| ̄|〇ガックリ
224: 04/01/02 18:25 ID:??? AAS
>>223
何が得意かとサーバでやるべきかどうかには何の関係もないと思うけど
225(1): 04/01/10 22:17 ID:??? AAS
保守。
♥
?
?x2665;
226: 04/01/14 03:43 ID:??? AAS
不具合か
Mozillaでバッチリなのに IE で真っ白ってどういうことだ
227: 225 04/01/17 15:58 ID:??? AAS
順番を入れ替えただけでうまくいくってのはどういうこった
228: 227 04/01/17 15:59 ID:??? AAS
名前は226だった
229: 226 227 228 04/01/17 16:17 ID:??? AAS
AA省
230(1): 04/01/26 15:30 ID:TZ0JMGYO(1) AAS
データの格納をXMLに任せて、フォーム使ったCGI作りたいのですけど
よいサンプルページないですか?
表示はXHTMLでやってます。
231(2): 04/01/27 19:27 ID:b8cLgywQ(1) AAS
<item name="WebSite" href="URL" />のような一風変わったXMLがありまして,
XSLを使ってリンクになっているHTMLを作りたいのですが,
<a href="<xsl:value-of select="./@href">"><xsl:value-of select="./@name"/></a>
のような記述をしますと,<が入れ子になっているのでエラーになってしまいます.
<xsl:text>で囲って<に置き換えたりしても駄目でした.
一体,どの様にしたら良いのでしょうか?宜しくお願いします.
232(2): 04/01/27 19:36 ID:??? AAS
>>230
スレ違い。
>>231
xsl:attribute 使え。その疑問が出てくるのは、もう一度 XML と XSLT に関
するキチンとした入門書を通読し直した方が良さげ。
> <a href="<xsl:value-of select="./@href">"><xsl:value-of select="./@name"/></a>
整形式じゃねーしよ。
233: 231 04/01/27 20:03 ID:??? AAS
>>232
有難うございます.おっしゃる通り,@ITの記事を読んだだけの厨房です.
xsl:attributeでググったらやり方が分かりました.
仕事で使う際は,本を読んで真面目に勉強させて頂きます.
有難うございました.
同じ疑問を持った方の参考に(いないかな〜),以下で可能だと思われます.
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="./@href"/>
</xsl:attribute>
<xsl:value-of select="./@name"/>
</xsl:element>
234: 04/01/28 02:23 ID:??? AAS
{ } が使えるとかって知らないでしょ?マジで。
235(1): 04/01/28 15:19 ID:??? AAS
{./@href} で書けるのだが、<a href="..."> みたいな xhtml タグを xslt の中に書かないほうが良いらしい。
<a href="{./@href}"> <xsl:value-of select="./@name"/> </a>
236(2): 04/01/28 21:56 ID:??? AAS
xmlをxslt使ってhtmlとかに変換して<a href...を作るには、もとのxmlで<a href=...なんて書けない。
235が正しい。
237: 04/01/29 01:45 ID:??? AAS
何言ってんだか。一度は仕様書読めよ。
238: 232 04/01/29 13:19 ID:??? AAS
俺の解答不味かったか。{} じゃなく <xsl:attribute/> を教えたのは俺の趣味と
Google で検索する時のことを考えてだったんだが、正直スマンかった。
で、>>235-236 の論点が良く分からんのだが、何が言いたいの?
239: 04/01/29 13:43 ID:??? AAS
>>236
( ゚д゚)ポカーン
それはさておき、漏れは {} 使う派。
attributeは、条件(if)によって属性追加する時くらいしか使わない。
多岐分岐(choose〜when)で属性の値を変える場合は、
直前で変数用意して、{} で埋める。
だって、見やすいんだも〜ん
240(1): 04/01/29 23:46 ID:??? AAS
xmlをxslt使ってhtmlとかに変換して<a href...を作るには、xslで<a href=...なんて書けない。
かな?
241: 04/01/30 09:31 ID:??? AAS
>>240
なんで?(´Д`)
242(1): 04/01/30 12:10 ID:??? AAS
in : <item name="2ちゃんねる" href="外部リンク:www.2ch.net"/>
xsl :
<xsl:template match="item">
<a href="{@href}"><xsl:value-of select="@name"/></a>
</xsl:template>
out : <a href="外部リンク:www.2ch.net">2ちゃんねる</a>
ってことじゃないのん?
243(1): 04/01/30 21:21 ID:??? AAS
>>242
え? そんなことできるんだ。知らんかった。
244: 04/01/30 21:39 ID:??? AAS
>>243
(°Д°)ポカーン
245(1): 04/01/30 22:40 ID:??? AAS
AA省
246(1): 04/01/31 01:39 ID:??? AAS
出力をHTMLにしたいみたいだけど、とりあえず
xsl:output method="html" とかしてみたら?
247: ヽ(´ー`)ノ 04/01/31 12:03 ID:??? AAS
>>245
xsltproc(libxslt付属)だったら、望んだ出力になるが。バグじゃねーの?
>>246
いや、それは関係ないだろ。
248: 245 04/01/31 15:24 ID:??? AAS
う、msxmlのバグかな
お騒がせしました。失礼いたします
249: 04/02/01 01:23 ID:??? AAS
JRE1.4.2でもなるよ
250(2): 04/02/21 13:19 ID:??? AAS
xsltからxsltを出力するときなんかで、{}という文字を含んだ属性を出力したいときにもattribute要素使うな。
一応{'{hoge}'}でいけると思うけどなんか変だし。
251(1): 04/02/21 19:00 ID:4PYw/lWY(1) AAS
>>250
言ってる意味が良く分からないなぁ。
属性名に { } は使えないでしょ。
属性値に { } があっても上とは関係ないし。
252(2): 04/02/22 17:24 ID:??? AAS
みなさんXSLの作成は何でやってます?
XSLってもともと可読性にかけるし、
IEだとキャッシュ読んだりエラーがわかりにくかったりしてデバッグが激しくし辛いのだが。
253: 04/02/22 18:13 ID:??? AAS
可読性に欠けないプログラミング言語ってある?
インデントとかコメントとか自分で工夫するもんじゃない?
IE じゃなくて、msxsl.exe とか使うのもいいと思うよ。
254: ヽ(´ー`)ノ 04/02/22 18:14 ID:??? AAS
> みなさんXSLの作成は何でやってます?
Emacs 使いなので Emacs で。
> XSLってもともと可読性にかけるし、
書き方が下手なだけだと思うが。
> IEだとキャッシュ読んだりエラーがわかりにくかったりしてデバッグが激しくし辛いのだが。
msxsl.exe
255: 04/02/22 20:09 ID:??? AAS
>>252
Komodo
256: 250 04/02/23 13:14 ID:??? AAS
>>251
<xsl:stylesheet
version="1.0"
xmlns:xsl="外部リンク:www.w3.org"
xmlns:axsl="外部リンク:www.w3.org">
<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。
タグの閉じ忘れがチェックできるだけでもだいぶ違うよ。
257(1): 04/02/25 08:26 ID:Hbu4YFmr(1) AAS
XSLTって自分自身を出力するスタイルシートは書ける?
258(1): 04/03/24 22:07 ID:QhqWFZPy(1) AAS
xhtml文書をxsltprocで変換したいと思ってるんだけど、
xhtml側のnamespaceの状態よってマッチしたりしなかったりするので困ってる。
----- test.xsl -----
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="外部リンク:www.w3.org">
<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="外部リンク:www.w3.org"/>
-----------------
xsltProcessOneNode: no template found for /
xsltProcessOneNode: no template found for html
このようにマッチしない。でも、namespaceを消したり名前を付けたりするとマッチする。
----- test.xml -----
<?xml version="1.0"?>
<html xmlns:xhtml="外部リンク:www.w3.org"/>
-----------------
xsltProcessOneNode: no template found for /
xsltProcessOneNode: applying template 'html' for html
何故?また回避策は?
#現象が再現できる最小のソースです。validなxhtmlに対しても同様です。
259: 04/03/24 22:10 ID:??? AAS
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
260(2): 04/03/29 11:53 ID:??? AAS
namespaceというのは要素の苗字に当たります。
xmlns="外部リンク:www.w3.org"
と指定することは、この要素とその子孫要素の内プレフィックスの付いてないものの苗字は"外部リンク:www.w3.org"ですよと宣言することで、
xmlns:xhtml="外部リンク:www.w3.org"
と指定することは、この要素とその子孫要素のうちxhtmlというプレフィックスが付いているものの苗字は"外部リンク:www.w3.org"ですよと宣言することです。
ですから1番目のtest.xmlのhtml要素は外部リンク:www.w3.orgという苗字を持ったhtml要素ということになります。
一方2番目のtest.xmlのhtml要素にはxhtmlというプレフィックスが無いため苗字無しのhtml要素となります。
test.xslでは苗字無しのhtml要素にマッチするようになっているため1番目のtest.xmlにはマッチしませんが2番目のtest.xmlではマッチします。
解決するためにはtest.xslのxsl:template要素にxmlns="外部リンク:www.w3.org"と宣言を加えるか、
xmlns:xhtml="外部リンク:www.w3.org"と宣言を加えてxsl:templateのmatch属性を"xhtml:html"とします。
これで苗字付きのhtml要素にマッチするようになります。
261(1): 04/03/29 12:55 ID:??? AAS
pc2鯖が消える前の>>258への解答ローカルで持ってるけど上げる?
262: 04/03/29 13:12 ID:??? AAS
貼っときますね
260 :nobodyさん :sage :04/03/26 13:09 ID:???
----- test.xsl -----
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="外部リンク:www.w3.org"
xmlns:h="外部リンク:www.w3.org">
<xsl:template match="/h:html"/>
</xsl:stylesheet>
-----------------
あるいは
----- test.xsl -----
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="外部リンク:www.w3.org"
xmlns:h="外部リンク:www.w3.org">
<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" などでもいいだろうけど。
263: 04/03/29 13:14 ID:??? AAS
続き
261 :nobodyさん :sage :04/03/26 13:27 ID:???
>>260
で、できた!ありがとう!
でも、なんでこうなるの?
XML側にネームスペースがなかったり、名前付けされてたらマッチして、
デフォルトネームスペースがあるとマッチしない理屈がわかんない。
仕様?バグ?ポインタだけでも教えてもらえるとありがたい。
あと、>>260さんは何で知ってるの?(まさか、これFAQ?)
264: 04/03/29 13:20 ID:??? AAS
以上削除前の263でした。
262 :260 :sage :04/03/26 14:48 ID:???
>>260 の訂正
>xmlns:h=".." は xmlns=".." にしておいて
>match="/html" あるいは match="html" などでもいいだろうけど。
>>261
test.xsl で xmlns:h="外部リンク:www.w3.org" が無い場合、
match="html" でマッチするのは
名前空間無し + "html"
という要素だと思う。
で、XHTML のほうは
<html xmlns="外部リンク:www.w3.org"> ... </html>
なってたら、html 要素は内部的には
名前空間 "外部リンク:www.w3.org" + "html"
になってる。
名前空間無し + "html"
と
名前空間 "外部リンク:www.w3.org" + "html"
は違ってる。なのでマッチしない。
そこで、>>260 に書いたみたく、XSLT の側でマッチさせる対象を後者の
ような名前空間 + "html" なものになるよう指定しなきゃいけない。
<html xmlns:xhtml="外部リンク:www.w3.org"/>
と書いた場合は、<html の html は「名前空間無し + "html"」になる。
プリフィックスで xhtml に "外部リンク:www.w3.org" を割りあててる
から、これはデフォルトプリフィックス使ってる <html そのものには影響しない。
265: ”削除”後の260 04/03/29 18:58 ID:??? AAS
(´・ω・`)
266(1): 04/04/02 00:28 ID:I+SOWEa+(1) AAS
・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="外部リンク:www.w3.org" xmlns="外部リンク:www.w3.or">
<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="外部リンク:www.w3.or">
<body>This is a pen!</body></html>
と出力させたいんだけど、
<html xmlns="外部リンク:www.w3.or">
<body>Thisisapen</body></html>
実際にはこう。どなたか知恵をお貸しください。おながいします。
267(2): 04/04/02 03:16 ID:??? AAS
'!'あたりを見ると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>
テストしてないので自信はないですが。頭と尻に余計なものがくっつくヨカン。
268: 267 04/04/02 03:21 ID:??? AAS
化けた。スマン。
<xsl:when test=".='&#10;'">
全角を置き換えて。
上下前次1-新書関写板覧索設栞歴
あと 290 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.045s