トップページphp
340コメント124KB

XML

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 NGNG
PHP で XML を利用するスレ

php Javaページより「XML関連情報」
http://www.cityfujisawa.ne.jp/~louis/apps/phpfi/xml/
0101.com masterさん02/08/12 16:44ID:UdGcdsPU
漏れのIE6も<br/>を無視するぞ。

test.xml------------------------------------
<?xml version="1.0" encoding="Shift-JIS" ?>
<?xml-stylesheet type="text/xsl" href="test.xsl" ?>
<nanashi>
1<br/>
2<br/>
3<br/>
<nanashi>

test.xsl------------------------------------
<?xml version="1.0" encoding="Shift_JIS" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.01" encoding="Shift-JIS" indent="yes" />
<xsl:template match="/">
<html>
<body>
<xsl:value-of select="." />
</body>
</html>
</xsl:template>
</xsl:stylesheet>
0102nobodyさん02/08/12 16:55ID:I4N87l8f
ぜんぜんIEのせいじゃないし。
おなじ間違いしてる人がいるからここみな。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1639&forum=9&4
0103nobodyさん02/08/12 21:35ID:???
<br />
じゃないのか。
0104nobodyさん02/08/12 21:38ID:???
そういうことじゃない。
0105nobodyさん02/08/12 22:32ID:???
ここにいる連中のレベルは底が知れているな。
0106nobodyさん02/08/17 21:07ID:???
 
0107nobodyさん02/08/21 14:32ID:Opn2Rq2W
89 :nobodyさん :02/08/08 10:49 ID:???
<xsl:variable name="hoge">AAA</xsl:variable>
$hoge

とやっても変数がうまく使えないんですが。


90 :nobodyさん :02/08/08 11:05 ID:???
あと、$hoge + 3 を $hoge_new に代入したい場合はどう書けばいいんですか。
0108nobodyさん02/08/21 16:00ID:???
>>107
> とやっても変数がうまく使えないんですが。

うまく使えない、って言い方が曖昧。どううまく使えないんだ?
などと意地悪いっても仕方がないので、予測で回答。

> <xsl:variable name="hoge">AAA</xsl:variable>
この書き方だと、hogeにはAAAというテキストノードを持つ”ノード集合”が割当たってることになる。
単純に文字列AAAを割り当てたいなら、
<xsl:variable name="hoge" select="AAA" />
とすべき。

> あと、$hoge + 3 を $hoge_new に代入したい場合はどう書けばいいんですか。
単純に<xsl:variable name="hoge_new" select="$hoge + 3" />でイイと思うが。
つか、パラメーター渡しなら<xsl:param>と<xsl:with-param>の方がイイと思うが。
0109nobodyさん02/08/22 09:49ID:zTnODq90
>>108
レスありがとうございます。
えっと、「うまく使えない」というのは
変数を当然参照したいわけなんですが、まずはただ単純に変数に値を入れて
それをxmlで表示しようとしています。
しかし、
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:param name="hoge" select="5" />

<xsl:template match="/">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
<title>練習</title>
</head>
<body>
$hoge
</body>
</html>
</xsl:template>
</xsl:stylesheet>
とやっても$hogeのところはそのまま「$hoge」としか表示されないのです。
たぶん馬鹿なことやってると思うので指摘してもらえればと思ってます。
最終的に、xmlから特定の値を見て$hogeに代入→$hogeに数値を足して$hoge_newに代入→それを表示する
という感じにしたいのです。
0110nobodyさん02/08/22 11:58ID:???
すいません、調べたらできました。
<xsl:value-of select="$hoge"/>
こうやらないとだめだったんですね。
0111nobodyさん02/08/22 14:15ID:zTnODq90
<xsl:param name="counter" select="1" />
<xsl:for-each select="./ほげ">

<xsl:param name="counter" select="$counter + 1" />
<xsl:value-of select="$counter"/>

</xsl:for-each>

