5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

<XML総合 part="3"/>

1 :デフォルトの名無しさん:2008/10/07(火) 17:40:09
XMLなんでもスレ。

前スレ: 【XML】xmlns, XSLT, RelaxNG, JAXP, etc.【総合】
 http://pc11.2ch.net/test/read.cgi/tech/1133280488/
前々スレ: 【必須?】XML技術【使ってる?】
 http://pc8.2ch.net/test/read.cgi/tech/1090253584/

2 :デフォルトの名無しさん:2008/10/07(火) 20:10:50
1乙

3 :デフォルトの名無しさん:2008/10/07(火) 21:48:10
スレタイに<>使えたのか

4 :デフォルトの名無しさん:2008/10/07(火) 23:15:06
なにこのスレタイ

好き

5 :デフォルトの名無しさん:2008/10/08(水) 01:21:07
<スレッド name="XML総合" part="3" />
の方が一般的じゃね?

6 :デフォルトの名無しさん:2008/10/08(水) 01:40:58
スレタイに入れるのは明らかに無駄だろw

7 :デフォルトの名無しさん:2008/10/08(水) 04:36:32
</XML総合>

8 :デフォルトの名無しさん:2008/10/08(水) 06:54:26
>>1000でそれやったら美しいだろうな
スレタイ空要素だけど

9 :デフォルトの名無しさん:2008/10/08(水) 18:08:39
空要素w

10 :デフォルトの名無しさん:2008/10/08(水) 20:09:26
エレメントとノードってどう違うの?

11 :デフォルトの名無しさん:2008/10/08(水) 20:14:51
ノードは、ツリーとみなした場合の用語

12 :デフォルトの名無しさん:2008/10/08(水) 22:38:36
エレメントはxmlの用語。ノードはDOMの用語。

ruby厨でアンチxml厨はこういう基本も分かってないで批判するよな。
DOMの操作が複雑だとか用語が沢山あって分かりづらいとか、じゃあSAXでもStAXでも使えとry

13 :デフォルトの名無しさん:2008/10/08(水) 22:45:10
どっとねっとうとかだと両方あるんだけど

14 :デフォルトの名無しさん:2008/10/08(水) 23:26:52
>>10-13
ノードはXML文書の構成要素のこと。
ノードには、ドキュメント・テキスト・エレメント・アオリビュート・コメントなどの種類がある。

15 :14:2008/10/08(水) 23:27:21
×アオリビュート
○アトリビュート

16 :デフォルトの名無しさん:2008/10/12(日) 22:41:03
XSDで、アトリビュートによってエレメントの内容を変えるってことできる?
たとえば

<person type="child">
  <name>hogehoge</name>
  <age>20</age>
</person>

<person type="adult">
  <name>hogehoge</name>
  <age>20</age>
  <income>300000</income>
</person>

みたいな。
personってのを変えないと無理?

17 :デフォルトの名無しさん:2008/10/13(月) 19:02:52
どうだろう。おれの拙い知識だと、出来ない気がするなあ。
<adult>と<child>が<person>を拡張する形式にするとか…

18 :デフォルトの名無しさん:2008/10/14(火) 22:30:39
>>17
ありがと

19 :デフォルトの名無しさん:2008/10/23(木) 04:46:04
0x00 含む任意の文字列を XML に保存したい場合、どうすればいいんでしょうか?
他のコントロールコードは数値文字参照でいけたんですけど、これだけどうにも
パーサーが受け付けてくれません。

http://www.w3.org/International/questions/qa-controls
確かに iilegal とされていますが、じゃぁどうすればいいのかがわかりませんでした。

20 :デフォルトの名無しさん:2008/10/23(木) 05:21:10
base64

21 :デフォルトの名無しさん:2008/10/23(木) 05:49:04
Binary XML

22 :デフォルトの名無しさん:2008/10/23(木) 13:04:47
そもそもそんなもん含めるのは想定されてない

23 :デフォルトの名無しさん:2008/10/23(木) 16:43:45
時々出る質問だけど、PIでいいと思うよ。

24 :デフォルトの名無しさん:2008/10/24(金) 18:06:51
PIって使い道がよくわからん

25 :デフォルトの名無しさん:2008/10/24(金) 18:12:52
Cのpragmaみたいなもんだよ

26 :デフォルトの名無しさん:2008/10/25(土) 22:06:00
PIを直訳してみろ。そのまんまだ。

27 :19:2008/10/28(火) 03:51:24
>>20-23
ありがとうございます。 PI でいけそうな感じです。

28 :デフォルトの名無しさん:2008/10/28(火) 09:06:39
>>26
「乳房」? こうですか?


29 :デフォルトの名無しさん:2008/10/31(金) 10:33:36
XMLやRDFあたりを勉強する必要が出てきたのですが,何かよい書はないですか?

30 :デフォルトの名無しさん:2008/11/01(土) 12:53:43
>>29
http://pc11.2ch.net/test/read.cgi/tech/1223368809/

31 :デフォルトの名無しさん:2008/11/02(日) 03:02:31
XMLを「勉強する」ってのがどういうことかっていうのは難題というか禅問答な気がする

32 :デフォルトの名無しさん:2008/11/02(日) 21:59:25
>>31
自分でXMLパーサ書けるようになることを目指すというのはどうだろう?

33 :デフォルトの名無しさん:2008/11/14(金) 14:32:19
ascii文字しか使ってないxmlを読むにはexpatでも無駄になっちゃうよね…
LC_CTYPE=Cのgrep並の効率を持ったパーザは自作するしか無いのかな?

34 :デフォルトの名無しさん:2008/11/18(火) 14:08:48
XMLって一過性の流行でしょ?もう終わったんじゃないの?

35 :デフォルトの名無しさん:2008/11/18(火) 17:51:14
マークアップ言語としてのXMLは滅びないでしょ。
少なくとも今現在は代替テクノロジがないし。

36 :デフォルトの名無しさん:2008/11/19(水) 00:46:23
XMLというか、SOAPとかWS-*系のは何とかならないのかなぁと思う。
あと、フレームワークの設定で使われてる系とか。

必要性はわかるんだが、どうしても冗長過ぎるという感覚が拭えない。

37 :デフォルトの名無しさん:2008/11/19(水) 00:51:11
Protocol Bufferとか

38 :デフォルトの名無しさん:2008/11/19(水) 01:07:02
通信系のXML(に限らないかもしれないけど)ってのは要するに、
「プロトコルは自分自身の則るコンテクストを相手に対して説明可能である必要がある」
って発想に基づいているかなぁ、と最近思うようになったんだけど、これは正しい?

だとすると、Protocol BufferはXMLの代替にならないだろうな、という気はする。
伝統的なプロトコルは、回線の両端でコンテクストが一致していることを前提にしているけど、
XMLは、ネットワーク上に多様なコンテクストに則ったプロトコルが氾濫する状況に
対して有効に働く方式であると言える気がするんだけど、どうだろう。

とはいえ、冗長なことには違いないわけで、もう一つくらいブレークスルーはないのかという
期待というか懸念は依然としてある。

39 :デフォルトの名無しさん:2008/11/19(水) 04:48:29
<Keywords>
<Keyword>あ</Keyword>
<Keyword>い</Keyword>
<Keyword>う</Keyword>
</Keywords>

