XSL/XSLTat PHP
XSL/XSLT - 暇つぶし2ch152:nobodyさん
02/10/07 05:30
拾ってきた
スレリンク(tech板:147番)

153:nobodyさん
02/10/11 04:30
XSLTパーサのXERCESをインストールしようとしているのですが,うまくいきません.
解凍した後,コマンドラインから

SET CLASSPATH=%CLASSPATH%;C:\Xerces\xerces.jar

と入力しましたが,サンプルで試した所,

Exception in thresd "main" java.lang.NoClassDeFoundError

となってしまいました.バージョンは2.2.0です.
お分かりになる方,よろしくお願いします.


154:nobodyさん
02/10/15 01:38 okBjBmnc
>>153
サンプルを実行したとき、何てコマンドラインに入力したんだよ

java -jar xxxx.jar か?

155:nobodyさん
02/10/29 00:17
XMLからXSLT変換で、違う形式のXMLファイルを出力したとしよう。
変換後のXMLファイルと、変換に使ったXSLTファイルを用いて、
元のXMLファイルを再現できるものだろうか?

変換
XML[A] + XSLT → XML[B]

戻す。
XML[B]の情報 + XSLTの情報 → XML[A]

156:nobodyさん
02/10/29 19:23
>>155
問題になるのは変換時に捨ててしまった情報をどうするかだと思われ。


157:nobodyさん
02/10/29 23:52
完全な再現は出来ないと思う。
同じXSLTを使って、おなじXML[B]を生成するのなら、出切るかもしれない。
いや、正直わからん。俺頭悪いし。

158:八べえ
02/11/12 15:09 gxn/By35
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 VFQMwTMk

URLリンク(homepage.mac.com)

160:HTMLをSJISで表示
02/11/13 10:55 oYHYr3JM
>>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:XMLをSJISで出力
02/11/13 11:03 oYHYr3JM
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 fcqFiIq0
>>160 = >>161

ばんざ~い!!
みなさんありがとうございました。
無事、SJIS表示できるようになりました。

163:教えて下さい
02/11/13 17:52 fcqFiIq0
xslの全ての<xsl:value-of select=....>の項目に、
「disable-output-escaping="yes"」を指定したいのですが、
まとめて設定するにはどのようにしたらよいのでしょうか?


164:nobodyさん
02/11/15 22:35 Q0ofQCcS
disable-output-escaping="yes" を <xsl:value-of に追加する
XSLT を書いて XSLT を変換...


165:nobodyさん
02/11/15 23:27 y2tgiCuR
エディタで一括変換

166:nobodyさん
02/12/09 01:32 eA2V6vYL
すごい単純な質問なんですけど、

<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
自己レスです。

<xsl:attribute name="target">_self</xsl:attribute>

と繋げればうまくいきました。どうも間にリターンがあったのが原因みたいです。

168:nobodyさん
03/01/06 07:36
DTDで
<!ENTITY foo SYSTEM "bar.xml">

を XML schema で表現するにはどうすればいいんですか?

169:nobodyさん
03/01/06 07:44 L2+zJcVG
しまった、ageておこう

170:山崎渉
03/01/15 13:36
(^^)

171:nobodyさん
03/01/22 05:21 vujRJlnb
i love love generation

172:ぱむ
03/01/28 17:32 IBfGocF/
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:nobodyさん
03/01/29 13:27 L9yee78Z
xmlは死んだ

174:nobodyさん
03/02/11 22:52 K0N8t3Ee
xmlは死んだ

175:nobodyさん
03/02/12 17:42 rtj1FkeB
MS、XDocsの正式名称「InfoPath」発表

URLリンク(www.zdnet.co.jp)

MicrosoftはInfoPathで作成したフォームを使い
医療電子データ交換用形式で送るデモも実施。
同社はXFormsではなくXSLTの採用を決定



176:nobodyさん
03/02/12 17:56 gzTJY/OJ
URLリンク(www.agemasukudasai.com)

177:nobodyさん
03/02/20 19:11 ywFHezDA
名前空間接頭辞 foo と bar を使った xml 文書があります.
----------
<foo:root xmlns:foo="URLリンク(foo-namespace)<)">
 <bar:e1>this is <foo:e2>a</foo:e2> pen. </bar:e1>