繰り返しを何回したか知りたいので回数を知ろうと思ったんですけど
これだとエラーが出ちゃいます。
おそらく<xsl:param name="counter" select="$counter + 1" />
がいけないんだと思うんですが。$counterに1を加えてさらにcounterに代入してるのがいけないんですかね。
0112 02/08/22 14:36ID:???
Internet Explorer Can Read Local Files (XML Datasource)
http://www.securiteam.com/windowsntfocus/5OP0H2K80I.html
<html>
<head>
<base href="file:///C:/">
</head><body>
<!--let code="com.ms.xml.dso.XMLDSO.class" width="0" height="0" id="xmldso" MAYSCRIPT="true"
<?xml version="1.0"?
<!DOCTYPE file [ <!ELEMENT file (#PCDATA)
<!ENTITY contents SYSTEM "file:///C:/jelmer.txt"
] <file
&contents;</file
</appl-->
<!--ipt language="javascript" setTimeout("showIt()",2000);
function showIt() {var jelmer = xmldso.getDocument();
alert(jelmer.Text);}
</scri--></body></html>
011310802/08/22 16:30ID:???
>>111=>>109?
for-eachって、select属性で指定したノードの数だけループするわけでしょ。
そしたらループする数を数えるんじゃなくて、そのノードの数でもよいのでは?
つまり、
<xsl:variable name="conter" select="count(//ほげ)" />
(何処で定義するのかワカランから、とりあえずxsl:stylesheet直下で定義して使えるよう「//ほげ」とした)

これじゃダメ?
011410802/08/23 12:26ID:???
>>113自己レス。

> >>111=>>109?
ID見れば一目瞭然でしたね。

> そしたらループする数を数えるんじゃなくて、そのノードの数でもよいのでは?
と思ったのは、>111で「繰り返しを何回したか」ってのを「繰り返しを”最終的に”何回したか」
という風に読んだため。「今何回目?」はこれじゃダメですよね。
そういう場合はposition()関数使うか、xsl:numberエレメント使ってみてください。
<xsl:variable name="counter" select="position" />とか
<xsl:variable name="counter"><xsl:number count="ほげ" /></xsl:variable>とか。

でも、どっちも<xsl:template match="ほげ">〜</xsl:template>内でしか使えないけど。
0115nobodyさん02/08/23 14:23ID:???
>>114
何度もすいません。
<xsl:variable name="counter"><xsl:number count="ほげ" /></xsl:variable>
このやり方でうまくいきました。
どうもありがとうございました。
0116nobodyさん02/08/23 15:43ID:???
<xsl:variable name="hoge" select="name()"/> と、
ある変数を宣言してから、別のテンプレートをapplyして、その中から
先ほどのhogeを取り出したいのですが、参照できない・・・これが
いわゆるスコープなんでしょうか?

だったらというんで、
<xsl:variable name="hoge">
 <xsl:value-of select="name()"/>
 <xsl:apply-templates select="なにか" />
</xsl:variable>
を思いついたんですが、冷静に考えるとダメ。
お馬鹿ですみません、良い方法はないものでしょうか。
0117nobodyさん02/08/23 16:45ID:???
xmlでデータ構造を決めてxslでレイアウトするわけですが、
レイアウトが複雑なほどxslでのコーディングは大変になります。
これは当然だと思うのですが、
xmlのデータ構造をxslをコーディングする時のことを考えて
やりやすいツリー構造にするというのはやはり当然なのでしょうか。
xmlはデータの構造、意味が大事だと思うのですが、
xslの時の事を考えて少しくらいやりやすい用に変えるというのはありですか?
使いたい値を
<hoge value="1">
<aiu></aiu>
</hoge>
の属性valueのように用意しておくとか。
011810802/08/23 16:45ID:???
>>116
> いわゆるスコープなんでしょうか?
そうです。で、こういう時こそパラメータ渡しでしょう。

<xsl:apply-templates select="なにか">
 <xsl:with-palam name="hoge" select=name()" />
</xsl:apply-templates>

<xsl:template match="なにか">
<xsl:palam name="hoge" />
<!-- 適当な処理を。ここで$hoge使って参照できます。 -->
</xsl:template>
0119nobodyさん02/08/23 17:14ID:???
>>118
あっ、パラメータとしてテンプレートに渡せるんですね。
ありがとうございます。やってみます。
(学校でXSLTバイブル借りてきて必死で読解中;)
0120nobodyさん02/08/23 17:18ID:???
>>117
element nodeをattribute nodeにしたところで、どちらもchild nodeだから
「コーディング」の手間はそんなに変わらないと思われ。
ただ、冗長になるxmlを簡素にするため子エレメントを属性にするというのはアリなんだろうけど。

<member>
  <name>ひろゆき</name>
  <age>35</age>
</member>

ってのを、

<member age="35">ひろゆき</member>

みたいに。
0121nobodyさん02/08/23 17:35ID:???
>>119
> あっ、パラメータとしてテンプレートに渡せるんですね。
そうです。
で、>118、誤記が多すぎますね、ゴメンナサイ。

 ×with-palam → ○with-param
 ×select=name()" → ○select="name()"
 ×palam → ○param

ちなみに、テンプレート内の<xsl:param name="hoge">にselect属性を書いてやると、
それがwith-paramで渡してないときに使うデフォルト値になります。
0122nobodyさん02/08/23 17:48ID:???
>>121
あ、ちょうど今それで真剣に悩んでいました。(w
(英語力つけなあかん・・・。)

キチンと渡ってるのが確認できました。ありがとうございます〜。
0123nobodyさん02/08/27 13:16ID:708yYzJe
javaの中でxmlにxslを適用してhtmlを吐き出すことって出来ますか?
0124nobodyさん02/08/27 14:40ID:???
>>123
javascript?
0125nobodyさん02/08/27 14:49ID:???
>>123
できますよ。Javaで。
0126nobodyさん02/08/29 17:23ID:9rDVXmvU
質問なんですが、たとえば

<aa>bbb
<cc>ddd</cc>
</aa>

というXMLがあったとして

<xsl:value-of select="aa" />
と指定すると
bbbddd
と出力されるじゃないですか。

これを

bbb
のみに指定したい場合、どうすればいいのでしょうか?
0127nobodyさん02/08/29 18:22ID:???
>>126
<xsl:value-of select="aa/text()" />
0128nobodyさん02/08/29 18:38ID:9rDVXmvU
thanks!
0129nobodyさん02/09/03 07:30ID:AvKW2Hmg
domをいじってて行き詰まってしまいました。
例えばXMLが以下のようにあるとして

<aa>
<bb id="1">cc1</bb>
<bb id="2">cc2</bb>
<bb id="3">cc3</bb>
</aa>

で、XSLT で表示させたいんですが、

<xsl:template match="aa/bb">
<html>
<body>
<xsl:if test="@id='1'"> ← @
<xsl:value-of select="." />
</xsl:if>
</body>
</html>
</xsl:template>

のようにし、domを使って@の部分の @id='1' を変数にしたいのです。ようするに@id=xとしたいのです。
で、xの値をformのselectなどを使って選択できるようにしたいのです。
まあようするにjavascriptからxsltの内容を少しだけ操作したいのですが、、。

項目が40くらいに増えそうなのでxsl:chooseを使うのは現実的ではないとは思います。
どうかご教授ください。お願いします。
013010802/09/03 09:19ID:???
>>129
私の場合、クライアントのmsxml.dllの事を考え、クライアントサイド(JavaScript)でなく
サーバーサイド(ASP)でやっつけてます。

MSXMLの4.0なら、まずXSLTで
  <xsl:param name="hoge"/>
をxsl:stylesheetの直下に置いて、
  <xsl:if test="@id=$hoge">
としておく。で、DOMでは
  xslProc.addParameter "hoge", 1
とする。
この、最後の1をフォームなりで取得した値にすればいいです。
まぁ、>>129の場合で言えばxですか。
addParameterについてはMSDNででも調べてみてください。

他のパーサーはわかんないです。
0131nobodyさん02/09/04 03:11ID:ZMCjz8y0
>>130
なるほど、ありがとうございます。

でもしんどいなぁそれ。俺はサーバーサイドのスクリプトは全く知らないもんで。

でも表示させたいバリエーションの数だけXSLTを作るものじゃないし。
みなさんはどうやって解決させてるのか知りたいです。
0132nobodyさん02/09/04 12:27ID:???
>>131
自分以外の不特定多数のクライアントサイドから
サーバに置いてある*.xslを書き換えられるのは、いかがなものかと...
0133nobodyさん02/09/10 22:07ID:hmjbWsYD
InfoteriaとかでXMLライブラリが高価な値段で売ってるけど、
あれってそんなに必要なの?
なんか、無くても全然問題ないような気がするんだけど・・・
0134nobodyさん02/09/11 02:21ID:???
>>133
全然必要ないんだけど、多少払ってもいいから XML 使いたいっていう客もいる。
まぁ設計だけするけど開発は外に出すような企業の情シス相手の怪しい商売だな。
013513302/09/11 08:30ID:qQMSK36W
>134
めちゃめちゃ判りやすい例えで説明してくれてありがとう。
0136nobodyさん02/09/12 01:25ID:oCfEAb9q
XMLはじめて2日目の者なのですが、
ちょっと質問させてください。

たとえば、XMLの方で、

<root>
<文章>あいうえお、<強調>かきくけこ</強調>さしすせそ<強調>たちつてと</強調>なに・・・</文章>
</root>
だとして、


これを、XSLで、

<p>あいうえお、<b>かきくけこ</b>さしすせそ<b>たちつてと</b>なに・・・</p>

みたいにするには、どうすればよいのでしょうか?
なんかうまくいかないのです。
0137nobodyさん02/09/12 02:15ID:wHFPtXre
答えてもいいけどやってみたことを書いてよ
013813602/09/12 02:56ID:???
>>137 さん、返答ありがとうございます。
まだ、XSLの方が、よくわかっていないのですが、次のように書いてみて、うまくいきませんでした。

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html><head></head><body>
<xsl:apply-templates select="root/文章"/>
</body></html>
</xsl:template>
<xsl:template match="文章">
<xsl:apply-templates select="強調"/>
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="強調">
<b><xsl:value-of select="."/></b>
</xsl:template>
</xsl:stylesheet>

上のほうの投稿で、text() というのがあったので、「これがヒントになるかな?」
ともおもったのですが、うーん、ちょっとわからないというところです。

アプローチとして、
1) xsl:for-eachとxsl:if を組み合わせて、タグを見て判定しながら、
 順次連結してゆくような感じなのだろうか。。。
2)それとも、<強調> タグを<b>へと「ポン」と置き換えるようなアプローチ?
 (できるんでしょうか。。。)

というところで現在考えているところなんです。。。
0139nobodyさん02/09/12 03:41ID:wHFPtXre
それだと「match="文章"」のテンプレまで来た後
1.まず<文章>の下位の<強調>要素のみにテンプレを適用させる
 a. <強調>かきくけこ</強調>に「match="強調"」テンプレが適用
 b. <強調>たちつてと</強調>に「match="強調"」テンプレが適用
2.そのあと「文章」のvalue(=「あいうえお、かきくけこさしすせそたちつてとなに・・・ 」)を出力

になっちゃうでしょ。(続く)
0140nobodyさん02/09/12 03:41ID:wHFPtXre
素直に書けばこうなんだけど、

<?xml version="1.0" encoding="shift_jis" ?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>

<xsl:template match="/root">
<html><body>
<xsl:apply-templates />
</body></html>
</xsl:template>

<xsl:template match="文章">
<p>
<xsl:apply-templates />
</p>
</xsl:template>

<xsl:template match="強調">
<b>
<xsl:apply-templates />
</b>
</xsl:template>

</xsl:stylesheet>
0141nobodyさん02/09/12 03:42ID:wHFPtXre
これだと「match="文章"」まできたところで
1.<xsl:apply-templates />なので<文章>のすべての子にテンプレを適用
 a.あいうえお、→テンプレがないのでそのまま出力
 b.<強調>かきくけこ</強調>→「match="強調"」テンプレが適用
 c.さしすせそ
 d.<強調>たちつてと</強調>
 e.なに・・・

ってなる。
014213602/09/12 04:03ID:???
>>139-141

おおなるほど、そういう風に書いていけばよいのですね。

WEBの内容をXML+XSLにするときに、これ系のものが一番頻繁に
発生しそうだったので、なんとか解決したいと思っていました。

ご親切にありがとうございました。
0143nobodyさん02/09/12 10:51ID:8Gsi2jrn
XML マスター、認定制度開始後11カ月で2,000名突破
http://japan.internet.com/webtech/20020911/5.html
0144nobodyさん02/09/13 20:39ID:cekDek5K
W3Cはドキュン
0145nobodyさん02/09/15 06:41ID:SF6N5Qb4
すみません、
XSL(T)で、乱数を発生させるにはどうすればよいのでしょうか?
乱数関数のようなものがありますか?
0146b02/09/15 06:50ID:l/2nwin0
http://profiles.yahoo.co.jp/tengaiten2002
0147nobodyさん02/09/17 21:34ID:???
<sage>
0148nobodyさん02/09/17 22:52ID:HVpscvY7
<age/>
0149研修中02/09/18 00:16ID:wp6aYjv8
最近XMLを勉強し始めた者です.
XMLでもともと構造化されている文書を記述したのですが,思った通りに
表現できません.調べたんですが,よくわかりません...
ちなみにプログラムの知識はまったくないです.
やりたいことは,下のXMLのtag3について,ID毎に中身のテキストを表示
したい.(IDが1ならば「あえおおお」,IDが2ならば「いか」と表示したい)
そこで,下記のXML,XSLを作ったのですが,なぜかIDが2のものしか表示されま
せんでした.
どなたかわかる方,よろしくお願いします.

XML----------------------------------------------------------------
<root>
<tag1>
  <tag2>
   <tag3 ID="1">あ
   <tag3 ID="2">い
   <tag3 ID="3">う
     <tag3 ID="1">え
       <tag3 ID="2">か
       </tag3>
     </tag3>
   </tag3>
  </tag3>
  おおお
  </tag3>
 </tag2>
</tag1>
</root>
---------------------------------------------------------------------
0150研修中(149の続き)02/09/18 00:17ID:wp6aYjv8
XSL------------------------------------------------------------------
<xsl:template match="/">
<HTML>
<HEAD><TITLE>テスト</TITLE></HEAD>
<BODY><xsl:apply-templates select="root"/></BODY>
</HTML>
</xsl:template>

<xsl:template match="/root/tag1/tag2">
<xsl:apply-templates select="tag3"/>
</xsl:template>
<xsl:template match="text()">
<xsl:if test="../@ID='1'">
<xsl:value-of select="."/>
</xsl:if>
</xsl:template>

<xsl:template match="text()">
<xsl:if test="../@ID='2'">
<xsl:value-of select="."/>
</xsl:if>
</xsl:template>
--------------------------------------------------------------------
0151nobodyさん02/09/18 01:14ID:???
>>149 マルチうざい
http://pc3.2ch.net/test/read.cgi/hp/984950028/l50
0152nobodyさん02/09/22 22:55ID:Q8AxY753
ホスティングサーバーを探してるんですが、PHPにlibxmlがインストールされて、domが使えるサーバーの中で、
一番安いところといえばどこでしょうか?
なるべく独自ドメインが持ち込めて、月1000円程度を探してるんですが。
0153nobodyさん02/09/22 23:42ID:???
板違い
0154nobodyさん02/10/04 23:41ID:c6CF/QD0
W3C=DQN;
0155nobodyさん02/11/04 18:36ID:???
鯖にあるcsvファイル→PerlでXMLに変換XSL参照挿入
→クライアントに送りつけた後でXSLと結合→ウマー

を実現しようとしてるんですが、IE(ver6)だと、何故か

アクセスが拒否されました。リソース[XSLファイルへのパス]の実行エラーです。

が表示されます、NN6で見たところ大丈夫でした。


http://hpcgi3.nifty.com/sepura/br/room_main/britemlist.cgi
↑これ、なんですが、中身がDQNなのはいいとして、どなたか原因おしえてくだされ。
0156nobodyさん02/11/29 22:21ID:z9IknihB
プログラム技術板から紹介され,こちらで質問させていただく
ことにいたしました.どうぞよろしくお願いいたします.

XQueryの話なのですが...

<hoge>foo1,foo2,foo3</hoge>
のように,デリミタ区切りのXMLソースから,XQueryを使って,
<hoge>foo1</hoge>
<hoge>foo2</hoge>
<hoge>foo3</hoge>
としたいのですが,できるのでしょうか?
そもそもXQueryはデリミタを解釈できるのでしょうか.
お手数ですが,よろしくお願いいたします.
0157nobodyさん03/01/04 02:09ID:ukfjDXrF
xml のフリーのエディターで使えるの何?
0158nobodyさん03/01/04 12:40ID:???
eXeed
0159山崎渉03/01/15 13:36ID:???
(^^)
0160かざぐるま03/01/23 00:53ID:GTmtrOGV
最近XMLをいじり始めた者です。とても初歩的な質問かと思いますが・・・
<mydata>
<info>
<aaa>あはん</aaa>
<bbb>いひん</bbb>
<ccc>うふん</ccc>
<ddd>えへん</ddd>
<eee>おほん</eee>
</info>
<info>
</mydata>
のようなXMLから、 $searchnode(xsl:paramで定義してVBからAddParameterで値を代入)という名前のノードの値が $searchkey(同上)である<info>を抽出する というプログラムを作っています。

<xsl:variable name="resultCount" select="count(info[.=contains(.,$searchkey)])" />
<xsl:if test="$resultCount > 0">
<table border="1" width="540px">
<xsl:for-each select="info">
<xsl:variable name="infodata" select="." />
<xsl:if test="contains($infodata,$searchkey)">
<tr><xsl:apply-templates /></tr>
</xsl:if>
</xsl:for-each>
</table>
</xsl:if>
という、雑誌で拾ってきたXSLTのコードの1行目 contains(.,$searchkey)を contains($searchnode,$searchkey)にしたり、
<xsl:variable name="infodata" select="." /> を<xsl:variable name="infodata" select="$searchnode" /> にしたりしているのですが、どうにもうまくいきません。
エラーを出すわけではなく、サーチに1つもかからないようです。
$searchnodeのかわりに、直接bbbやcccといった名前を書いてやるとうまくいくようなのですが・・・
お力を貸してください。
0161nobodyさん03/04/11 17:09ID:O/+uIxRO
XSLTで、値から特定の文字を除去するにはどうしたらよいのでしょうか。
具体的には
tel="090-1234-5678"
のような属性値から
num="09012345678"
のようなデータを作りたいのです。
0162http://www.agemasukudasai.com/movie/03/04/11 17:32ID:IQV1zmiC
http://society.2ch.net/giin/
0163nobodyさん03/04/14 14:55ID:0cLXtxgq
>>161
translate関数というのがありますです。

translate.xml-----------------------------------
<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="translate.xsl"?>
<tel>090-1234-5678</tel>
------------------------------------------------

translate.xsl-----------------------------------
<?xml version="1.0" encoding="Shift_JIS" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="html" encoding="Shift_JIS"/>
<xsl:template match="tel">
<xsl:value-of select="translate(.,'-','')"/>
</xsl:template>
</xsl:stylesheet>
-------------------------------------------------
0164nobodyさん03/04/15 21:27ID:???
>>163
おおお!すばらしい。そういう手があったのですね。
ありがとうございました。助かりました。
0165名無しさん03/06/30 00:05ID:GAj7XhI8
気象情報をxml形式で出力したいと考えてますが
XML-RSSの様な規格って今現在ありますか?
0166そんな低レベルな話よりも03/06/30 00:14ID:MIk31pr/
さっきの話は、ここが発端だったんだね
いろんな意味ですごいもんだ
http://210.136.172.68/cgi-bin/bbs.cgi
0167nobodyさん03/08/02 13:52ID:9fMrU3TV
Perl5.004で使えてPurePerlのXMLパーサってありますか?
XML::Parser::Liteは5.6以上でした。
0168nobodyさん03/08/10 15:21ID:???
sage
0169山崎 渉03/08/15 22:45ID:???
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0170nobodyさん03/10/09 19:02ID:zTQButDr
<xsl:when test="@href = ''">

これを、そもそも href 属性が指定されていないときに true としたいのですが、
どういう評価式を書けばいいでしょうか。
0171nobodyさん03/10/09 19:08ID:???
すいません、ひらめいて試したら、ほんとにそうでした。

<xsl:when test="@href'"> で指定時 true ですね。
0172nobodyさん03/10/11 16:00ID:???
最初は略さないでやった方が楽だぞ。
直感的とか言う言葉に惑わされてはいけない。

<xsl:when test="boolean(attribute::href) = true()">
0173nobodyさん03/10/11 16:03ID:???
boolean → not
0174nobodyさん03/10/16 17:44ID:oShwoqPS
XMLからXSLT通してHTMLにしてるんですが、
あるタグにidを加えたいのですが、上手い方法が見つかりません。
id="dd1"のように、ddは既定で後の部分を数字として利用していきたいのですが、
XSLTに$i++みたいな感じで任意の変数を増やす方法はありますか?
またはそれに変わるものがあったら教えてください。
0175nobodyさん03/10/17 09:18ID:8v/LfHTg
>>174
追い番で良いなら id="dd{position()}" でどう?
017617403/10/18 21:06ID:???
>>175
おぉ、そういう方法がありましたか。
早速試してみます。
ありがとうございました。
0177nobodyさん03/10/21 01:30ID:???
XMLとPHPやPerlとか使えばものすごく簡単に掲示板とか作れるんじゃないか?
と思ったんだけど作れるんですか?
0178nobodyさん03/10/21 23:25ID:???
>>177
> XMLとPHPやPerlとか使えばものすごく簡単に掲示板とか作れるんじゃないか?
> と思ったんだけど作れるんですか?

XMLだったら横浜Baykit使ったらものすごく簡単だったがイカリャク
0179nobodyさん03/10/22 19:52ID:???
>>178
こんなものがあったんですか。
でも、自分には使えそうにありません。
XMLは人間にもコンピュータにも理解できる、マークアップ言語って聞いたもので、
CGIなどで簡単にデータの追加、削除、修正ができるとものだと思っていました。
0180nobodyさん03/12/08 19:45ID:???
保守
0181nobodyさん03/12/11 18:39ID:NN15UKxr
むしろXSLTスレにしたほふがよかったのでは。
0182nobodyさん03/12/14 11:24ID:zmlj92od
XPathについて教えてください。
<book>
 <author id="1" name="jon">ANIMAL</author>
<author id="2" name="leon">FISH</author>
</book>

というXMLで指定したidのnameを取り出したいんですけど、
/book/author/@name[/book/author/@id = "1"]
とやってみたがダメでした。他にも色々試したんですが、どうすりゃいいのでしょう。
0183ヽ(´ー`)ノ03/12/15 09:26ID:???
/book/author[@id="1"]/@name

predicate の使い方を勉強した方が良い予感。この辺から読め(・∀・)
ttp://www.asahi-net.or.jp/~ps8a-okzk/xml/xpath10/predicate.html
0184nobodyさん03/12/15 23:41ID:???
>>183
どうもありがとうございます。しっかり勉強してから戻って来ます。
0185nobodyさん03/12/20 11:22ID:???
ほんとにXML使ってるやつなんているのか?
雑誌の記事とかに踊らされてるだけなんじゃないのか?
10年ぐらいしたら「ああ、XMLなんてのがあったね」みたいに
なりそうな気がするんだが。
0186nobodyさん03/12/22 12:09ID:0MXzRakt
>>185
VB+PHP+MSXMLで使ってるよ。
なんつーか、自分でテキストファイルの構文解析する処理を書かなくて良い
ってだけでずいぶん便利だよな。とくにテキスト処理が弱い言語だと楽。

あと、ツールが吐き出す中間ファイルをXMLにしとけば他の人間にツール作らせるときも
データの構造を説明しなくても「DocType見ろ!」で済むので助かる。
0187nobodyさん03/12/22 18:28ID:???
>>186
俺も、>>185みたいに考えていたが
そういう使い方をするのか

目から鱗だった
0188nobodyさん03/12/27 18:25ID:JDXeuhRr
XMLの中身を見せたくない場合はどうやって隠せばよいでしょうか?

ttp://domain.com/gogogo/gogogo.xml

をアクセスしちゃうと、丸見えですが、
.htaccessとかつかっちゃうと

Redirect /gogogo.xml ttp://domain.com/index.php

にしても、
ttp://domain.com/gogogo/gogogo.xml
が使えなくなってしまい、
ttp://domain.com/index.php
をアクセスしても…

We encountered an error applying your XML template. Please retry.

とでちゃいます。
何とかできますか?
0189ヽ(´ー`)ノ03/12/27 20:03ID:???
>>187
自作のアプリケーションは全部データの保存とかは XML にしちゃった。
スケーラビリティが必要になってきたら RDBMS に変更すればいいしね。
んで、人間が読み書きする可能性があるファイルは yaml。

>>188
本質的に XML にまったく関係ありませぬ。
Web サーバの設定と、君が使ってる Web アプリケーション(index.php)に
大きく依存する。そっちのスレに行ってくれ。

あと、実在するホスト名を使うことは正直オススメしない。
example.{com,net,org,...} を使おう。
0190nobodyさん03/12/27 20:03ID:???
お前ら、テキストノードはインデントを付けずに記述するのが基本ですか?
0191nobodyさん03/12/27 21:27ID:???
>>190
インデントする。
無論、スペースやタブが特別な意味を持つ element なら話は別だけど。
0192nobodyさん03/12/27 22:20ID:???
>>191
それを除去するのに良い手段ってありますか?
0193ヽ(´ー`)ノ03/12/27 23:32ID:???
>>192
一番手取り早くてスマートなのは xslt じゃない?
ちょいとオーバースペック気味な気がするが。

あとは API にそういうものがあると思う。
Perl だと XML::Filter::DetectWS とか。他の言語にもあるだろ。
0194nobodyさん04/01/06 17:30ID:xRFLJh8q
今から勉強します保守age
0195nobodyさん04/01/18 02:56ID:gYjQDebJ
sevi-ってどうよ
0196nobodyさん04/01/19 10:25ID:???
何それ(´Д`)そんな規格あったっけか。
検索したけど、ML で質問に答えてる人しか引っ掛からんかった。
0197nobodyさん04/02/13 11:25ID:???
Xpathの仕様書ってなんで名前空間の例が何もないんだ?
./foo/bar[@hoge:attribute]
ってやってもなぜか駄目なんだけど、属性「hoge:attribute」を持っている
./foo/bar要素を取得するにはどうすれば良いんだ・・・。
0198nobodyさん04/02/14 18:57ID:???
使ってる XPath エンジンが対応してないだけでは。
0199nobodyさん04/02/19 14:14ID:???
namespace fixup って何ぞや?
調べてみたけどイメーヂが捕めない……。
0200nobodyさん04/03/23 23:59ID:6bD0ZCwn
xhtml文書をxsltprocで変換したいと思ってるんだけど、
namespaceの有り/無しによってtemplateがapplyされない。助けて。
----- 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


#現象が再現できる最小のソースなので、それに関しては突っ込まないで。
■ このスレッドは過去ログ倉庫に格納されています