みたいなXMLがあって、それをXSLで

perlで書くと
---
my @Keyword = qw( あ い う );
my $out = join(',', @Keyword);
print $out, "\n";
## 出力:あ,い,う
---

と同じことがしたんだけど、Javascriptを使わないで出来ますか?
詳しい人方法をplz


40 :デフォルトの名無しさん:2008/11/19(水) 13:18:17
>>39
xsl:for-each と xsl:value-of で検索。

41 :デフォルトの名無しさん:2008/11/20(木) 02:52:00
XMLマスターのスレってある?
いろんな板見たけど見つからなかったんだけど

42 :デフォルトの名無しさん:2008/11/21(金) 08:51:16
探して見つからなかったならないと思うよ。

43 :デフォルトの名無しさん:2008/11/21(金) 22:14:41
立てたら?

44 :デフォルトの名無しさん:2008/11/26(水) 15:10:40
>>42
なんかお前イライラする

45 :デフォルトの名無しさん:2008/11/26(水) 19:39:47
そうですね!

46 :デフォルトの名無しさん:2008/11/26(水) 22:04:56
yes we can.

47 :デフォルトの名無しさん:2008/11/27(木) 15:08:30
楽天APIで出力されるXMLをPHP5で解析しようとしてるんだが、

$xml = new SimpleXMLElement($xmlstr);
echo $xml->Body->itemRanking->Item[0]->title;

こんな感じでデータ取り出せないのかな。
どうしてもうまくいかない。

48 :デフォルトの名無しさん:2008/11/27(木) 21:52:38
出力されるXMLを見ないとなんとも言えん

49 :デフォルトの名無しさん:2008/11/29(土) 23:30:41
基本的な質問
タグ内にテキスト(PCDATA)とタグを混在させるのはありらしいですが、
なんか気持ち悪いのです
<title>テキスト1<keyword>テキスト2</keyword>テキスト3</title>
↑こういう書き方は普通にありなんでしょうか?

50 :デフォルトの名無しさん:2008/11/29(土) 23:48:44
普通にあり。
title要素が、テキストノード、keyword要素、テキストノード、をchild nodes

51 :デフォルトの名無しさん:2008/11/29(土) 23:57:29
>>50
ありがとうございます
テキスト1とテキスト2とテキスト3は意味的には1つの繋がった文章なのですが
(要するにプログラム解釈としてkeyword要素を強調解釈させたい(文字装飾とかリンクのため)
テキストの中にタグを入れるというと文章が分断されてしまう感じがしたもので
普通にありならば堂々と使っていきたいと思います

52 :デフォルトの名無しさん:2008/11/30(日) 00:11:34
HTMLとか見たことないのかい?

53 :デフォルトの名無しさん:2008/11/30(日) 07:07:58
XMLみたいな文法厳しいものの前にHTML理解してこいって感じだな(汗

54 :デフォルトの名無しさん:2008/11/30(日) 13:59:10
そもそもXMLはテキストをマークアップするための言語なわけだが…

55 :デフォルトの名無しさん:2008/11/30(日) 15:23:18
51だけど
HTML見たことないわけねーだろ
DTDでいう<!ELEMENT tag1 (#PCDATA | tag2)*>って
気持ち悪くないのか?
なんかXMLって扱いにくいね
こういうとお前が馬鹿な(ryとか来そうだが

56 :デフォルトの名無しさん:2008/11/30(日) 15:47:18
PCDATAが気持ち悪いっていうことがもう爆笑なんだがwww
お前終わってるだろ

57 :デフォルトの名無しさん:2008/11/30(日) 17:35:55
#PCDATAとtag2の混合が気持ち悪いって言ってんだろ
ちなみに爆笑するお前も気持ち悪い

58 :デフォルトの名無しさん:2008/11/30(日) 17:42:56
もっと罵って欲しい

59 :デフォルトの名無しさん:2008/11/30(日) 18:05:19
気持ち悪いとか爆笑とか、感性や感情を吐露されても
具体的なXMLとの関係はさっぱりわからん。
なぜ気持ち悪いのか、なぜ爆笑するのか、そこを掘り下げろよ。

60 :デフォルトの名無しさん:2008/11/30(日) 23:35:29
<dig>そこ掘れワンワン</dig>

61 :デフォルトの名無しさん:2008/12/01(月) 16:01:45
参考になるかどうか分からないけど、かつてTed NelsonはHTMLでは
次のような記法が出来ないから嫌いだと言ったとか何とか。

HTML is <U>precisely <B>what</U> we were trying to PREVENT.</B>

最近のブラウザでは上記例も無理矢理表示するかも知れないけど、
HTML規格に合わせるなら未だに次の記法でないとダメだと思う。

HTML is <U>precisely <B>what</B></U><B> we were trying to PREVENT.</B>

つまり、彼のクレームは「何故フォントスタイル指定は入れ子構造を
強制されるのか」と言うこと。
赤ボールペンと蛍光マーカーを使って文書に線を入れる作業をする
例を考えると、赤線や蛍光マークは入れ子など考えずに好きな場所
に入れて好きなようにオーバーラップ出来るよね。
(上の例で言えばpreciselyからwhatまでピーッと赤アンダーラインを
引いて、whatからPREVENTまで蛍光マーカーでなぞる)

これと比べればHTMLやXMLの「要素の入れ子構造」はいささかか
不自然さを文書作成者に強制している、といえなくもない。

もちろんTed NelsonがHTMLに対して述べたクレームはこれだけじゃ
ないし、彼の主張が全てと言うわけでもないけど、HTMLやXMLには
文書を表現する上では不自然さも持っている、完璧ではないという
意見も存在すると言うことで。

XMLを用いて修飾された文書からDOMを作ると確かに元の文書が
ブツ切りのTextNodeとして出てくるので、個人的には>>51のいう
「気持ち悪い」感覚は何となく理解できます。

62 :デフォルトの名無しさん:2008/12/01(月) 16:17:42
プログラマとそうでない人、両方の視点が必要というわけか

非プログラマからは文書を表現しにくいと言われ
かといってプログラマからはJSONで十分じゃんと言われ

・・・でもそんなXMLが大好きです(AA略

63 :デフォルトの名無しさん:2008/12/01(月) 16:33:09
そういわれてみて気づいたが、俺は
HTML は文章の一部をマークアップするためのもの、
XML はデータをツリー構造で表現するためのもの、
として捉えていたようだ。
文章の一部をマークアップするということが本来的に
マークアップがきれいな入れ子構造を持つことを要請するわけじゃないよね。
そう考えるとたしかに言葉通りの「マークアップランゲージ」の仕様としては「要素の入れ子構造」は無理な部分もあるのかも。
そもそもなぜ「要素の入れ子構造」は要請されたのかね?

64 :デフォルトの名無しさん:2008/12/01(月) 16:40:35
入れ子だとXMLパーサを作りやすいからだろう。
実装の手間とインタフェースの使いやすさのバランスを取った結果が
こういう仕様になったんだと思う。

65 :デフォルトの名無しさん:2008/12/01(月) 16:50:37
なるほど、やはりプログラムでの処理からの要請か…。ありがとう。
たしかにプログラムで処理するためのマークアップだもんね。

66 :デフォルトの名無しさん:2008/12/01(月) 16:54:33
>>64
>入れ子だとXMLパーサを作りやすいからだろう。

つ SAX

しかし今度はパーサを使うプログラマが苦労するという罠。

67 :64:2008/12/01(月) 17:32:33
> つ SAX
ああその通り。失礼しました。
入れ子ならDOMパーサを作りやすい、なら問題ないかな。

> しかし今度はパーサを使うプログラマが苦労するという罠。
要素のオーバーラップしたXMLをSAXパーサに食わせて
プログラマ側が構造化するとか、考えただけでクラクラする。

68 :デフォルトの名無しさん:2008/12/01(月) 17:50:46
人間が直接パーサを作るなんてひどい拷問だ
自動生成させようよ
機械的に扱わせやすいための入れ子構造なんだし
処理そのものだけでなく処理をさせるものの生成にも構造が簡易なのが効いてくる

69 :デフォルトの名無しさん:2008/12/01(月) 22:55:53
盛り上がってきたな

70 :デフォルトの名無しさん:2008/12/02(火) 01:10:18
SGMLパーサーの実装が不可能に近かったのでxmlを作りましたとさって経緯もあるからなぁ

71 :デフォルトの名無しさん:2008/12/02(火) 22:28:48
XSLTで、<xsl:template match="processing-instruction('xml')">
というテンプレートを見かけたんだけど、これってマッチすることあるの?

72 :デフォルトの名無しさん:2008/12/03(水) 01:13:39
>>71
PITargetは[Xx][Mm][Ll]という値をとり得ないから、
何らかのPIにマッチすることは決してない。

73 :デフォルトの名無しさん:2008/12/03(水) 01:50:00
XMLって何て読むんですか?

74 :デフォルトの名無しさん:2008/12/03(水) 02:05:35
シャマル

75 :デフォルトの名無しさん:2008/12/03(水) 20:07:26
命題1:XMLはデータをツリー構造で表現するデータ形式である
命題2:XMLはあらゆるデータ構造の表現に用いられている
命題3:世の中に存在するデータ構造はツリー構造のみではない

というわけで質問なんだけど、
1. XMLのデータ表現にツリー構造が採用されたのはなぜ?
2. XMLと相性の良い、あるいは悪いデータ構造って例えばどういうの?

76 :デフォルトの名無しさん:2008/12/03(水) 20:13:05
その命題の真偽は?

77 :デフォルトの名無しさん:2008/12/03(水) 20:26:26
まず、命題1は偽だな

78 :デフォルトの名無しさん:2008/12/03(水) 21:43:13
安易に全称を使わないで欲しい

79 :デフォルトの名無しさん:2008/12/03(水) 22:01:04
命題1と命題2のどちらかが偽だな

1. XMLのデータ表現にツリー構造が採用されたのはなぜ?
括弧の入れ子構造は自然にツリーになるから
(() ((()) ())))

2. XMLと相性の良い、あるいは悪いデータ構造って例えばどういうの?
相性が悪いのはグラフ(任意の矢印でつなげた構造)

  -------
+→|  |  |
|  +--|--+
+-----+

みたいな自分自身を指す構造とか。

80 :デフォルトの名無しさん:2008/12/03(水) 22:16:27
>>79
なるほど。
あと、それを見てふと思ったんだけど、ラムダ式ってXMLで表現できるんだろうか

81 :デフォルトの名無しさん:2008/12/03(水) 22:24:57
S式と1対1に対応できるから可能

82 :デフォルトの名無しさん:2008/12/03(水) 22:54:47
何も悩まず

<lambda arg="x"><lambda arg="y">
<add><value expr="x"/><value expr="y"/></add>
</lambda></lambda>

でいいじゃん。

83 :デフォルトの名無しさん:2008/12/03(水) 23:03:26
大抵のデータ構造は二項関係の集合にバらして表現できるから
大概のデータはその気になればXMLで「書ける」はずです。

ただ本当にバラバラ事件になるので、機械可読だけど人間様は
読みたくないXML文書になることは請け合いです。

「相性」にも広い意味がありますが元のデータ構造をバらさない
ままXMLの構造に対応づけることが出来るか、という意味では
やはり相性の良いデータは「木」に見立てることが出来るもの
に限られると思います。

ちなみに先日の下線とアンダーラインの例も次のように書けば
入れ子もオーバーラップも気にせずにXMLで表現できます。

<decoratedText>
<text>HTML is precisely what we were trying to PREVENT.</text>
<underline start="9" end="22"/>
<bold start="19" end="48"/>
...
</decoratedText>

確かTed NelsonのHyperTextにおけるHyperLinkの定義もこんな
アプローチ(参照元と参照先の開始点と終了点)だったと記憶して
います。ただ、手書きでは絶対に書きたくないな、これ。

84 :デフォルトの名無しさん:2008/12/04(木) 01:02:30
XSLTがチューリング完全だからそれで変換すればなんでもありじゃね?

85 :デフォルトの名無しさん:2008/12/04(木) 01:19:43
XSLTは "Sun, 28 ほにゃらら +0900(JST)" みたいな日付の書き方とかを始めとした
色んなデータ表現形式をサポートしてくれないとちょっと使いにくい。
JavaScriptでStringを引数としたString戻り値の関数を定義できる機能とかないのかね。

86 :デフォルトの名無しさん:2008/12/04(木) 02:16:00
暇つぶしに論文漁ったらこんなのが。
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.108.9959&rep=rep1&type=pdf
http://www.tei-c.org/release/doc/tei-p5-doc/en/html/NH.html

Overlap(上記の下線と太線の例の様なケース)をどのようにSGMLや
XMLで表現するか、「技」の事例が揃ってます。

いや、苦労しているなぁ、皆さん(笑)。
個人的には次のようなアプローチが一番面白かった。

HTML is <U_start/>precisely <B_start/>what<U_end/> we were trying to PREVENT.<B_end/>

87 :デフォルトの名無しさん:2008/12/04(木) 02:30:40
もはや要素の概念が・・・

88 :デフォルトの名無しさん:2008/12/04(木) 02:33:59
>>86
rtfとかこんなんだよね。

89 :デフォルトの名無しさん:2008/12/04(木) 02:39:23
昔のワープロデータの保存形式は、こんなのが多かった気がする。

HTML is <U length="14"/>precisely <B length="25"/>what we were trying to PREVENT.

90 :デフォルトの名無しさん:2008/12/04(木) 02:45:59
>>88
RTFはHTMLと一緒だよ。

91 :デフォルトの名無しさん:2008/12/04(木) 08:10:13
>>38でぼそぼそと書いたことの続きなんだけど、
XMLが冗長に感じる一番の理由って名前空間宣言と終了タグなのかな、
>>89とかを見て思った。

いや、XMLの趣旨から言って必須なのは分かってるんだけど、
XMLのバイナリ化みたいな話って、この辺をやってバイト数減らしたりしてるのかな。

92 :デフォルトの名無しさん:2008/12/04(木) 08:14:51
あと、>>79について、完全に歴史の話だと思うけど、
> 括弧の入れ子構造は自然にツリーになるから
というのは、XML仕様の作成者の意図は、「括弧の入れ子構造」を使った
データフォーマットを作ることが先にあって、ツリーになったのは結果論という認識でいい?

93 :デフォルトの名無しさん:2008/12/04(木) 17:13:22
INIファイルをXMLファイルに変換する方法を教えてください

94 :デフォルトの名無しさん:2008/12/04(木) 17:52:51
>>93
ファイルの頭に <ini><![CDATA[
ファイルの尻に ]]></ini>
とかく。

95 :デフォルトの名無しさん:2008/12/04(木) 19:57:35
鬼才現る

96 :デフォルトの名無しさん:2008/12/04(木) 20:59:50
>>94
できなかったです+_+

97 :デフォルトの名無しさん:2008/12/04(木) 22:07:50
 
【サンタクロース、トナカイの酒気帯び運用で逮捕。有罪判決に、マジ逆切れ&大暴れw(動画有り)】(ZDNet)
http://builder.japan.zdnet.com/story_media/20384793/081204_sun-james-gosling_03_400x300.jpg
http://builder.japan.zdnet.com/story_media/20384793/081204_sun-james-gosling_01_400x300.jpg
http://builder.japan.zdnet.com/story_media/20384793/081204_sun-james-gosling_02_400x300.jpg


98 :デフォルトの名無しさん:2008/12/08(月) 16:04:44
hoge要素に対するhoe要素、hogehoge要素に対するhoehoe要素が
別のXML文書(hoe.xml)内にあるものとして、
そこへそれぞれにリンクを設定する必要がある時、

<root>
<hoge xml:base="hoe.xml#xpointer(hoe[1])">
<hogehoge xlink:href="#xpointer(hoe[1]/hoehoe[1])" />
</hoge>
</root>

"hoe[1]"を2回書くの嫌なんですが、こう書かなきゃだめ?
xml:baseはXPath部分は含んでくれない?


99 :デフォルトの名無しさん:2008/12/19(金) 07:35:14
画像処理の実験データを記録するのに、勉強がてらxmlを使うことにしたのですが
例えば、目標位置を記録する場合の要素Targetがあったとして

例@
<Target num="0" x="315" y="292">

例A
<Target>
 <Num>0</Num>
 <X>315</X>
 <Y>292</Y>
</Target>

この二通りを考えたとき、どちらの書き方が『正しい』と言えるのでしょうか。
自分はどちらでもいいのではと思っており、例@を採用していたのですが、報告会で先輩から
「そういう属性だけの要素が存在してもいいの?」や「そういうのを書くとき、一般的な決まりごととか無いの?」などの
質問を受けました。考えたことも無かったので調べてはみたのですが
これといった答えが見つからず、質問に参った次第です。

好みの問題なのでしょうか。それとも、何か決まりごとのようなものがあるのでしょうか。
参考になるwebサイトなどでも構いません。知っている方がおりましたら、どうかご教授ください。

100 :デフォルトの名無しさん:2008/12/19(金) 08:00:22
ないからどういう風に書くかスキーマを書いて決める。

101 :デフォルトの名無しさん:2008/12/19(金) 08:03:10
特に num や x が二つ以上あれば属性ではなく要素を選択するしかないけど、
構造体やハッシュ/辞書みたいなデータ構造を XML に落とす場合は
どっちでもいいと思うよ

ちなみに XML Hacks って本が言うには
要素にするか属性にするかは論争の種ではあるけれど
相互変換が可能なのでお好みでどうぞというのが結論だった気がする

102 :デフォルトの名無しさん:2008/12/19(金) 08:33:30
num や x が2つ以上あっても例えば空白区切りで書けるけど。

103 :デフォルトの名無しさん:2008/12/19(金) 08:48:40
>>102
例えばどんな感じ?よかったら教えて

あと前掲書からのリンク貼っとくね
http://xml.coverpages.org/elementsAndAttrs.html
http://xml.silmaril.ie/developers/attributes/
http://www.ibm.com/developerworks/xml/library/x-eleatt.html

104 :デフォルトの名無しさん:2008/12/19(金) 11:01:45
属性にできるなら属性にしたほうがコードは書き易い印象がある。


105 :デフォルトの名無しさん:2008/12/19(金) 15:17:13
>>104
DOMにしてもSAXにしても確かに属性にした方が楽ですね。

106 :デフォルトの名無しさん:2008/12/20(土) 00:33:05
>>103
<svg:path d="M 0 0 L 0 100 100 100 100 0 0 0" />

107 :デフォルトの名無しさん:2008/12/20(土) 03:37:06
>>99
「XML 要素 属性 使い分け」でググるといくつか出てくるから参考にするとよろし

108 :デフォルトの名無しさん:2008/12/25(木) 02:19:56
xsltで質問です。

xmlをxslでhtmlにしたいのですが、
できるhtmlに文書型宣言を入れることはできるのでしょうか。

よろしくお願いします。

109 :デフォルトの名無しさん:2008/12/25(木) 02:23:54
>>108
omit-xml-declaration を no にして doctype-public, doctype-system を指定。


110 :デフォルトの名無しさん:2008/12/25(木) 02:37:16
>>109
xml:outputのところですよね。
うまくいきました。

どうもありがとうございます!

111 :デフォルトの名無しさん:2008/12/27(土) 14:29:33
自分のホームページの資料的コンテンツのところをXML&XSLTにしようと思って勉強しはじめました。
友人に貰った何年も前の「10日で覚えるXML入門」とかいうの本を見てるんですが、いまいち分かりにくいので、他の入門書があったら教えて貰えませんか?
分けあって今PCがネットに繋げられない状況なので、ぐぐれってのは無しでお願いします(^_^;)

112 :デフォルトの名無しさん:2008/12/27(土) 15:13:39
どっちかというとXSLTの本を買うべきなんじゃないかという気がするけど、
俺は全然わからないのでえろい人たのむ

113 :デフォルトの名無しさん:2008/12/27(土) 15:23:01
Webになっちゃうけど「万葉の想い」には時々お世話になります。
とても説明が丁寧なので大変助けられます。
同僚が近くにいるときには微妙に利用しにくいのが何ですが(笑)。

114 :デフォルトの名無しさん:2008/12/27(土) 19:16:44
>>113
Webは見たこと無いけど、書籍( ttp://www.amazon.co.jp/dp/4881662201/ )はよかったな

115 :デフォルトの名無しさん:2008/12/27(土) 20:01:03
とりあえずオライリーいっとけ

116 :デフォルトの名無しさん:2008/12/28(日) 11:30:54
>>112->>115
レスありがとうございます。
さっそく探してみようと思います。

あともう一ついいですか;
>>111で書いた資料部分だけじゃなくて、サイト全部をXML&XSLTで作るってのはアリでしょうか?
やるなら徹底的にやりたくなってきてしまいました;

117 :デフォルトの名無しさん:2008/12/28(日) 14:00:00
なし。
ブラウザ実装のXSLTトランスフォーマは屑だらけな上、互換性ないから。
そういうことしたいならphpとかjspとかそっち系。

118 :デフォルトの名無しさん:2008/12/28(日) 17:20:33
標準準拠してない処理系を切り捨てる気があるなら十分アリ。

119 :デフォルトの名無しさん:2008/12/28(日) 17:30:58
挑戦してみて一度挫折してみるのも技術の可能性と限界、適切な適用領域
を理解するために良いかも。

以前「元データのXMLをこのXSLTで変換すると、こ〜んなインタラクティブ
なHTMLページに!」なんてものを紹介された事があって、その実装の詳細
をみて驚愕した事がある。

それはまさにJavaScriptコードを生成するXSLT。HTML要素を出力する
templateの記述はほんの数行で、あとはJavaScript変数に値を代入する
templateやJavaScript関数を実行するtemplateが延々と続く。
これでXMLデータを変換すると殆ど空っぽのHTML文書に巨大JavaScript
プログラムが埋め込まれたものを生成。
で、具体的なHTML文書中の表示要素の生成やインタラクティブ云々は
全てJavaScriptプログラム側に丸投げされているという、そういう代物。

で、見て関心しているだけだったら良かったのだけど、そのXSLTのデバッグ
を仕事に振られて・・・(´Д⊂

120 :デフォルトの名無しさん:2008/12/28(日) 17:40:32
ろくにクロスブラウザされてなくて動作チェックに苦労したと・・・。

121 :デフォルトの名無しさん:2008/12/28(日) 17:43:46
クロスブラウザとかライブラリ側でやってくれてないと死ねるな。

122 :デフォルトの名無しさん:2008/12/28(日) 18:19:33
クロスブラウザも苦労しましたが、一番死ねたのがXSLTとJavaScriptが
素晴らしくフュージョンしてコンバインしていた点です。
XSLTのtemplateとしてJavaScriptの関数宣言が記述されていて、その
関数定義中の所々にまたXSLTのapply-templatesやfor-eachが記述
されている。

で、変換するXMLデータに応じて新しい関数を動的にバキバキ宣言して、
そのロジックをニョキニョキと自動生成するのです。

その技術ロマンは理解出来ないわけでもありません。ですが、

・変換対象のXMLデータに応じて、毎回JavaScript関数の内容が変化(涙)
・JavaScriptのデバッグをするのに、書き換えるのはXSLT、そのもどかしさ

・・・最終的にはXMLデータをJSON風のJavaScript Objectの配列に変換
するところだけにXSLTは用いて、「静的な」JavaScriptプログラムとして
ロジックを一から書き直して放り込んで始末しました。

プログラムの世界には、時々「混ぜては危険」なものもあると実感しました。

123 :デフォルトの名無しさん:2008/12/28(日) 18:36:18
>関数定義中の所々にまたXSLTのapply-templatesやfor-eachが記述
されている。
>
>で、変換するXMLデータに応じて新しい関数を動的にバキバキ宣言して、
>そのロジックをニョキニョキと自動生成するのです。

さすがチューリング完全のXSLT・・・と言いたいが、
そういうのは実行中にオブジェクトのプロパティに関数突っ込むのがプロトタイプベースOOPの流儀なんだが。
ろくにjavascript触れないPGの苦肉の策にしか見えない。

てかHTML+DOMだけでできる気がする。

124 :デフォルトの名無しさん:2008/12/28(日) 18:40:59
言語のコンパイラひとつ丸ごとデバッグしろっていうのに等しいなw

125 :デフォルトの名無しさん:2008/12/28(日) 19:06:30
実際、言語コンバータ一つ丸ごとデバッグしてるので間違ってないな。

126 :デフォルトの名無しさん:2008/12/28(日) 19:08:25
>>123
元々はSVGによるグラフをXSLTを使って生成する事が目的だった様です。
ところがSVGの代わりにFlashのグラフコンポーネントを使う事になって、
そのFlashではパラメーターをJavaScriptで渡す必要があった。
で、「よ〜しJavaScriptコードもXSLTで生成しちゃうぞ〜」となった様です。

やがてXSLTを用いたJavaScriptコードの生成技術にもますます磨きが
かかり、関数宣言やロジック実装までXSLTでバキバキ行うように。

いや動く、確かに動くんです。デバッグの手間や拡張さえ考えなければ。
技術の無駄遣いというか、どこで磨き方の方向を誤ったのやら・・・

>>124
いや、まさにそんな感じです。プログラムだけではなくコンパイラの面倒も
見なくちゃいけない、そんな感じでした。

127 :デフォルトの名無しさん:2008/12/29(月) 00:47:44
俺はPHPでXSLTでXML整形してかきだすWikiみたいの作ってるけど
未実装関数とか多いわ挙動おかしいわで苦労することだけは伝えておこう。
あとhtml5で書こうとしてXSLTからはDOCTYPE生成できないとか、
妙に新しいことやるのもダメポ。

128 :デフォルトの名無しさん:2008/12/29(月) 01:11:45
>>127
DOCTYPE が生成できないとか嘘だろ。

129 :デフォルトの名無しさん:2008/12/29(月) 23:22:05
>>126
なんか見る人が見たら一発で特定されそうだなw
まぁ、なんというかお疲れ様

130 :デフォルトの名無しさん:2008/12/30(火) 17:59:51
xml好きの俺が仕事納めに一言申します

php, jsp, aspとかのソース見てると罪悪感
嫌悪感を感じます
<e name="<%= value %>" />

なんか、いや、もうっやめてあげてえーー

131 :デフォルトの名無しさん:2008/12/30(火) 18:23:09
こういうXMLに変数値を埋め込む方法は悩ましいですねぇ。
E4Xではどうでしょう(以下はActionScript3の例)。

var value:String ="Foo bar"
var xml:XML = <e name={value} />

二重引用符が必要無いのが素敵。

132 :デフォルトの名無しさん:2008/12/30(火) 18:43:15
hamlとか割といいと思いますヨ

133 :デフォルトの名無しさん:2008/12/30(火) 21:40:53
普通にDOMで吐き出してるなあ

134 :デフォルトの名無しさん:2009/01/18(日) 23:24:09
亀だが、JSPならXML構文使えば?
数値文字参照とかELとかでいくらでも解消できるだろ。

135 :デフォルトの名無しさん:2009/01/20(火) 11:01:04
データをCSVからXMLに移行しようと思ったのですが、本が古くて今でも通用するのか心配です。
XMLでデータを作成して、XSLTでIEに表示させるようにするのが主流であってますか?
CSSという奴はどういう位置付けなんでしょうか?

136 :デフォルトの名無しさん:2009/01/20(火) 11:01:41
すいません上げさせてください。

137 :デフォルトの名無しさん:2009/01/20(火) 11:47:45
>>135
XML で作成したデータを XSLT で変換するのは
IE じゃなくて Java とかのプログラムを使うのが普通かと。
ユーザーが全員 IE を使ってるわけではないし
全てのブラウザが正しく XSLT に対応しているわけでもない。
自分だけで使うなら IE でも全然かまわないが。

XSLT が文書構造(スタイル)を決定するのに対して
CSS は見た目(スタイル)を決める。
例えばデータを XSLT で表構造に変換して CSS で表に枠を付けるみたいに。

138 :デフォルトの名無しさん:2009/01/20(火) 12:26:50
Java入れるくらいならそのページは見ない。

IE使ってる人 > そのページを見るためにJava入れてもいい人

この式が成り立つなら、IE対応で良いのでは?
サーバーサイドに関してはどうでもいいと思いますね。

139 :デフォルトの名無しさん:2009/01/20(火) 12:31:46
これほどまでに珍妙なレスは久々に見た気がする

140 :デフォルトの名無しさん:2009/01/20(火) 13:14:48
>>138
JavaってXMLをHTMLに変換して表示するだけならサーブレットでいいんじゃないの。
ユーザー側は何も「入れる」必要なく見れる。

サーブレットまで行かなくてもPHP(笑)とかRubyとかPython使ってサーバー側で変換して、
ユーザーには変換後のHTML(+CSS)のみ返すのが主流じゃないか?

…それともjavascriptで変換するつもりじゃないよね?

141 :デフォルトの名無しさん:2009/01/20(火) 13:32:07
>>135
>XMLでデータを作成して、XSLTでIEに表示させるようにするのが主流であってますか?

そういう未来は結局来なかった、というのが正解では。

まずWebブラウザ上のXSLTプロセッサを利用してクライアントサイドで
XMLをHTML等に変換して表示、これはあまりポピュラーではない。
問題はつい最近までのブラウザのXSLT実装状況のばらつき。
積極的に使われるのは趣味か、イントラ等でクライアント環境が揃って
いる場合ぐらいではないかと思う。。

次にJava等のライブラリを用いてサーバーサイドで変換、変換結果の
HTML等をクライアントに送信する用途では、案外使われる。
ただしこの場合にはJSP等が対抗技術になる。
XMLで表現されたデータをそのまま表示する事というのは案外少なくて、
大抵はビューとの間にロジックを噛ます。そういう場合はXML上のデータ
を一旦Java等のオブジェクトにマッピングする必要があるし、この場合は
JSP等でビューを定義して出力した方が簡単。
サーバーサイドでの利用に関しては、ビューのテンプレートを記述する
技術のワンオブゼムという扱いだと思う。

142 :デフォルトの名無しさん:2009/01/20(火) 13:34:22
IEのXSLTエンジンが一番屑な気がするんだが

143 :デフォルトの名無しさん:2009/01/20(火) 13:46:15
XML+XSLTの本しかないのでわからないのですが
XSLTを勉強するのは意味無駄だということでしょうか?
今のIEコンポーネントで自分のアプリ内だけでXMLデータを表示させるにはなんら問題はないんでしょうか?
どのみちきれいに見えるようにCSSも勉強しないといけないということですね。

144 :デフォルトの名無しさん:2009/01/20(火) 15:40:24
無意味って事はないよ。勉強という意味では学んでみるのも
悪くない。ただその本が書かれていた頃に期待されていたほど
大活躍はしていないというのも事実だと思う。

CSSについては書いてある通り。XSLTによってHTMLを出力する
にせよ、そのHTMLを見栄えのするものにするには結局CSS等の
Webオーサリング界隈で使われている技術を用いる必要がある。

145 :デフォルトの名無しさん:2009/01/20(火) 23:27:43
CSS Lv3が控えてるからなぁ。あれは組版にも耐える仕様。XSLTと衝突する。
まあ日本語組版に耐えうるかは知らんが・・・日本語は手でやるのが最強だしな。

146 :デフォルトの名無しさん:2009/01/21(水) 09:19:08
http://www.w3.org/1999/XSL/Transform
はなんで書かないといけないんですか?
情報収集されているということなんでしょうか?

147 :デフォルトの名無しさん:2009/01/21(水) 10:22:47
なんだ釣りか

148 :デフォルトの名無しさん:2009/01/21(水) 18:31:12
いやまぁ、俺もそれで大分悩んだクチだが。

>>146
結論から言うと、それは「ただの一意な文字列」であるという以上の意味はない。
「xmlns:xsl="http://www.w3.org/1999/XSL/Transform"」と書けば、
<xsl:〜>というタグはXSLT的に意味があるよ、というお約束なだけ。

ブラウザで開いてみれば分かるけど、そのアドレス自体は仕様へのリンクが
張ってあるだけのページで、XSLT処理系もパースの度にそこにアクセスしたりはしない。

149 :デフォルトの名無しさん:2009/01/22(木) 07:21:58
ありがとう!全XMLを一括管理されてるのかと思ってXMLやめようかと思ったよ

150 :デフォルトの名無しさん:2009/01/22(木) 07:32:37
全xml管理を想像した…
すごいスペックだ

151 :デフォルトの名無しさん:2009/01/22(木) 07:59:41
THcompを思い出した。

152 :デフォルトの名無しさん:2009/01/22(木) 13:49:40
XMLのシンプルなデータ構造をブラウザで表示する場合一番いい方法はなんですか?
XMLにXSLTを参照させてXMLを表示
HTMLにXMLを参照させてHTMLを表示


153 :デフォルトの名無しさん:2009/01/22(木) 13:59:18
Firefox なら xml を見るモードがあるけど、そういうのはダメなの?

154 :デフォルトの名無しさん:2009/01/22(木) 14:53:10
見た目を調整したいのですが、いろいろ実現する方法があるので、違いがわからず
決めかねてるんですが、組み合わせは実現できればどうでもいいんでしょうか?

155 :デフォルトの名無しさん:2009/01/22(木) 15:41:11
xhtmlにしてfirefoxでエディットモードでいじればいいんじゃないだろうか。
表示周りはCSSごりごり書いて。

156 :デフォルトの名無しさん:2009/01/22(木) 15:46:36
html として解釈できない xml から html として解釈できる xml に変換するのが XSLT
html のレンダリング方法をいじる情報を付加するのが CSS

157 :デフォルトの名無しさん:2009/01/22(木) 15:58:01
>>152
xsltかjavascriptかってことなんかな?

158 :デフォルトの名無しさん:2009/01/22(木) 16:42:56
Linux使えばいい。

159 :デフォルトの名無しさん:2009/01/22(木) 19:14:31
XMLにXSLTを参照させてXMLを表示
HTMLにXMLを参照させてHTMLを表示

この2つだとどっちが自然ですか?
両方HTMLにXMLの情報を取り込んでレイアウトできるんですが。

160 :デフォルトの名無しさん:2009/01/22(木) 19:43:59
>>159

「自然」の定義と、

>HTMLにXMLを参照させてHTMLを表示

これでちょっとよく分からない。フレームやJavaScriptで取り込む
と言うこと?

あとはサーバを介すか全てクライアントで処理するかでも変わる。
現状WebブラウザのXSLTプロセッサの利用は現実的ではない。

161 :デフォルトの名無しさん:2009/01/22(木) 20:00:15
便乗質問しても良い?

XML+XSLT(サーバーサイド)がメインのサイトって、やっぱりテンプレートメインのサイトより少数派なんかな。

162 :デフォルトの名無しさん:2009/01/22(木) 22:45:54
>>148
でもちょっとくらいそういう欲目はあったかもしれない。

 未知構造の文書でも動的にnamespaceの参照先URLにアクセスして
 きっちりオンザフライでバリデーションします!なんてエレガント!
 俺って天才!

みたいな。


163 :デフォルトの名無しさん:2009/01/22(木) 22:56:19
>>162
ていうか、最初そういうものだと思ってスッゲー!って感動していた俺ガイル

164 :デフォルトの名無しさん:2009/01/23(金) 22:25:14
RubyのREXML(3.1.7.3)使っているんですが
こんなデータがあって
data1//----
<root>
<elem>1</elem>
<elem>2</elem>
<elem>3</elem>
</root>
----//
data2//----
<root><elem>1</elem><elem>2</elem><elem>3</elem></root>
----//
こんなコードで動かすと
//----
require "rexml/document"
xmldata = REXML::Document.new(File.new("data.xml"))

for i in 1..3
puts(xmldata.elements["/root"].elements[i,"elem"])
puts(xmldata.elements["/root"].elements[i,"elem"].index_in_parent)
end

続く

165 :デフォルトの名無しさん:2009/01/23(金) 22:25:45
データ1での結果//----
<elem>1</elem>
2
<elem>2</elem>
4
<elem>3</elem>
6
----//
データ2での結果//----
<elem>1</elem>
1
<elem>2</elem>
2
<elem>3</elem>
3
----//
こんな結果になります。
改行を一要素として数えている?

これってバグですかね?
それとも自分がバグ?

166 :デフォルトの名無しさん:2009/01/23(金) 22:28:26
xmldata.elements["/root"].size
でもそれぞれ7と3が返っている

XMLの仕様?パーサの仕様?バグ?
どなたかおしえてー

167 :デフォルトの名無しさん:2009/01/23(金) 22:47:23
改行がTEXTノードとして間に挟まっていると思われ。
xmldata.elements["/root"].elements.each {|e| p e}
とかで確認してみては。

168 :164:2009/01/23(金) 22:58:32
>>167
試してみました
結果は両方同じで以下のように表示されます
----
<elem> ... </>
<elem> ... </>
<elem> ... </>
----
CR+LFをLFやCRにしてみても同じでした
なぜだー

169 :デフォルトの名無しさん:2009/01/23(金) 23:10:26
index は要素だけじゃなくて全てのノードなのに対して
elements が要素しか返さないからじゃないのか?

170 :164:2009/01/23(金) 23:21:13
要素名指定なしで、indexのみで表示してみました
for i in 1..3
puts(xmldata.elements["/root"].elements[i])
end

結果はまた両方同じで
<elem>1</elem>
<elem>2</elem>
<elem>3</elem>

171 :164:2009/01/23(金) 23:23:08
こんどはrootから直indexで
for i in 1..3
puts(xmldata.elements["/root"][i])
end
----
<elem>1</elem>

<elem>2</elem>
----
<elem>2</elem>
<elem>3</elem>

----
む、微妙な差が。

172 :デフォルトの名無しさん:2009/01/23(金) 23:27:04
もちついてレスを検証したほうがいいぞ

173 :164:2009/01/23(金) 23:28:36
for i in 0..3
でやったらこんな感じ
----

<elem>1</elem>

<elem>2</elem>
----
<elem>1</elem>
<elem>2</elem>
<elem>3</elem>

----

index_in_parentはelements単位のindexじゃなくて、
parent[index]のindexを返すのか
で、これには何故か改行コードも一要素として数えられる、と

むぅ、なんか使いにくいぞ>index_in_parent

174 :164:2009/01/23(金) 23:34:06
えーと、ていうことは、今着目してる"elem"elementsが
親要素の中の何番目の"elem"elementsなのかを
直接知る方法が無いってことかい?

とりあえずもうちょっと検証してみます
ヒントくれた人ありがとー

175 :デフォルトの名無しさん:2009/01/23(金) 23:47:35
うりゃ

for i in 1..3
puts(xmldata.elements["/root"].elements[i,"elem"])
e = xmldata.elements["/root"].elements[i,"elem"]
puts e.parent.elements.index(e) #ここ注目
end

index_in_parentはNodeクラスで定義されているので、
index_in_parentがelementだけではなくTEXTノードも
含めた全ての子Nodeの中での位置を指し示すのは
当然の仕様なんですよ。

なのでelementの並びの中での位置を知りたければ
親elementのelements配列中でのindexを求めれば
良いわけで、上記の解。

176 :164:2009/01/24(土) 00:11:29
>>175
うおー、ばっちりです
これでコーディングが進みます
本当にありがとー

177 :デフォルトの名無しさん:2009/01/25(日) 21:22:42
>>157
最近jQueryを弄っていたので試しにXML Viewerを作ってみようと
したら、案外めんどくさかった。
Tree表示のjQuery Pluginを使えば数行でサクッと出来るかもと
思ったけど、DOMの12のNodeタイプにそれぞれ対応した処理を
書かなければならなかったのが面倒。

178 :デフォルトの名無しさん:2009/01/25(日) 21:24:10
以下のXMLをその下のXSLで変換してFireFoxで表示させようとしてます。
変換はFireFoxにやらせてます。

<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="hoge.xsl" ?>
<books>
<logo>http://www2.2ch.net/2ch.html</logo>
</books>



<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html><body>
<xsl:element name="img">
<xsl:attribute name="src">
<xsl:value-of select="logo" />
</xsl:attribute>
</xsl:element>
</body></html>
</xsl:template>
</xsl:stylesheet>

でもなにも表示されません。これって何か間違ってますでしょうか?


179 :デフォルトの名無しさん:2009/01/25(日) 21:52:40
>>178
画像じゃないじゃん

180 :デフォルトの名無しさん:2009/01/25(日) 22:02:41
<xsl:value-of select="books/logo" />

181 :デフォルトの名無しさん:2009/01/25(日) 22:05:21
>>179
ありがとうございます。
そうか、と思って直してIEで表示させたら表示できました。
でもFirefoxではやっぱり何も表示されませんでした。
IEとFirefoxってXSLの動きが違うのでしょうか?


182 :デフォルトの名無しさん:2009/01/25(日) 22:08:08
>>180
すいません。
180のとおりにやったらIEでもFirefoxでも同じように表示されました。
エラそうなこと言って失礼しました。


183 :デフォルトの名無しさん:2009/01/26(月) 09:34:23
Firefox3.0.5でローカルファイルのXMLでXSLでHTML出力させていますが
一階層上のXSLファイルを相対パスで指定するとXSLが適用されず
テキストのみの表示になります。

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../style.xsl"?>


同一のファイル構成で以下のブラウザでは問題なく表示できました。
IE7/Opera9.63/Safari3.2.1/Chrome1.0.154.43/Seamonkey1.1.14/Netscape9.0.0.5

Firefox3.1beta等でも試してみたところ3.05と同じです。
ただしWebにあげるとどのバージョンのFirefoxでも問題なく表示できます。

Geckoの問題?

184 :デフォルトの名無しさん:2009/01/26(月) 11:57:32
>>183
先日俺も同じ状況に陥った。
結局 Saxon で前処理してから表示するようにしたけど
やっぱ Firefox が原因なのか。

185 :デフォルトの名無しさん:2009/01/30(金) 02:50:30
>>184
これはFirefoxのバグになるのかな?
仕様・・・ってわけにもいかないよね

186 :デフォルトの名無しさん:2009/01/30(金) 07:47:26
ローカルだとなんかセキュリティがかかっちゃうとか?

187 :デフォルトの名無しさん:2009/01/30(金) 14:28:54
ローカルだとローカルにあるファイル参照できないよ。mozilla系は。doctypeでSYSTEM指定しないとだめだったはず。

188 :デフォルトの名無しさん:2009/02/05(木) 19:33:29
Win2008のイベントログをXMLDOMで読み込んで使いたいんですが、XPathクエリがうまく動きません。
何が悪いか見ていただけませんか。

コード(test.vbs)
--
Set dom = CreateObject("Microsoft.FreethreadedXMLDOM")
dom.async = False
dom.setProperty "SelectionLanguage", "XPath"

dom.load "event.xml"
strPath = "*[System/EventID=12012]"
Set colNodes = dom.documentElement.selectNodes(strPath)

WScript.Echo "nodes:" & colNodes.length
--

XML
--
<?xml version="1.0" encoding="SHIFT_JIS"?>
<root>
<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'><System><EventID>12011</EventID></System></Event>
<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'><System><EventID>12012</EventID></System></Event>
</root>
--

xmlns='http://schemas.microsoft.com/win/2004/08/events/event'がないとうまく動くのですが、xmlnsを指定している場合に
XPathクエリの指定方法が調べた限りで見つからなかったので。

189 :デフォルトの名無しさん:2009/02/06(金) 10:29:01
>>188
XPathではプレフィックスなしの要素名は名前空間なしと決まっているんだ。

MSXMLだと名前空間コンテキストを指定する方法があったはず。それでプ
レフィックス⇒名前空間の対応を指定して、XPath中ではプレフィックス
付きで書く。


190 :188:2009/02/06(金) 11:29:45
回答ありがとうございます。

こんな感じですかね?
エラーは出ないけれどノードは認識しないので、まだ何かが足りない風味ですが。

----
Set dom = CreateObject("Microsoft.FreethreadedXMLDOM")
dom.async = False
dom.setProperty "SelectionLanguage", "XPath"
dom.setProperty "SelectionNamespaces", "xmlns:evt='http://schemas.microsoft.com/win/2004/08/events/event'"

dom.load "event.xml"
strPath = "/root/evt:Event[System/EventID=12012]"
Set colNodes = dom.documentElement.selectNodes(strPath)

WScript.Echo "nodes:" & colNodes.length
----
理解が足りてないようなので、もう少しぐぐってみます。

191 :188:2009/02/06(金) 11:34:08
連続で失礼します。

---
strPath = "/root/evt:Event[evt:System/evt:EventID=12012]"
---
でいいんですね。
うまく取得できるようになりました。

ちなみに、検索の[]内をwevtutil.exeに投げるXPathと同じにしたかったのですが、evt:Systemとかつけなくて済む方法はあったりしますか?
もしご存じであれば教えてください。

192 :デフォルトの名無しさん:2009/02/06(金) 19:33:09
/root/evt:Event/evt:System[evt:EventID=12012]/..

193 :188:2009/02/09(月) 14:10:02
書き方が悪かったですね、失礼しました。
wevtutilと同じように、System以下をプレフィックスなしで書きたかったのですが、仕様で無理みたいなので今回はこのまま進めようと思います。
回答ありがとうございました。

194 :デフォルトの名無しさん:2009/02/10(火) 18:00:50
Xerces C++を使っています。

とあるアプリケーション(A)のモジュール(B)が返したXMLツリーを
Aで管理しているXML文書の子要素として取り込むという処理を行いたいのですが、
BからAが管理するXML文書にアクセスできないようにしたいと思っています。

AからBにドキュメントオブジェクトを渡さないようにして、
Bの内部でXMLツリーを作成したいのですが、どのようにしたらいいでしょうか?

AとBの間の受け渡しはXMLのテキストで行います。

Bの中でドキュメントを作成して、ルート以下をメモリ上にシリアライズして
それをコピーする方法が考えられるのですが、もう少しスマートな方法はないでしょうか?

195 :デフォルトの名無しさん:2009/03/08(日) 10:39:12
XML の内容を比較するようなツールってありますかね?

XML のデータをツリーとしてみたときに、2つのツリーで異なるノードがあったとき
それを報告してくれるツールといいますか... あと XML のフォーマットの任意性
(改行やインデントの差、順序に寄らないノードのXMLでの出現順序等)を
ちゃんと考慮して、内容としての差のみ表示してくれるとうれしいのですが。

とりあえず linux でコマンドラインから使えたりすると非常にいいです。
が、Win や Mac 等の環境もあり、とにかく差分を表示してくれるようなソフトが
あるなら見てみたいなと思うので、ご紹介いただけると助かります。

196 :デフォルトの名無しさん:2009/03/08(日) 15:21:26
「xml diff」でググれ

197 :デフォルトの名無しさん:2009/03/11(水) 21:51:41
xmlstarletでselすると&とか数字とかに文字化けするんですが
どうしたらなおりますか?

198 :デフォルトの名無しさん:2009/03/12(木) 08:10:48
文字化け…?

199 :デフォルトの名無しさん:2009/03/12(木) 09:34:32
>>196
どうもありがとうございます。しかし何だか古い情報にしかヒットしない感が。
よほど需要が少ないのか、すでにソフトが枯れているのか...

とりあえず一つ一つ当たっていますが、もし個人的にお勧めなのとかあれば
教えてくださいますか?

200 :デフォルトの名無しさん:2009/03/13(金) 15:09:08
XML Schemaについて質問なんですが。
実体参照を定義したいんですがどうやればいいかわかりません。
なお、すでにググってあります。

201 :200:2009/03/13(金) 15:36:09
さらにググったらないとか…orz
かといって列挙が必要なのでDTDは不可能。
なんかいいスキーマ言語はないもんかね。

必要条件
実体参照をサポートするもの
列挙をサポートするもの
範囲指定が容易であればなおよい

もしDTDとXML Schemaの連携ができればそれで終わりなんですがね。

202 :デフォルトの名無しさん:2009/03/13(金) 21:33:33
>>195
例えばxmlstarletってツールだと
xmlstarlet fo file.xml
でxmlファイルを、フォーマットの任意性を排除した形に整形できる

整形した後のファイルをdiffツールで比較すれば、とにかく差分を表示できると思う


>>197
xmlstarlet sel ... した結果を xmlstarlet unesc すればいいんじゃないかな
要はselの出力が数値文字参照になって(エスケープされて)困ってるんだと思う

203 :デフォルトの名無しさん:2009/03/14(土) 21:10:47
>>200-201
何がしたいのかよくわからんが、
実体を宣言できるのはDTDだけ。

204 :デフォルトの名無しさん:2009/03/16(月) 02:38:08
そうかなあ

205 :デフォルトの名無しさん:2009/03/16(月) 02:39:39
そうだよ。規格でそう決まってる

206 :デフォルトの名無しさん:2009/03/16(月) 10:58:33
>>203
やりたいこと
wdicのV6というフォーマットをXMLに移植すること

207 :デフォルトの名無しさん:2009/03/17(火) 03:50:15
何の説明にもなってないんだが……

54 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)