</foo:root>
----------
これを以下の xslt に食わせて,
foo に属する要素を全て bar の要素に変換します.
----------
<xsl:stylesheet xmlns:xsl="URLリンク(www.w3.org)"
 xmlns:foo="URLリンク(foo-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="URLリンク(bar-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
書き込むときに「改行が多い!!」って怒られちゃったので
改行削ったらソースが読みづらくなってしまいました……スマンコ


179:nobodyさん
03/02/21 01:48
>>177
で、変換は何で?

180:177
03/02/21 10:10
>>179
えーと,「何で変換する必要があるの?」という意味でしょうか.

>>177で挙げた例は,現象が再現する最小限のソースでして
(もっと短くできるかもしれませんが),実際は置き換え以外にも色々やってるんです...

181:nobodyさん
03/02/22 22:09
>>180
transformer は何?という意味

182:177
03/02/23 21:47 ORn8WdNQ
>>181
すいません,書き忘れました.
xalan-java 2.4.D1 です.

183:山崎渉
03/03/13 17:11
(^^)

184:nobodyさん
03/04/02 23:28
ほすさげ

185:nobodyさん
03/04/07 01:23
(MS)XSL+JavaScriptで入力フォーム(UI)を作るという方法論は間違いだったと激しく後悔中。
素直に全部JavaScriptにするか、サーバサイドで作るべきだダタヨ。

186:nobodyさん
03/04/07 01:46 uo8jDP5o
ん。XForm ではなくて、XSLで?

187:山崎渉
03/04/17 12:08
(^^)

188:nobodyさん
03/04/19 11:48 4Vo7Hobj
あの・・・XSLTってタグ自身を出力できない?
下の様にすると全タグについて定義しなくてはならなくなってしまう・・

<xsl:template match="ABCD">
  <ABCD>
  <xsl:apply-template/>
  </ABCD>
</xsl:template>

やりたいことは
xmlの一部のタグだけ変換したいのですが
それ以外はそのままのタグで出力したいのです
copy-of とか使うと編集できないし。。。

すごくくだらない質問ですみませんが教えていただけないでしょうか?

189:nobodyさん
03/04/20 04:35
>>188

<xsl:template match="ABCD">
  <xsl:element name="{local-name()}">
  <xsl:apply-template/>
  </xsl:element>
</xsl:template>

ABCD をワイルドカードにすると全部引っかかる。

190:山崎渉
03/04/20 06:00
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

191:nobodyさん
03/05/19 12:22 UmHfFrg2
いい書籍ない?
オライリーのはわかりにくい。


192:山崎渉
03/05/22 02:00
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

193:山崎渉
03/05/28 17:20
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎―◎                      山崎渉

194:山崎 渉
03/07/15 11:14

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

195:山崎 渉
03/08/02 02:37
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

196:ぼるじょあ ◆ySd1dMH5Gk
03/08/02 05:19
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎―――◎                      山崎渉&ぼるじょあ

197:山崎 渉
03/08/15 22:59
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

198:nobodyさん
03/09/07 21:17 PQrT+UlA
<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:nobodyさん
03/09/07 23:33 X8dU+/Y3
xにマッチしてpにおきかえるテンプレートと
yにマッチしてqにおきかえるテンプレートをかけばいいだけじゃんよ

200:nobodyさん
03/09/09 01:09
>>199
あー、徹夜明けでボケてた。
その通りです失礼

201:nobodyさん
03/09/26 10:15 Hq0iAR6d
<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:nobodyさん
03/09/26 11:50
>>201
まず整形式にしろ。話はそれからだ。

203:nobodyさん
03/09/26 17:56
>>202
すみません
<h2><date>9月2日</h2> は <h2>9月2日</h2> の誤りです。

204:nobodyさん
03/09/26 22:18
>>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:nobodyさん
03/10/10 20:26
俺はサイトの文法は
<section>
 <title>TITLE</title>
 <sentences><p></p>....</sentences>
 <section>
  <title>子セクションTITLE</title>
  <sentences><p></p>....</sentences>
 </section>
 <section>
  <title>子セクションTITLE</title>(以下略&再帰的な文法)
 </section>
</section>
にしてる。

206:nobodyさん
03/10/14 00:50
>>205
俺もそんな感じ

207:nobodyさん
03/10/17 21:05 ckGd54O2
質問です。
XSLTで、元の構造を保ったまま、
XMLのテキストを一部分だけ変えるというのは簡単に出来るのでしょうか?

例えば、簡単な例ですが、
<A>
<B>hoge</B>
</A>
とあったときにhogeを何か別の文字列に変換したいという事です。

やはりその構造にあった、スタイルシートを書くしかないのでしょうか?

208:nobodyさん
03/10/18 00:03
>>207
どの要素内容のテキストのhogeも全部書き換えていいなら簡単。
でも、そのためにXSLTを使うなんて馬鹿げてる。

209:nobodyさん
03/10/18 14:56
>>208
そういうことのためにXSLTがあるんじゃないの?
それが馬鹿げてるってことはXSLT自体が馬鹿げてるってことだろ。

210:nobodyさん
03/10/19 10:59
>>209
スキーマを換えるためにあると考えるのが普通だろ。
単なる置換とはぜんぜん違うよ。


211:nobodyさん
03/10/19 17:43
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

ページ内リンク自体は簡単にできるのですが、
(*1)、(*2)などの番号を振るのが難しいです。
f要素の番号は単純にnumberでカウントしているのですが、
c要素での番号が振れません。

xslはネットをうろついて見つけた近そうなものを
参考にしながら、こんな感じになっています。


213:212の続き
03/10/19 17:48
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="URLリンク(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
<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:nobodyさん
03/11/29 01:53 0RUQwDGu
どうか皆様のお力をお借りしたく思います。
xmlが
    <item>
        <text>
            ああああああああああ
            ああああああああああ
            ああああああああああ
        </text>
        <text>
            いいいいい<em>イイイイイ</em> <br />
            いいいいいいいいいい <br />
            いいいいいいいいいい <br />
        </text>
    </item>
このように与えられていて、これを
    <!-- タグ付きで、そのまま出力 -->
    <p>
    ああああああああああ
    ああああああああああ
    ああああああああああ
    </p>
    <p>
    いいいいい<em>イイイイイ</em> <br />
    いいいいいいいいいい <br />
    いいいいいいいいいい <br />
    </p>
    <!-- タグを削って 32bytes に切り詰め、最後の 3bytes を '...' に変換し、出力 -->
    <p>ああああああああああああああ ...</p>
    <p>いいいいいイイイイイいいいい ...</p>
このように出力したいのですが、xslはどのように書けばよいのでしょうか。

216:215
03/11/30 02:13
「タグ付きで、そのまま出力」 は xsl:copy-of を使用して解決しました。

「タグを削って 32bytes に切り詰め、最後の 3bytes を '...' に変換し、出力」 は未解決です。
どなたか御協力を賜りたく思います。

217:nobodyさん
03/11/30 02:59
仕様書読んだことある?
プログラミング言語の経験は?

218:215
03/11/30 05:20
「タグを削って 32bytes に切り詰め、最後の 3bytes を '...' に変換し、出力」 も自己解決しました。
お騒がせして御免なさい。

>217
>仕様書
少しは読みますが、リファレンス的です。
>プログラミング言語
c/c++ を使う事が出来ます。

219:nobodyさん
04/01/02 03:53 goN3d3Pm
XSLTで1つのXMLファイル上に存在するn件のデータを50件ずつ表示を
行いたいんだけど、そういうことって簡単にできますか?
どんな感じで実装すれば良いのかご存知の方教えてください。
javascriptでXSLTを触らないとダメなのかな・・。



220:nobodyさん
04/01/02 13:08
>>219
トップレベルの xsl:param へ実行時にパラメータを渡せるから、
それで、a < position() and position() <= a + 50 とかすれ。

221:nobodyさん
04/01/02 14:59 goN3d3Pm
>>220
IEから外部パラメータとして与える方法を探したけどどうしてもわかりません。
普通に/list.xml&index=50とかURL書いても無視されるし。


222:nobodyさん
04/01/02 15:25
>>221
クライアント側で変換させるなんて論外じゃねぇの

223:nobodyさん
04/01/02 16:08 goN3d3Pm
>>222
え・・そうなんすか。
ホントXML全然知らないんで、とんちんかんなレスになっちゃうかも
しれないけど、XSLTってユーザーの入力値にマッチした情報の抽出を行うとか、
そういう制御は得意かと思っていたんですが違うんですか?
それはサーバサイドでやるべき事っていうことですか。
根本的なところを理解していなかったか・・_| ̄|〇ガックリ

224:nobodyさん
04/01/02 18:25
>>223
何が得意かとサーバでやるべきかどうかには何の関係もないと思うけど

225:nobodyさん
04/01/10 22:17
保守。



?x2665;

226:nobodyさん
04/01/14 03:43
不具合か
Mozillaでバッチリなのに IE で真っ白ってどういうことだ

227:225
04/01/17 15:58
順番を入れ替えただけでうまくいくってのはどういうこった

228:227
04/01/17 15:59
名前は226だった

229:226 227 228
04/01/17 16:17
>>221
外部パラメータを与えるxmlを用意すれば、やりたい事をかなえてくれる

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet version="1.0" encoding="UTF-8" type="text/xsl" href="page.xsl" ?>
<page index="50">
</page>


みたいな中身のないxmlを用意し、xslで <xsl:param name="index" select="/page/@index" /> をよませるのだ。
xslでは 220の <xsl:if test=" ( $index < position() ) and ( position() <= $index + 50 )"> を使う。

page.xml (中身あり) では<page index="0">、
page1.xml (中身なし) では<page index="50">、
page2.xml (中身なし) では<page index="100">、
page3.xml (中身なし) では<page index="150">、と書いておく。

page.xsl では <xsl:copy-of select="document( "page.xml" )/page/foo" /> みたいな、ドキュメントを指定した形で読み込む。
 ( select="/page/foo" では不可能。<xsl:template match="/page/foo"> も恐らく無理 )
おすすめは xsl:for-each

<xsl:template match="/page">
    <xsl:param name="index" select="/page/@index" />
    <xsl:for-each select="document( "page.xml" )/page/foo">
        <xsl:if test=" ( $index < position() ) and ( position() <= $index + 50 )">
            <xsl:copy-of select="current()" />
        </xsl:if>
    </xsl:for-each>
</xsl:template>

と、こんな感じではないかな。
ところどころ間違いがあるかもしれないが、その辺は勘弁してくれ

230:nobodyさん
04/01/26 15:30 TZ0JMGYO
データの格納をXMLに任せて、フォーム使ったCGI作りたいのですけど
よいサンプルページないですか?
表示はXHTMLでやってます。

231:nobodyさん
04/01/27 19:27 b8cLgywQ
<item name="WebSite" href="URL" />のような一風変わったXMLがありまして,
XSLを使ってリンクになっているHTMLを作りたいのですが,

<a href="<xsl:value-of select="./@href">"><xsl:value-of select="./@name"/></a>
のような記述をしますと,<が入れ子になっているのでエラーになってしまいます.
<xsl:text>で囲って<に置き換えたりしても駄目でした.

一体,どの様にしたら良いのでしょうか?宜しくお願いします.

232:nobodyさん
04/01/27 19:36
>>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
>>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:nobodyさん
04/01/28 02:23
{ } が使えるとかって知らないでしょ?マジで。

235:nobodyさん
04/01/28 15:19
{./@href} で書けるのだが、<a href="..."> みたいな xhtml タグを xslt の中に書かないほうが良いらしい。

<a href="{./@href}"> <xsl:value-of select="./@name"/> </a>


236:nobodyさん
04/01/28 21:56
xmlをxslt使ってhtmlとかに変換して<a href...を作るには、もとのxmlで<a href=...なんて書けない。
235が正しい。

237:nobodyさん
04/01/29 01:45
何言ってんだか。一度は仕様書読めよ。

238:232
04/01/29 13:19
俺の解答不味かったか。{} じゃなく <xsl:attribute/> を教えたのは俺の趣味と
Google で検索する時のことを考えてだったんだが、正直スマンかった。

で、>>235-236 の論点が良く分からんのだが、何が言いたいの?

239:nobodyさん
04/01/29 13:43
>>236
( ゚д゚)ポカーン


それはさておき、漏れは {} 使う派。
attributeは、条件(if)によって属性追加する時くらいしか使わない。
多岐分岐(choose~when)で属性の値を変える場合は、
直前で変数用意して、{} で埋める。

だって、見やすいんだも~ん

240:nobodyさん
04/01/29 23:46
xmlをxslt使ってhtmlとかに変換して<a href...を作るには、xslで<a href=...なんて書けない。
かな?


241:nobodyさん
04/01/30 09:31
>>240
なんで?(´Д`)

242:nobodyさん
04/01/30 12:10
in : <item name="2ちゃんねる" href="URLリンク(www.2ch.net)"/>

xsl :
<xsl:template match="item">
 <a href="{@href}"><xsl:value-of select="@name"/></a>
</xsl:template>

out : <a href="URLリンク(www.2ch.net)">2ちゃんねる</a>

ってことじゃないのん?

243:nobodyさん
04/01/30 21:21
>>242
え? そんなことできるんだ。知らんかった。


244:nobodyさん
04/01/30 21:39
>>243
(°Д°)ポカーン

245:nobodyさん
04/01/30 22:40
<xsl:copy-of> で コピーしたノードのタグに、
<hoge xmlns=""> みたいに空欄の名前空間がつくのだが、これはどういう事なのだろうか。


-- hoge.xml --
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet version="1.0" encoding="UTF-8" type="text/xsl" href="./hoge.xsl" ?>
<hoges> hoge is <hoge> HOGE </hoge>. </hoges>

-- hoge.xsl --
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns="URLリンク(www.w3.org)" xmlns:xsl="URLリンク(www.w3.org)">
    <xsl:template match="/hoges">
        <xsl:copy-of select="text() | * | @*" />
    </xsl:template>
</xsl:stylesheet>

-- hoge.html --
hoge is <hoge xmlns="">HOGE </hoge>.


目標は、↓なのだが。

-- hoge.html --
hoge is <hoge> HOGE </hoge>.



246:nobodyさん
04/01/31 01:39
出力をHTMLにしたいみたいだけど、とりあえず
xsl:output method="html" とかしてみたら?

247:ヽ(´ー`)ノ
04/01/31 12:03
>>245
xsltproc(libxslt付属)だったら、望んだ出力になるが。バグじゃねーの?

>>246
いや、それは関係ないだろ。

248:245
04/01/31 15:24
う、msxmlのバグかな
お騒がせしました。失礼いたします

249:nobodyさん
04/02/01 01:23
JRE1.4.2でもなるよ

250:nobodyさん
04/02/21 13:19
xsltからxsltを出力するときなんかで、{}という文字を含んだ属性を出力したいときにもattribute要素使うな。
一応{'{hoge}'}でいけると思うけどなんか変だし。

251:nobodyさん
04/02/21 19:00 4PYw/lWY
>>250
言ってる意味が良く分からないなぁ。
属性名に { } は使えないでしょ。
属性値に { } があっても上とは関係ないし。

252:nobodyさん
04/02/22 17:24
みなさんXSLの作成は何でやってます?
XSLってもともと可読性にかけるし、
IEだとキャッシュ読んだりエラーがわかりにくかったりしてデバッグが激しくし辛いのだが。

253:nobodyさん
04/02/22 18:13
可読性に欠けないプログラミング言語ってある?
インデントとかコメントとか自分で工夫するもんじゃない?

IE じゃなくて、msxsl.exe とか使うのもいいと思うよ。

254:ヽ(´ー`)ノ
04/02/22 18:14
> みなさんXSLの作成は何でやってます?
Emacs 使いなので Emacs で。

> XSLってもともと可読性にかけるし、
書き方が下手なだけだと思うが。

> IEだとキャッシュ読んだりエラーがわかりにくかったりしてデバッグが激しくし辛いのだが。
msxsl.exe

255:nobodyさん
04/02/22 20:09
>>252
Komodo

256:250
04/02/23 13:14
>>251
<xsl:stylesheet
version="1.0"
xmlns:xsl="URLリンク(www.w3.org)"
xmlns:axsl="URLリンク(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:nobodyさん
04/02/25 08:26 Hbu4YFmr
XSLTって自分自身を出力するスタイルシートは書ける?

258:nobodyさん
04/03/24 22:07 QhqWFZPy
xhtml文書をxsltprocで変換したいと思ってるんだけど、
xhtml側のnamespaceの状態よってマッチしたりしなかったりするので困ってる。
----- test.xsl -----
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="URLリンク(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="URLリンク(www.w3.org)"/>
-----------------
xsltProcessOneNode: no template found for /
xsltProcessOneNode: no template found for html

このようにマッチしない。でも、namespaceを消したり名前を付けたりするとマッチする。

----- test.xml -----
<?xml version="1.0"?>
<html xmlns:xhtml="URLリンク(www.w3.org)"/>
-----------------
xsltProcessOneNode: no template found for /
xsltProcessOneNode: applying template 'html' for html

何故?また回避策は?

#現象が再現できる最小のソースです。validなxhtmlに対しても同様です。

259:nobodyさん
04/03/24 22:10
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:nobodyさん
04/03/29 11:53
namespaceというのは要素の苗字に当たります。
xmlns="URLリンク(www.w3.org)"
と指定することは、この要素とその子孫要素の内プレフィックスの付いてないものの苗字は"URLリンク(www.w3.org)"ですよと宣言することで、
xmlns:xhtml="URLリンク(www.w3.org)"
と指定することは、この要素とその子孫要素のうちxhtmlというプレフィックスが付いているものの苗字は"URLリンク(www.w3.org)"ですよと宣言することです。
ですから1番目のtest.xmlのhtml要素はURLリンク(www.w3.org)という苗字を持ったhtml要素ということになります。
一方2番目のtest.xmlのhtml要素にはxhtmlというプレフィックスが無いため苗字無しのhtml要素となります。

test.xslでは苗字無しのhtml要素にマッチするようになっているため1番目のtest.xmlにはマッチしませんが2番目のtest.xmlではマッチします。

解決するためにはtest.xslのxsl:template要素にxmlns="URLリンク(www.w3.org)"と宣言を加えるか、
xmlns:xhtml="URLリンク(www.w3.org)"と宣言を加えてxsl:templateのmatch属性を"xhtml:html"とします。
これで苗字付きのhtml要素にマッチするようになります。

261:nobodyさん
04/03/29 12:55
pc2鯖が消える前の>>258への解答ローカルで持ってるけど上げる?

262:nobodyさん
04/03/29 13:12
貼っときますね

260 :nobodyさん :sage :04/03/26 13:09 ID:???


----- test.xsl -----
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="URLリンク(www.w3.org)"
xmlns:h="URLリンク(www.w3.org)">
<xsl:template match="/h:html"/>
</xsl:stylesheet>
-----------------

あるいは

----- test.xsl -----
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="URLリンク(www.w3.org)"
xmlns:h="URLリンク(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:nobodyさん
04/03/29 13:14
続き

261 :nobodyさん :sage :04/03/26 13:27 ID:???


>>260
で、できた!ありがとう!

でも、なんでこうなるの?
XML側にネームスペースがなかったり、名前付けされてたらマッチして、
デフォルトネームスペースがあるとマッチしない理屈がわかんない。
仕様?バグ?ポインタだけでも教えてもらえるとありがたい。

あと、>>260さんは何で知ってるの?(まさか、これFAQ?)

264:nobodyさん
04/03/29 13:20
以上削除前の263でした。

262 :260 :sage :04/03/26 14:48 ID:???

>>260 の訂正
>xmlns:h=".." は xmlns=".." にしておいて
>match="/html" あるいは match="html" などでもいいだろうけど。

>>261
test.xsl で xmlns:h="URLリンク(www.w3.org)" が無い場合、
match="html" でマッチするのは
名前空間無し + "html"
という要素だと思う。

で、XHTML のほうは
<html xmlns="URLリンク(www.w3.org)"> ... </html>
なってたら、html 要素は内部的には
名前空間 "URLリンク(www.w3.org)" + "html"
になってる。

名前空間無し + "html"

名前空間 "URLリンク(www.w3.org)" + "html"
は違ってる。なのでマッチしない。

そこで、>>260 に書いたみたく、XSLT の側でマッチさせる対象を後者の
ような名前空間 + "html" なものになるよう指定しなきゃいけない。

<html xmlns:xhtml="URLリンク(www.w3.org)"/>
と書いた場合は、<html の html は「名前空間無し + "html"」になる。
プリフィックスで xhtml に "URLリンク(www.w3.org)" を割りあててる
から、これはデフォルトプリフィックス使ってる <html そのものには影響しない。

265:”削除”後の260
04/03/29 18:58
(´・ω・`)

266:nobodyさん
04/04/02 00:28 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="URLリンク(www.w3.org)" xmlns="URLリンク(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="URLリンク(www.w3.or)">
<body>This is a pen!</body></html>
と出力させたいんだけど、
<html xmlns="URLリンク(www.w3.or)">
<body>Thisisapen</body></html>
実際にはこう。どなたか知恵をお貸しください。おながいします。

267:nobodyさん
04/04/02 03:16
'!'あたりを見ると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
化けた。スマン。
<xsl:when test=".='&#10;'">
全角を置き換えて。

269:266
04/04/02 20:40
ありがとうございました。"!"は拾ってくれるようになりました。
<html xmlns="URLリンク(www.w3.or)"><body>
Thisisapen!
</body></html>
しかし、上のように単語間のスペースは拾われないみたいです。
おっしゃるとおりXSLTはまだかじりたてなので、自分でも調べてみます。

270:nobodyさん
04/04/02 20:50
自己レスです。xmlのほうのbodyタグに
xml:space="preserv"
と属性を加えたら期待通りの結果が得られました。
重ね重ねありがとうございました。

271:267
04/04/02 21:33
<xsl:preserve-space>というタグがありますけど…
あとxhtmlの識別子が間違ってますよ。


272:nobodyさん
04/04/08 12:47 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で○があるもの
というのはどう表記されるでしょうか?


273:nobodyさん
04/04/08 13:10
>>272
よく読んでいないけれど、ツリー構造の変更は XSL ではなくて、
DOM じゃないのか?

274:nobodyさん
04/04/08 16:06
>>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以下が効率悪そうだけ
ど。(.,'○')が顔文字にしか見えないのが欠点。


275:nobodyさん
04/04/08 18:38
>>257
遅レスですが
<xsl:copy-of select="document('')/...."/>
ってこと?テンプレートとしては使えないけど。使えても意味ないけどね。


276:nobodyさん
04/04/09 10:37
>>274
ありがとう。
元の処理に教えていただいたコードを入れて動かしたいと思います。

277:nobodyさん
04/04/18 17:14
>>275
いや、C言語とかだと自分自身を出力するプログラムが書けるんですが
URLリンク(www.ice.nuie.nagoya-u.ac.jp)
xsltの場合ネームスペースとかの関係で無理なんじゃないかと思って。
でもネームスペースを明示的に指定してやればできるのか?

documentで参照するのはアリなのかなぁ。

278:nobodyさん
04/04/18 21:38
>>277
document('')で自分を参照するのは割と普通に使いますよ。自分は、ですが。
使ってるソースを目にすることもあります。

参照したデータはテンプレートとして使われることはないのでネームスペース
は(自分の少ない知識の範囲内では)そんなに問題にならないと思います。た
とえば

<xsl:template match="/">
<xsl:copy-of select="document('')//xsl:template[@match='/']"/>
</xsl:template>

これでも無限ループになる事はないです。もちろんこんなの意味ないので、別
のネームスペースを使って設定ファイル的なことをする方が一般的だと思います。


279:nobodyさん
04/05/07 01:25
XSLTXTって使ってる人いますか?
URLリンク(xsltxt.dev.java.net)
URLリンク(www.zanthan.com)

とりあえず < とか書かなくていいのがいい。

280:nobodyさん
04/05/07 01:26
あ、&lt; です↑

281:nobodyさん
04/05/09 20:35
>>279
> とりあえず < とか書かなくていいのがいい。
まともな XML オーサリングツール使えよ。

282:nobodyさん
04/05/27 16:04
<li a="2300" b="hoge"/>
<li a="jiro" b="もっこり"/>
<li a="義雄" b="boke"/>
といったようなリストがあったとして、
属性b の値が hoge の時だけ 属性a の値を取りたいんですけど、
xpathではどうすればいいのでしょうか?

283:nobodyさん
04/05/27 19:38
>>282

li[@b='hoge']/@a

かな。

284:nobodyさん
04/06/04 12:24
<a>
 <b>bbb</b>
 <c>ccc</c>
</a>
こんな感じのものを、「<b>要素が存在すればattributeにbを書き、<b>要素が存在しないまたは<b>要素の中身が空の場合はattributeにcを書く」というふうにしたいのですが、
<xsl:attribute name="foo">
 <xsl:choose>
  <xsl:when test="条件">
   <xsl:value-of select="b" />
  <xsl:/when>
  <xsl:otherwise>
   <xsl:value-of select="c" />
  <xsl:/otherwise>
 </xsl:choose>
</xsl:attribute>
whenの条件にどのように書けばいいのでしょうか?そもそもchooseは間違っているのでしょうか?

285:nobodyさん
04/06/04 17:41
>>284
test="b and not(b='')"
単に "not(b='')" だけでいいかも。

286:284
04/06/04 20:42
>>285
> test="b and not(b='')"
うまくいきました!感謝!!

287:nobodyさん
04/06/10 09:00
1ページの表示件数を10とかに指定して、
続きは<a>で次のページを表示させる…ってことは、
xsltでできるんでしょうか?
それともほかのプログラムと組み合わせたほうが賢明なんでしょうか?

288:nobodyさん
04/06/11 16:14
サーバーサイドでやればできる。実際動かしてみたことある。
しかし素直にDOMとか使った方がいいかと。

289:287
04/06/11 20:00
>>288
DOMっすかあ・・・。
最近XMLに興味を持ち始めて、あとPHPも気になりだしたような、
プログラミングなんてまったくできない人間なので。
これから勉強していきたいと思います。ありがとう。


290:nobodyさん
04/06/11 21:21
俺も一年くらい前からそんな感じで勉強してます。

291:nobodyさん
04/06/14 05:46
PHP を使おうとは思うんだが、サーバーで動的生成か、ローカルで静的生成かで迷ってる。
ブログ程度なら静的にすべきなのかな。でも、動的だとコンテントネゴシエーションとかブラウザ振り分けなどの恩恵が……うーむ。

292:nobodyさん
04/06/14 06:23
blog≠xml blog∩xml=Φ
blog≠xslt blog∩xslt=Φ

だと思うけど、違うのかな

293:nobodyさん
04/06/14 06:47
>>292
Φ (ファイ) が何を意味するのかは俺には分からんが、>>291 の日本語に混乱していると推測してみた。

PHP で XSL 変換してブログを行おうと思うんだが、クライアントごとに逐一サーバーで動的変換しようか、ローカルで HTML ファイルなどを静的生成しようか迷ってる。
商用サイトなどならともかく、ブログ程度なら静的に行うべきなのかな。
でも、動的だとコンテントネゴシエーションとかブラウザ振り分けなどの恩恵が……うーむ。

294:nobodyさん
04/06/15 10:23
Φは空集合やろ

blog∩xslt = Lenyaに附属してたblogのサンプル
だと思うが、出来はいまいちだった

295:nobodyさん
04/06/23 11:34 1zBprzUE
<item id="a">
 <created>2004-01-03T00:00</created>
 <modified>2004-01-04T00:00</modified>
</item>
<item id="b">
 <created>2004-01-02T00:00</created>
 <modified>2004-03-01T00:00</modified>
</item>
<item id="c">
 <created>2004-02-01T00:00</created>
</item>

これら item 要素の子 created・modified 両要素の内容を選別して親の item 要素を新しい順 (b・c・a) に並べ替えたいのですが、例えば以下のように xsl:sort 要素を使ってもうまくできません。

<xsl:apply-templates select="item">
 <xsl:sort select="created or modified" order="descending"/>
</xsl:apply-templates>

助けてくださいお願いします。

296:nobodyさん
04/06/23 14:51
>>295
"or"は論理演算子だからここで使っても意味ないよ(T/Fが返ってくる)。

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

でどう?

297:295
04/06/23 14:59
>>296
ありがとうございます。出来ました。

298:nobodyさん
04/06/25 16:19
xsl:copy-of で属性値を取得できません。
xsl:value-of なら属性値を取得できました。

-- xml --
<a href="URLリンク(example.org)"> example </a>
-- xsl --
<xsl:copy-of select="/a/@href" /> <br />
<xsl:value-of select="/a/@href" /> <br />
-- output --
<br />
URLリンク(example.org) <br />
--

xsl:copy-of を使用して属性値を取得する方法をご存知の方がいらっしゃいましたら、
その方法をお教え下さいませ。

299:nobodyさん
04/06/26 05:29
それだと copy-of でコピーされるのは属性ノードだからそのままでは出力で
きない。どうしてもしたいならこんな感じで、

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

非ノードにしたものを渡せばよい。でも value-of のほうが適切。

300:298
04/06/26 21:02
value-of を使うことに致します。ありがとう

301:nobodyさん
04/07/03 03:02
次のようなXMLデータがあるとき、
name="foo"の前後のitemのname属性値を表示するようなXSLTはどう書けばいいんでしょうか?

<list>
<item name="hoge" />
<item name="foo" />
<item name="bar"/>
</list>

302:nobodyさん
04/07/03 04:31
<xsl:value-of select="item[@name='foo']/preceding-sibling::item[1]/@name"/>
<xsl:value-of select="item[@name='foo']/following-sibling::item[1]/@name"/>
かな。試してないけど。


303:301
04/07/04 00:41
>>301
それで成功しました。
ありがとうございます。

304:nobodyさん
04/08/25 17:25 ly9L2Z7D
<root>
  <mage>
    <mage>
       <take>
  <toge>
みたいな構造になっているXMLファイルがあって(上では閉じタグ省略)、
いまrootから何階層目にいるのかを知るにはどうしたら良い?

305:nobodyさん
04/08/25 18:19
>>304
count(ancestor::node())
でどうよ?

306:nobodyさん
04/09/06 20:13 koFx6bH6
天気予報は既存の配信ビジネスを守るためにRSS配信できない
URLリンク(neta.ywcafe.net)

国民の税金で気象データの収集・解析までしておきながら、
気象庁の官僚の天下り先である
・財団法人 気象業務支援センター
・財団法人 日本気象協会
の利権保護の為、未だRSS配信が拒まれているのだ。
将来的に行われるであろう地震予知の情報も、有料で国民に販売するつもりだろうか?

307:nobodyさん
04/09/07 09:26
二重徴税で叩けないのかな。

308:nobodyさん
04/09/07 09:29
>>306
是非はともかくそんなとこのソースを元に騒いでんの?w

309:nobodyさん
04/09/07 14:14
XMLのスレにマルチしまくってるから放置しとけ

310:nobodyさん
04/09/07 17:02
>>307
じゃあまずガソリンスタンドをたたいてくれ。

311:nobodyさん
04/09/07 21:05
気象庁職員必死だな(w

312:nobodyさん
04/09/08 11:32
306,307 は気象庁を、
310 はガソリンを、
308,311 は住民を、
各自、自由に叩いてください。
313 は XSL/XSLT ネタ、よろしく。

313:nobodyさん
04/09/09 02:59
気象庁住民はガソリンで逝ってよし。

314:nobodyさん
04/09/09 09:57
XSL/XSLT/ネタではなく
XSL/XSLTのネタよろしく。

315:nobodyさん
04/09/24 05:09:23 /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"がほしいです。
共通の親をすべてならなんとかなるのですが、
その中で最初にマッチする親だとさっぱりわかりません。
よろしくおねがいします。

316:nobodyさん
04/09/25 10:50:09
>>315

(descendant::c[. = 'foo0']/ancestor::*[./descendant::c[. = 'bar1']])[last()]/@id

317:316
04/09/26 08:08:17
後で考えたら、えらい無駄な事をしてるな、と。
/descendant::c[self::node() = 'foo0']/ancestor::*[descendant::c = 'foo1'][position() = 1]
これでも、共通且つ最初にマッチする先祖を得られると思う。


318:315
04/09/27 04:31:18
>>316
ありがとうございます。いけそうです。
再帰ばっかり考えてました。

自分のXPath能力の無さに(´・ω・`)ショボーン

319:nobodyさん
04/09/28 17:39:48
質問です。

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

現在はこんなコードを書いてます (エラーになります)
<a href="{concat('javascript:foo(', ''', @bar, ''', ')')}">

320:319
04/09/28 17:41:28
>>319
化けてしまいましたが、''' のところは '&apos;' です。

321:319
04/09/28 18:03:41
>>319
<xsl:attibute> を使えばいいのですね。自己解決しますた。お騒がせしました。


322:nobodyさん
04/09/28 20:00:16

こういう事ですね?
<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>


323:nobodyさん
04/10/11 13:28:18
XSLT Standard Library
URLリンク(xsltsl.sourceforge.net)

exsltみたいなライブラリ集だけど、こっちの方が実用的?

324:nobodyさん
04/10/14 23:53:23 DOJgSO2G
XML SchemaからXSLTの雛形というかスケルトンというか
土台を出力してくれるようなツールって無いでしょうか?
フルスクラッチで作るの、面倒じゃないですか?

325:nobodyさん
04/10/15 00:48:57
>>324
スレ違いか
スレリンク(hp板)


326:nobodyさん
04/12/06 00:30:36
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という値を渡す方法ってあるのでしょうか?


327:nobodyさん
04/12/06 15:30:17
何言いたいんだかようわからん

328:nobodyさん
04/12/06 15:34:45 jrlDRA4f
URLを打ち込むときに
data1.xml?id=0と打ち込み、ID=0の商品に関する情報だけを
表示したいんです。
URLで打ち込んだデータをXSL内の変数に取り込みたいのです。
現在だと、hrefつかってもIDの数だけxmlファイルを作成しないと
いけなくなってしまうんです。

329:nobodyさん
04/12/23 23:41:54
>>328
今更ながら、xsltで全て作成してjavascriptでlocation.queryから引数受け取ってwindowのロード時に違うノードサクージョ

330:nobodyさん
05/01/08 15:33:14
すいません質問があります。
MSXSLを用いて変換を行おうとしているのですが
コマンドを打ち込んだときに

必要な属性'{URLリンク(www.w3.org)' が見つかりません

という変なエラーメッセージが出てしまいます。これはどうすればいいんでしょうか?

331:nobodyさん
05/01/08 17:10:58
330ですが
解決しちゃいました どうもです

332:nobodyさん
05/01/10 19:16:25
すみませんが誰かご教授下さい。 (マルチポストで申し訳ありません)

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を教えていただきたいのです。

よろしくお願いします。

333:nobodyさん
05/01/10 19:48:07
アホか。マルチポストに返答するわけ無いだろ。

334:nobodyさん
05/01/22 19:16:33 WsL3wQoU
<xsl:stylesheet xmlns:xsl="URLリンク(www.w3.org)(ry xmlns:aws="URLリンク(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">

335:334
05/01/22 19:17:52 WsL3wQoU
ああっ、途中で送ってしまった… orz

>>334のようにやると下のテンプレートの中身へ行かない?ようなのですが
どこに問題があるのでしょう?

336:nobodyさん
05/01/24 03:30:34
>>332
もう解決してるのかもしれんが
//ele[not(@id=following-sibling::node()/@id)]/@id
とかでどうすか?

337:nobodyさん
05/01/30 14:52:43 0RSaGusl
xmlをエクセルから作ってるんですが、日付が1900年形式でだされてしまいます。
それを表示する際に、dd-mmm-yyのフォーマットで表示したいんですが、どうすればよいでしょうか?



338:nobodyさん
05/01/30 20:37:49 0RSaGusl
URLリンク(exslt.org)のテンプレート使ってやってみたんですが
すごい遅くなりました。前もってデータを変換してXMLをつくった
方が良さそうです...

339:nobodyさん
05/04/09 23:05:41 0FjmIeSR
ノード名じゃなくて値がQNameのときに、それが特定のNSに属してるかってどうやって判断できる?

<先祖のどこか xmlns:x="URLリンク(pc8.2ch.net)">
...中略...<ここ この属性の値をチェックしたい="x:999654569"/>

node系関数のnamespace-uri()は値は見れないし、
string系の関数じゃ、xが本当にURLリンク(pc8.2ch.net)なのかわからん。

ずうっと名前空間宣言を全部フォローして自分で覚えとくしかないのか?

340:nobodyさん
05/04/21 17:08:59
XMLもXSLもXSLTも何も知りません。


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


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

というように表示するにはどうすればいいでしょう

341:nobodyさん
05/04/21 18:15:48
>>340
> XMLもXSLもXSLTも何も知りません。
勉強しろ。アフォか。

342:nobodyさん
05/04/21 22:02:56
System.out.println("1が付いているのはA・C");
System.out.println("2が付いているのはA・B");
System.out.println("3が付いているのはB");


343:nobodyさん
05/04/21 23:30:22
いや>>340的にはこっちのほうがわかりやすかろう。

MsgBox "1が付いているのはA・C", vbInformation
MsgBox "2が付いているのはA・B", vbInformation
MsgBox "3が付いているのはB", vbInformation


344:nobodyさん
05/07/29 15:21:12
デフォルトの名前空間が指定されている時、プレフィックスの無い Element は XPath でどう表現すればいいの?

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="design.xsl"?>
<hage:root xmlns="URLリンク(example.com)<)">
<item1>あいうえお</item1>
<item2>かきくけこ</item2>
</hage:root>

こんな XML から "あいうえお"を取り出したいんだけど /hage:root/item1 じゃうまくいかないみたい。

345:nobodyさん
05/08/04 10:02:40
スタイルシート側(desin.xslのことか?)の名前空間の設定はどうなってる?
携帯だからアドバイスしづらいな…。

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

携帯からだから妙ちくりんな書き方になったが頑張ってくれ
んじゃ

346:nobodyさん
05/08/14 13:37:07 XDX8Ip5H
質問です。

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

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

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

携帯サイトを運営しているのですが
UTF8じゃ文字ばけするぞゴラァ!という
クレームが多くて困ってます。

347:nobodyさん
05/08/14 15:10:24
>>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="URLリンク(www.w3.org)">
  <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>

348:nobodyさん
05/08/14 18:40:08
>>347

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

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

結果報告

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

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

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

つまり 今まで見えてた①②は見えなくなりましたが
③は見えるようになりました。

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

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



349:nobodyさん
05/08/14 18:50:00
>>348
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
を挿入してみたらどうですかね。

350:nobodyさん
05/08/14 19:36:51
>>348
phpでサーバサイドでのXSLT変換か。取りあえず、UTF-8からShift_JISへの変換はできたみたいだね。

phpの話になってスマンが、もしかして、header('Content-Type: text/html; charset=UTF-8');とかなってる?
header('Content-Type: text/html; charset=Shift_JIS');にしてみたら、もしかしたら動くかもね。

351:nobodyさん
05/08/14 22:31:27
>>349
>>350

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

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

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

(ちょちょっとPHPのXMLパーサ関数でやってみましたが、できそうです。)

352:344
05/08/17 20:33:45
>345
わざわざ携帯から長いレスをサンクス
俺のレスの前が3ヶ月前だったので回答は期待できないと思ってスレみてなかったよorz

結局質問してから別の場所で答えを見つけたんだけど、
XSL で XPATH 書いても XSL で定義した既定のネームスペースは XPath には適用されないってことなんだよな。
なんでそんな変な仕様なのか理解に苦しむけど。
てことで、 XML の既定のネームスペースを XSL 側では Prefix 付きで定義することで解決しました。


353:nobodyさん
05/08/18 19:39:40
ちょっとYOUはまだ勘違いしてるかも…。そこらへんはXSLTはまともな仕様でつよ。
もっと名前空間のよさを感じてちょうだい!!!!

そして私は

354:344
05/08/18 22:02:59
URLリンク(www2.xml.gr.jp)
あたりを見て >352 のような結論に至ったわけだが、なんか勘違いがある?と思って
改めてリンク先のスレッドを読んでると
URLリンク(www2.xml.gr.jp)

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

> そして私は
続きが気になるよ(´・ω・`)


355:初心者
05/09/04 03:53:09
どうか教えてください。
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="URLリンク(images.amazon.com)" width="xxx" height="xxx" alt="xxx">になってしまい、閉じタグをいれることができません。
xsltでどう指定すると閉じタグをいれることができるのでしょうか?

356:nobodyさん
05/09/04 10:59:31
<xsl:output method="xml"/>
をxsl:stylesheetの直下に入れる、かな。
XHTMLでないHTMLとして出力されていると思われ。

357:初心者
05/09/05 02:29:25
>>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:初心者
05/09/05 02:47:17
ゴメンナサイ。
ググったら見つけました。

<xsl:output method="xml" omit-xml-declaration="yes" /> とすると、XML 宣言をしないようにできるようですが
実際には出力されてしまいます。
なにかおかしいですかね?

359:nobodyさん
05/09/10 01:33:29
どっちでもいいけど
alt="{$変数名}"
とは書かないの?
call-templateする予定があるとか??
あと最初以外にXML宣言入るのは文法の問題あるよ。
ただUAが無視してくれているだけだけど。

360:nobodyさん
05/09/29 03:07:41
age

どなたかXSLT2.0の話でも…

361:nobodyさん
05/09/29 11:45:59
XSLTとDSSSLのいいとこどりみたいなXSieve
URLリンク(xsieve.sourceforge.net)

362:nobodyさん
05/10/01 21:07:44
今アマゾンウェブサービスでXSLファイルを書いてるのですが
何故かVersion=2005-09-15だと、StyleにXSLファイル指定してもうまくいきません。
AWSでXSLやるときの条件みたいなものって何かありますか?

363:nobodyさん
05/10/04 17:41:50 otfuFaaW
XSLTを書いていると、かなり長くなってしまったんですが、XSLTファイルをモジュールや関数みたいに分割することはできますか。
仕様書をみたけど、それらしい機能が見つかりませんでした。

364:nobodyさん
05/10/04 21:01:50
xsl:include, xsl:import


365:nobodyさん
05/10/04 21:53:53 otfuFaaW
>>364
ありがとう。スタイルシートの取り込みってあったから、てっきりCSSのことだと思ってた。
XSLTファイルじたいがスタイルシートなのね。べんきょうになりますた。

366:nobodyさん
05/10/15 16:29:33 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の名前で参照するにはどうやればよいのでしょうか。



367:サッカー少年大好き
05/10/15 17:00:04
/child::A/child::*[attribute::key='str']/attribute::value

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

結論を言うと、XPathの勉強をおすすめする。

368:訂正
05/10/15 17:04:51
child::*はchild::Bにした方がいいかもしんね。
strにはkeyの値を入れるんだよ。

369:nobodyさん
05/10/15 21:29:57
出来ましたありがとうございます。
本来なら勉強しなきゃいけないんですが、助かりました。

370:nobodyさん
05/10/17 19:35:15 SiiJse0Y
ソースは
URLリンク(www.wakkaya.com)
URLリンク(www.wakkaya.com)です。

まず、
<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と表示されますか?
どなたかご教授下さい。何卒宜しくお願い致します。

371:nobodyさん
05/10/17 20:58:48
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>

372:370
05/10/17 23:18:37
>>371
うまくいきました!
本当に助かりました。有り難う御座います。

373:370
05/10/18 08:05:21
連続質問ですみません。ソースは引き続き
URLリンク(www.wakkaya.com)
URLリンク(www.wakkaya.com)です。

今度は、<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から始まります。
対処法をお教え頂けませんでしょうか?本当に度々ですみません。

374:nobodyさん
05/10/18 12:21:24
>連続質問ですみません。ソースは引き続き
とか書くと相手にされない件

375:nobodyさん
05/10/18 16:18:41 EpeUQJeg
XSLTで変数使えるのは分かったんだけど、

「x=x+1」のような

インクリメントってできないの?


376:nobodyさん
05/10/18 16:58:00
>>373
371と同じ。

377:nobodyさん
05/10/18 23:23:32
>>375
マルチポストですね?

378:nobodyさん
05/10/19 15:52:23 HblKNOzD
>>374
すみません。気を付けます。

>>376
アドバイスあるが等御座います。
もすこしfor-each やifやwhen勉強して出直してきます・・・

379:nobodyさん
05/10/19 16:32:01
そっちよりもXPathを覚えるほうがいいかと。

380:nobodyさん
05/10/20 13:50:48
>>379
仰せの通りXPathについていろいろ調べたことろ、

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

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

これを機会にXPathを精進・・

381:nobodyさん
05/10/22 08:44:56
>>380
ていうかお前にはxmlはおろかwebそのもののセンスも無いからやめとけ

382:nobodyさん
05/10/22 20:01:27
遅すぎるお前のレスもセンスがねーよw 2chやめろな。

383:nobodyさん
05/10/23 01:17:07
ん?逆切れかマケウチ君

384:nobodyさん
05/10/23 20:44:14
>>380
低脳が。センスのないHPもさっさとたたみな
キモイんだよ、デザインが

385:nobodyさん
05/10/24 09:48:44 3//Wc9qN
HPって「たたむ」って表現するんだ・・・初めてしったよ

386:nobodyさん
05/11/11 13:59:20 nEB8ZVf7
xreaでサーバーサイド変換て出来るんですか?

URLリンク(www.atmarkit.co.jp)

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

URLリンク(sb.xrea.com)

どう見ても無理です。

本当にありがとうございました

387:385
05/11/11 14:02:26
>>386
と思ったらもうインストローリングされてました。
私の記述ミスです。

本年もよろしくご指導のほどお願いいたします

388:nobodyさん
05/11/11 14:10:06
インストローリング の検索結果のうち 日本語のページ 約 286 件

389:nobodyさん
05/11/11 20:58:02
ローリングストーンズのヴォーカル無い曲。

390:nobodyさん
05/11/17 02:28:40
バージョン2が勧告候補になりますた。
早めに勉強しましょう。

391:nobodyさん
05/11/17 08:43:17
>>390
新機能とか変更点を簡潔に説明したサイト教えてけれ。

392:nobodyさん
05/11/18 17:50:43
URLリンク(pcweb.mycom.co.jp)

393:nobodyさん
05/12/13 01:57:44
>>344
数ヶ月ぶりに自己レス

/[local-name()="root" and namespace-uri()="URLリンク(example.com)"]/item1

でどうだろう?


394:nobodyさん
05/12/14 09:14:43
>>393
いや、だから>>345がスタイルシートの中でURIが一緒な
任意のプリフィクスを付けろとアドバイスしてるだろう。
なんでそんな面倒なことするの。しかも間違ってるし。

395:nobodyさん
05/12/14 11:59:03
>>393
まず名前空間から勉強し直せ、ゴラァァ!!

396:nobodyさん
05/12/15 20:20:47
>>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で使用されるお。
・シーケンスっつーのはアイテムたちの順序ある並びだお
・アイテムというのはノードと、リテラルチックな”値”のことだお

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

397:nobodyさん
06/03/04 02:07:19 c1CTCPap
某所より誘導されました。
XSLT(XPath)で、Textや属性のQNameってどうやって調べれば良いんでしょうか?
例えば、
<ns0:boards xmlns:ns0="URLリンク(2ch.net)<)"でローカル名が"webprog"の値を持つboard要素」って、
どうやって調べればよいのか…。
全然知らないんですがXPath1.0じゃだめでXPath2.0の●●じゃないと無理とかあるんでしょうか。

398:nobodyさん
06/03/04 02:08:42
訂正
×「値が、…
○「属性値が、…

399:nobodyさん
06/03/04 08:57:04
>>397

何故、属性値の内容が展開されるんだ?
基本的にはstringだろ?


400:nobodyさん
06/03/04 09:38:14
>>397
詞ね

<xsl:template match="/boards/board[@nick=concat(name(namespace::*[.='URLリンク(2ch.net)']),':webprog')]">
<xsl:value-of select="@nick"/>
</xsl:template>

401:nobodyさん
06/03/04 09:45:21
/boards/ns0:boards/;

402:nobodyさん
06/03/04 12:59:39
うひ(^_^;)
ありがとうございます。
頂いた答えをヒントにして、苦節1時間、やっと出来ました。

<xsl:template select="/ns0:boards/board/@nick[../namespace::*[local-name(.)=substring-before(string(../@nick),':')] and substring-after(.,':')='webprog']">
  <xsl:value-of select="."/>
</xsl:template>

しかし、なんでこんな普通の選択のためにゴリゴリ書くんでしょう…。
>>399が言ってることがまっとうで、
XSLT/XPath/XMLSchema?の仕様の方が逝かれてるのではないか、という気がしてきます…。


403:nobodyさん
06/03/04 13:01:00 c1CTCPap
>>399

XMLSchemaではQNameという型があります。>>397のnickのように使われます。
よく?使われる例は、
<hoge xmlns:xsd="URLリンク(www.w3.org)" xmlns:xsi="URLリンク(www.w3.org)">
 <value xsi:type="xsd:string">123456789</value>
</hoge>
だと、/hoge/value の値は、文字列”123456789”で、

<hoge xmlns:xsd="URLリンク(www.w3.org)" xmlns:xsi="URLリンク(www.w3.org)">
 <value xsi:type="xsd:int">123456789</value>
</hoge>
だと、/hoge/value の値は、32bit整数 123456789 で、

<hoge xmlns:tns="URLリンク(www.2ch.net)<)">
 <value xsi:type="tns:code">123456789</value>
</hoge>
だと、/hoge/value の値は、名前空間URLリンク(www.2ch.net)で定義されたcode型の123456789、
なんて事になります。

でも、その直感はあながち間違いでもないように思えるのは、>>402に書いたとおりです。

404:nobodyさん
06/03/04 19:16:02
値がドキュメントの構成から離れて利用できないこと自体が逝かれてる。
よっぽどのアホがこんな仕様作ったんだろう。

405:nobodyさん
06/03/05 07:39:58
>>403

なるほど、スキーマで使うのか
ボヘミアンな俺には縁が無さそうだが、
一つ勉強になった

でもよ、データ型が必要なら、それを前提としたもの、
例えば、XPath1.0より2.0を使った方がいいんじゃね?

貴族がボヘミアンを振る舞えったって、やっぱりぎこちないだろ

406:nobodyさん
06/03/05 14:59:23 noB5/pAr
データ型というか、QNameだけ特におかしいんだよ。
QNameの例としてxsi:typeの例を挙げたのが誤解されたかもしれんが。

スレリンク(tech板:108番)

XPath2.0だと
スレリンク(tech板:105番)
みたいに簡潔に書けるの?

407:nobodyさん
06/03/05 20:28:28
XPath1.0だどQName型と言う概念が無いから、string型で辻褄を合わせなきゃならんけど
2.0は型情報を前提としている貴族主義だから、QName型ならQName型で処理できるんじゃないかな。

...と言いつつ、俺もよく分からん。
でも、XSLT・XPath1.0ってのは「シンプル・イズ・ベスト」を信仰するボヘミアン派だから、
如何せんXMLSchemaとは相性が良くないと思う。

408:nobodyさん
06/03/07 00:42:38 s8zBddvo
貴族と浮浪者、どちらになりたいか、って話?

409:nobodyさん
06/03/07 06:40:25
他人と話がしたいなら一般的でない形容はやめたらどうだ?

410:nobodyさん
06/03/07 08:07:09
XMLユーザの貴族とボヘミアンって一般的でないのか?

411:nobodyさん
06/03/07 08:36:15
今すぐジャーゴンを使うのを止めろ

412:nobodyさん
06/03/07 20:15:46
皆中国語使用推奨

413:nobodyさん
06/03/09 23:33:25 dDByu5bB
XML 貴族 ボヘミアン の検索結果のうち 日本語のページ 約 510 件中 1 - 100 件目 (0.29 秒)


414:nobodyさん
06/03/10 10:59:20
>>413
510件という数字は多いのか?少ないのか?
Googleまで持ち出して何が言いたいんだ?







……という風に突っ込まれたくなければ意図不明瞭な一行レスをやめろ。


415:nobodyさん
06/03/10 11:15:50
自分の発言に自信が持てないから逃げ道を作ってるんだよ察してやりなよ
そしてスルーしてやりなよ

416:nobodyさん
06/03/10 11:27:58
みんなは貴族なの?
オイラはどうしても「型情報」って奴についてけねえだけどな。
DTD+DateTypeで十分だと思うがな...

417:nobodyさん
06/03/10 22:11:55
まぁついてこられない人が居るのは否定しないのが貴族

418:nobodyさん
06/03/18 20:53:13 eqYBhKgI
今ASP.NETでRSSの読み込み・表示をしているのですが
RSS1.0はとりあえず表示できたのですが、RSS2.0が全然ダメです
XSLTファイルのRSS2.0を表示させるソースってどこか公開されていませんか?

419:418
06/03/18 21:50:23
事故解決しました

420:nobodyさん
06/03/26 05:28:41 96nmrOTO
XSLT の処理結果ってどうやって確認してる?

IE5.x の頃だったかは
URLリンク(www.microsoft.com)
入れればバリデーションと結果のソース表示も出来たんだが、IE6 になって
から出来なくなったのかな?

421:nobodyさん
06/03/29 11:37:28 Bmnd//MP
<foo count="10" />

とある場合、特定の処理を @count 回ループさせたいんですがどうすれば良いんでしょうか?
ループカウンタ付きのループ for(i=0; i<@count; i++) みたいな感じなんですけど、<xsl:for-each> じゃ
要素とかの集合しか指定できないですよね?

422:nobodyさん
06/03/29 18:54:30
>>421

「XSLT 再帰処理」でGoogle検索してみれ

423:nobodyさん
06/03/29 19:18:29 Bmnd//MP
すげぇ、ループを再起呼び出しでやるとは気づかなかったw

424:nobodyさん
06/03/29 23:46:49
こいつは関数型言語みたいなもんだから
むしろ再帰の方が自然なんだな

425:nobodyさん
06/03/30 08:26:06
>>423
他の方法で、できんことも無いけど、再帰が真っ当。
これを制せば、XSLTをほぼ手中に入れられる。

426:nobodyさん
06/03/32 21:43:59 rvS9DXBc
ファイルメーカーのアプローチってどう思う?
ウェブプログラミングにxsltって有効?

427:nobodyさん
06/04/02 01:48:27
ファイルメーカーが何やってるか知らんが
静的な部分は XSL で、動的な部分は XML で作れるならデータ転送量を
最小限に押さえられるので有効だと思う。サーバの負荷分散にもなるし。
ただ未対応ブラウザに対応するなら逆に高くなるかもしれん。

428:nobodyさん
06/04/03 20:37:14
拡張関数(?)のexsltで本日の日付を取得したいのですが
クライアントサイドの一般的なパーサは対応しているのでしょうか?
処理としては要素の日付と本日の日付を比較して過去の情報は隠すという動きをさせたいです。
exsltが無理ならスクリプトでやってみます。

429:nobodyさん
06/04/06 09:20:31
>>428
クライアントサイドの一般的なパーサって、どんなん?
IEやMozillaに付いてくような奴だったら駄目じゃね?

430:nobodyさん
06/04/06 20:40:45
>>429
それです。

431:nobodyさん
06/04/06 20:45:52
IE の XSL 対応って 5.0 からだっけ? Mozilla はどこから対応してんの?

432:nobodyさん
06/04/07 20:37:45
XML → HTML で © や   は XSL にどう記述したら良いの?

433:nobodyさん
06/04/07 20:38:28 ds66Zruv
ありゃ、&copy; や &nbsp; は、です。

434:nobodyさん
06/04/08 01:20:46
URLリンク(www.w3.org)
ここを見て、copyなら&#169;, nbspなら&#160;と書くのが単純。


435:nobodyさん
06/04/08 01:25:53
39

436:nobodyさん
06/04/09 17:43:31


437:nobodyさん
06/04/11 14:38:23
XML + XSL で XSL って作れる?
一般ユーザ用と管理者用で XSL を分けてたんだが、2~3 のパラメータと条件分岐だけで
統合できそうなのが分かってきた。ただ一般ユーザには管理者用の XSL を見せたくないし。

438:nobodyさん
06/04/11 20:50:36
XSLからXSLを出力するならxsl:namespace-aliasとかでぐぐると良いよ。


439:nobodyさん
06/04/19 04:15:41
ブラウザごとの XSL 対応状況の一覧とか載ってるサイトご存知でしたら教えてたも m(_ _)m

440:nobodyさん
06/04/19 19:35:12
一生懸命変換PGを作っていたのにWord2003で出来ちゃうのね。。。

441:nobodyさん
06/04/19 20:30:42
``PG''……

442:nobodyさん
06/04/21 07:18:54
Firefox 1.0.7 (Linux) で <xsl:value-of> の disable-output-escaping="no" が
利かないみたいなんですけど何か振替策ないでしょうか?

443:nobodyさん
06/04/21 07:52:16
すみません、no じゃなくて yes です。ちょっとネットで漁ってみましたが
Mozilla 開発者連中は W3C の解釈だとか何とか言い訳付けて修正しないそうです (なんだそりゃ)。
結局の所、中で 2 回パースしてる部分が遅くなるだとか、XML+XSLで生成した HTML が Valid で
あるという前提で設計しちゃったので手を入れたくないとかってのが本音っぽい。

ふと思いついて JavaScript で innerHTML に設定してみたらとりあえず回避できたっぽいのでご報告まで。

<xsl:value-of select="foo" disable-output-escaping="yes" />
  ↓
<input type="hidden" name="" id="foo" value="{foo}" />
<span id="bar"></span>
<script language="javascript">
  document.getElementById("bar").innerHTML = document.getElementById("foo").value;
</script>


444:nobodyさん
06/06/02 14:43:12 H6C73k2s
御教授願います。
ループを回し表を作成したときに、1行毎に指定された内容をセットしてmailを送りたいのですが上手くいきません。

以下はループの内部処理です。
・$q_indexには表の登録番号(行番号)がセットされています。
・メールのテンプレートをjavaScriptで作成しています。

<xsl:variable name="url_id">url_<xsl:value-of select="$q_index"/></xsl:variable>
<A target="_blank" href="" id="$url_id" charset="">メール送信</A>
<script lang="javaScript">
$url_id.href='mailto:xxxx@xxx.co.jp?subject=' + [行毎に定義されたmailテンプレ];
</script>

最初は上記のように書いていました。
これで表を作ると、1件目はメールを送れたのですが、2件目以降メーラーが開かないというバグが発生してしまいました。
理由は<A>タグで定義してるIDパラメータが"$url_id"という文字列で固定されていた為です。
2件目以降も同じ名前が定義されている為エラーになっているようでした。

そこで下のように改造を試みたのですが、ここで問題が発生しました。

<xsl:variable name="url_id">url_<xsl:value-of select="$q_index"/></xsl:variable>
<A target="_blank" href="" id="<xsl:value-of select="$url_id"/>" charset="">メール送信</A>
<script lang="javaScript">
<xsl:value-of select="$url_id"/>.href='mailto:xxxx@xxx.co.jp?subject=' + [行毎に定義されたメールテンプレ];
</script>

この様にした場合、<A>タグのIDパラメータが不正となってしまいます。

お聞きしたいのは、<A>タグのIDパラメータに変数$url_idを定義したいのです。
どなたか上手い方法をご存知無いでしょうか?


445:nobodyさん
06/06/02 15:00:49 H6C73k2s
自己解決したので書いておきます。
直接変数内のデータを参照したい場合、{}で括ればいいらしいようです。

<xsl:variable name="url_id">url_<xsl:value-of select="$q_index"/></xsl:variable>
<A target="_blank" href="" id="{$url_id}" charset="">メール送信</A>
<script lang="javaScript">
<xsl:value-of select="$url_id"/>.href='mailto:xxxx@xxx.co.jp?subject=' + [行毎に定義されたメールテンプレ];
</script>


446:nobodyさん
06/06/06 05:01:30
$を文字列として使いたいんだけど、
どうすればいいの?

447:nobodyさん
06/06/06 19:27:27
<xsl:text>$</xsl:text>

<![CDATA$]]>

448:nobodyさん
06/06/06 19:27:57
間違ったーーー!!!

449:nobodyさん
06/06/06 20:29:03
>>447
これでうまくいきました。本当にありがとうございます。

450:nobodyさん
06/06/06 20:47:00
awsのxslの一部です。

- <Arguments>
<Argument Name="AssociateTag" Value="sfeesv-22" />
<Argument Name="ItemPage" Value="1" />
<Argument Name="SubscriptionId" Value="0QRaadwa2" />
<Argument Name="Keywords" Value="ハリーポッター" />
<Argument Name="ResponseGroup" Value="Request,ItemIds,OfferFull,VariationSummary,ItemAttributes,EditorialReview,Images,Reviews" />
<Argument Name="Operation" Value="ItemSearch" />
<Argument Name="Service" Value="AWSECommerceService" />
<Argument Name="SearchIndex" Value="Electronics" />
<Argument Name="Sort" Value="salesrank" />
</Arguments>

コレをxsltのfor-each分で値を返します。Argumentだけを抜き出します。

-----

<xsl:for-each select="aws:Argument">
<xsl:value-of select="@Name"/>
<xsl:value-of select="@Value"/>

</xsl:for-each>

-----

値がずらずらっと返ってきました。ここで<Argument Name="ItemPage" Value="1" />の部分だけ値を返したくないのですが、xsltにどのように書き加えればいいのでしょうか?

451:nobodyさん
06/06/06 21:24:43
<xsl:for-each select="aws:Argument[@Name != 'ItemPage']">

452:nobodyさん
06/06/06 21:25:20
自信ないから上手くいってもいかなくても教えてね

453:nobodyさん
06/06/07 00:01:38
>>451
ありがとうございます。
試してみた結果、ばっちり成功でした

454:nobodyさん
06/06/15 17:44:27 bh/U7SOR
XMLからXMLに変換したいんですけど、
XSLTに<xsl:output method='xml' encoding='SHIFT_JIS'/>
みたいな感じで書いているのに
出力されるXML宣言が<?xml version="1.0" encoding="UTF-16"?>
と出力されるのは何ででしょうか?

ちなみにXMLファイルの変換には
VS2005VC++でIXMLDOMDocumentPtrのtransformNode()を使用しています。

455:nobodyさん
06/07/10 11:50:48 AyMgINi+
えっと、XML 文書を XSL で HTML に変換し、
それに CSS を適用して見せるページを作っています。
意図するように見えているのですが、
Firefox がどのような HTML に変換しているのかを
確認したいと思っています。

Firefox で XSL による変換結果をファイルに
保存することってできますか?
つまり XSL 適用後の文書を保存したい、
Firefox を単に XSL プロセッサとして使いたいのです。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch