<XML総合 part="3"/>
レス数が900を超えています。1000を超えると表示できなくなるよ。
<スレッド name="XML総合" part="3" />
の方が一般的じゃね? >>1000でそれやったら美しいだろうな
スレタイ空要素だけど エレメントはxmlの用語。ノードはDOMの用語。
ruby厨でアンチxml厨はこういう基本も分かってないで批判するよな。
DOMの操作が複雑だとか用語が沢山あって分かりづらいとか、じゃあSAXでもStAXでも使えとry >>10-13
ノードはXML文書の構成要素のこと。
ノードには、ドキュメント・テキスト・エレメント・アオリビュート・コメントなどの種類がある。 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ってのを変えないと無理? どうだろう。おれの拙い知識だと、出来ない気がするなあ。
<adult>と<child>が<person>を拡張する形式にするとか… 0x00 含む任意の文字列を XML に保存したい場合、どうすればいいんでしょうか?
他のコントロールコードは数値文字参照でいけたんですけど、これだけどうにも
パーサーが受け付けてくれません。
http://www.w3.org/International/questions/qa-controls
確かに iilegal とされていますが、じゃぁどうすればいいのかがわかりませんでした。 >>20-23
ありがとうございます。 PI でいけそうな感じです。 XMLやRDFあたりを勉強する必要が出てきたのですが,何かよい書はないですか? XMLを「勉強する」ってのがどういうことかっていうのは難題というか禅問答な気がする >>31
自分でXMLパーサ書けるようになることを目指すというのはどうだろう? ascii文字しか使ってないxmlを読むにはexpatでも無駄になっちゃうよね…
LC_CTYPE=Cのgrep並の効率を持ったパーザは自作するしか無いのかな? XMLって一過性の流行でしょ?もう終わったんじゃないの? マークアップ言語としてのXMLは滅びないでしょ。
少なくとも今現在は代替テクノロジがないし。 XMLというか、SOAPとかWS-*系のは何とかならないのかなぁと思う。
あと、フレームワークの設定で使われてる系とか。
必要性はわかるんだが、どうしても冗長過ぎるという感覚が拭えない。 通信系のXML(に限らないかもしれないけど)ってのは要するに、
「プロトコルは自分自身の則るコンテクストを相手に対して説明可能である必要がある」
って発想に基づいているかなぁ、と最近思うようになったんだけど、これは正しい?
だとすると、Protocol BufferはXMLの代替にならないだろうな、という気はする。
伝統的なプロトコルは、回線の両端でコンテクストが一致していることを前提にしているけど、
XMLは、ネットワーク上に多様なコンテクストに則ったプロトコルが氾濫する状況に
対して有効に働く方式であると言える気がするんだけど、どうだろう。
とはいえ、冗長なことには違いないわけで、もう一つくらいブレークスルーはないのかという
期待というか懸念は依然としてある。 <Keywords>
<Keyword>あ</Keyword>
<Keyword>い</Keyword>
<Keyword>う</Keyword>
</Keywords>
みたいなXMLがあって、それをXSLで
perlで書くと
---
my @Keyword = qw( あ い う );
my $out = join(',', @Keyword);
print $out, "\n";
## 出力:あ,い,う
---
と同じことがしたんだけど、Javascriptを使わないで出来ますか?
詳しい人方法をplz
>>39
xsl:for-each と xsl:value-of で検索。 XMLマスターのスレってある?
いろんな板見たけど見つからなかったんだけど 楽天APIで出力されるXMLをPHP5で解析しようとしてるんだが、
$xml = new SimpleXMLElement($xmlstr);
echo $xml->Body->itemRanking->Item[0]->title;
こんな感じでデータ取り出せないのかな。
どうしてもうまくいかない。 基本的な質問
タグ内にテキスト(PCDATA)とタグを混在させるのはありらしいですが、
なんか気持ち悪いのです
<title>テキスト1<keyword>テキスト2</keyword>テキスト3</title>
↑こういう書き方は普通にありなんでしょうか? 普通にあり。
title要素が、テキストノード、keyword要素、テキストノード、をchild nodes >>50
ありがとうございます
テキスト1とテキスト2とテキスト3は意味的には1つの繋がった文章なのですが
(要するにプログラム解釈としてkeyword要素を強調解釈させたい(文字装飾とかリンクのため)
テキストの中にタグを入れるというと文章が分断されてしまう感じがしたもので
普通にありならば堂々と使っていきたいと思います XMLみたいな文法厳しいものの前にHTML理解してこいって感じだな(汗 そもそもXMLはテキストをマークアップするための言語なわけだが… 51だけど
HTML見たことないわけねーだろ
DTDでいう<!ELEMENT tag1 (#PCDATA | tag2)*>って
気持ち悪くないのか?
なんかXMLって扱いにくいね
こういうとお前が馬鹿な(ryとか来そうだが PCDATAが気持ち悪いっていうことがもう爆笑なんだがwww
お前終わってるだろ #PCDATAとtag2の混合が気持ち悪いって言ってんだろ
ちなみに爆笑するお前も気持ち悪い 気持ち悪いとか爆笑とか、感性や感情を吐露されても
具体的なXMLとの関係はさっぱりわからん。
なぜ気持ち悪いのか、なぜ爆笑するのか、そこを掘り下げろよ。 参考になるかどうか分からないけど、かつて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のいう
「気持ち悪い」感覚は何となく理解できます。 プログラマとそうでない人、両方の視点が必要というわけか
非プログラマからは文書を表現しにくいと言われ
かといってプログラマからはJSONで十分じゃんと言われ
・・・でもそんなXMLが大好きです(AA略 そういわれてみて気づいたが、俺は
HTML は文章の一部をマークアップするためのもの、
XML はデータをツリー構造で表現するためのもの、
として捉えていたようだ。
文章の一部をマークアップするということが本来的に
マークアップがきれいな入れ子構造を持つことを要請するわけじゃないよね。
そう考えるとたしかに言葉通りの「マークアップランゲージ」の仕様としては「要素の入れ子構造」は無理な部分もあるのかも。
そもそもなぜ「要素の入れ子構造」は要請されたのかね? 入れ子だとXMLパーサを作りやすいからだろう。
実装の手間とインタフェースの使いやすさのバランスを取った結果が
こういう仕様になったんだと思う。 なるほど、やはりプログラムでの処理からの要請か…。ありがとう。
たしかにプログラムで処理するためのマークアップだもんね。 >>64
>入れ子だとXMLパーサを作りやすいからだろう。
つ SAX
しかし今度はパーサを使うプログラマが苦労するという罠。 > つ SAX
ああその通り。失礼しました。
入れ子ならDOMパーサを作りやすい、なら問題ないかな。
> しかし今度はパーサを使うプログラマが苦労するという罠。
要素のオーバーラップしたXMLをSAXパーサに食わせて
プログラマ側が構造化するとか、考えただけでクラクラする。 人間が直接パーサを作るなんてひどい拷問だ
自動生成させようよ
機械的に扱わせやすいための入れ子構造なんだし
処理そのものだけでなく処理をさせるものの生成にも構造が簡易なのが効いてくる SGMLパーサーの実装が不可能に近かったのでxmlを作りましたとさって経緯もあるからなぁ XSLTで、<xsl:template match="processing-instruction('xml')">
というテンプレートを見かけたんだけど、これってマッチすることあるの? >>71
PITargetは[Xx][Mm][Ll]という値をとり得ないから、
何らかのPIにマッチすることは決してない。 命題1:XMLはデータをツリー構造で表現するデータ形式である
命題2:XMLはあらゆるデータ構造の表現に用いられている
命題3:世の中に存在するデータ構造はツリー構造のみではない
というわけで質問なんだけど、
1. XMLのデータ表現にツリー構造が採用されたのはなぜ?
2. XMLと相性の良い、あるいは悪いデータ構造って例えばどういうの? 命題1と命題2のどちらかが偽だな
1. XMLのデータ表現にツリー構造が採用されたのはなぜ?
括弧の入れ子構造は自然にツリーになるから
(() ((()) ())))
2. XMLと相性の良い、あるいは悪いデータ構造って例えばどういうの?
相性が悪いのはグラフ(任意の矢印でつなげた構造)
-------
+→| | |
| +--|--+
+-----+
みたいな自分自身を指す構造とか。 >>79
なるほど。
あと、それを見てふと思ったんだけど、ラムダ式ってXMLで表現できるんだろうか 何も悩まず
<lambda arg="x"><lambda arg="y">
<add><value expr="x"/><value expr="y"/></add>
</lambda></lambda>
でいいじゃん。 大抵のデータ構造は二項関係の集合にバらして表現できるから
大概のデータはその気になれば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の定義もこんな
アプローチ(参照元と参照先の開始点と終了点)だったと記憶して
います。ただ、手書きでは絶対に書きたくないな、これ。 XSLTがチューリング完全だからそれで変換すればなんでもありじゃね? XSLTは "Sun, 28 ほにゃらら +0900(JST)" みたいな日付の書き方とかを始めとした
色んなデータ表現形式をサポートしてくれないとちょっと使いにくい。
JavaScriptでStringを引数としたString戻り値の関数を定義できる機能とかないのかね。 暇つぶしに論文漁ったらこんなのが。
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/> 昔のワープロデータの保存形式は、こんなのが多かった気がする。
HTML is <U length="14"/>precisely <B length="25"/>what we were trying to PREVENT. >>38でぼそぼそと書いたことの続きなんだけど、
XMLが冗長に感じる一番の理由って名前空間宣言と終了タグなのかな、
と>>89とかを見て思った。
いや、XMLの趣旨から言って必須なのは分かってるんだけど、
XMLのバイナリ化みたいな話って、この辺をやってバイト数減らしたりしてるのかな。 あと、>>79について、完全に歴史の話だと思うけど、
> 括弧の入れ子構造は自然にツリーになるから
というのは、XML仕様の作成者の意図は、「括弧の入れ子構造」を使った
データフォーマットを作ることが先にあって、ツリーになったのは結果論という認識でいい? INIファイルをXMLファイルに変換する方法を教えてください >>93
ファイルの頭に <ini><![CDATA[
ファイルの尻に ]]></ini>
とかく。 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部分は含んでくれない?
画像処理の実験データを記録するのに、勉強がてらxmlを使うことにしたのですが
例えば、目標位置を記録する場合の要素Targetがあったとして
例@
<Target num="0" x="315" y="292">
例A
<Target>
<Num>0</Num>
<X>315</X>
<Y>292</Y>
</Target>
この二通りを考えたとき、どちらの書き方が『正しい』と言えるのでしょうか。
自分はどちらでもいいのではと思っており、例@を採用していたのですが、報告会で先輩から
「そういう属性だけの要素が存在してもいいの?」や「そういうのを書くとき、一般的な決まりごととか無いの?」などの
質問を受けました。考えたことも無かったので調べてはみたのですが
これといった答えが見つからず、質問に参った次第です。
好みの問題なのでしょうか。それとも、何か決まりごとのようなものがあるのでしょうか。
参考になるwebサイトなどでも構いません。知っている方がおりましたら、どうかご教授ください。 ないからどういう風に書くかスキーマを書いて決める。 特に num や x が二つ以上あれば属性ではなく要素を選択するしかないけど、
構造体やハッシュ/辞書みたいなデータ構造を XML に落とす場合は
どっちでもいいと思うよ
ちなみに XML Hacks って本が言うには
要素にするか属性にするかは論争の種ではあるけれど
相互変換が可能なのでお好みでどうぞというのが結論だった気がする num や x が2つ以上あっても例えば空白区切りで書けるけど。 属性にできるなら属性にしたほうがコードは書き易い印象がある。
>>104
DOMにしてもSAXにしても確かに属性にした方が楽ですね。 >>103
<svg:path d="M 0 0 L 0 100 100 100 100 0 0 0" /> >>99
「XML 要素 属性 使い分け」でググるといくつか出てくるから参考にするとよろし xsltで質問です。
xmlをxslでhtmlにしたいのですが、
できるhtmlに文書型宣言を入れることはできるのでしょうか。
よろしくお願いします。 >>108
omit-xml-declaration を no にして doctype-public, doctype-system を指定。
>>109
xml:outputのところですよね。
うまくいきました。
どうもありがとうございます! 自分のホームページの資料的コンテンツのところをXML&XSLTにしようと思って勉強しはじめました。
友人に貰った何年も前の「10日で覚えるXML入門」とかいうの本を見てるんですが、いまいち分かりにくいので、他の入門書があったら教えて貰えませんか?
分けあって今PCがネットに繋げられない状況なので、ぐぐれってのは無しでお願いします(^_^;) どっちかというとXSLTの本を買うべきなんじゃないかという気がするけど、
俺は全然わからないのでえろい人たのむ Webになっちゃうけど「万葉の想い」には時々お世話になります。
とても説明が丁寧なので大変助けられます。
同僚が近くにいるときには微妙に利用しにくいのが何ですが(笑)。 >>113
Webは見たこと無いけど、書籍( ttp://www.amazon.co.jp/dp/4881662201/ )はよかったな >>112->>115
レスありがとうございます。
さっそく探してみようと思います。
あともう一ついいですか;
>>111で書いた資料部分だけじゃなくて、サイト全部をXML&XSLTで作るってのはアリでしょうか?
やるなら徹底的にやりたくなってきてしまいました; なし。
ブラウザ実装のXSLTトランスフォーマは屑だらけな上、互換性ないから。
そういうことしたいならphpとかjspとかそっち系。 標準準拠してない処理系を切り捨てる気があるなら十分アリ。 挑戦してみて一度挫折してみるのも技術の可能性と限界、適切な適用領域
を理解するために良いかも。
以前「元データのXMLをこのXSLTで変換すると、こ〜んなインタラクティブ
なHTMLページに!」なんてものを紹介された事があって、その実装の詳細
をみて驚愕した事がある。
それはまさにJavaScriptコードを生成するXSLT。HTML要素を出力する
templateの記述はほんの数行で、あとはJavaScript変数に値を代入する
templateやJavaScript関数を実行するtemplateが延々と続く。
これでXMLデータを変換すると殆ど空っぽのHTML文書に巨大JavaScript
プログラムが埋め込まれたものを生成。
で、具体的なHTML文書中の表示要素の生成やインタラクティブ云々は
全てJavaScriptプログラム側に丸投げされているという、そういう代物。
で、見て関心しているだけだったら良かったのだけど、そのXSLTのデバッグ
を仕事に振られて・・・(´Д⊂ ろくにクロスブラウザされてなくて動作チェックに苦労したと・・・。 クロスブラウザとかライブラリ側でやってくれてないと死ねるな。 クロスブラウザも苦労しましたが、一番死ねたのがXSLTとJavaScriptが
素晴らしくフュージョンしてコンバインしていた点です。
XSLTのtemplateとしてJavaScriptの関数宣言が記述されていて、その
関数定義中の所々にまたXSLTのapply-templatesやfor-eachが記述
されている。
で、変換するXMLデータに応じて新しい関数を動的にバキバキ宣言して、
そのロジックをニョキニョキと自動生成するのです。
その技術ロマンは理解出来ないわけでもありません。ですが、
・変換対象のXMLデータに応じて、毎回JavaScript関数の内容が変化(涙)
・JavaScriptのデバッグをするのに、書き換えるのはXSLT、そのもどかしさ
・・・最終的にはXMLデータをJSON風のJavaScript Objectの配列に変換
するところだけにXSLTは用いて、「静的な」JavaScriptプログラムとして
ロジックを一から書き直して放り込んで始末しました。
プログラムの世界には、時々「混ぜては危険」なものもあると実感しました。 >関数定義中の所々にまたXSLTのapply-templatesやfor-eachが記述
されている。
>
>で、変換するXMLデータに応じて新しい関数を動的にバキバキ宣言して、
>そのロジックをニョキニョキと自動生成するのです。
さすがチューリング完全のXSLT・・・と言いたいが、
そういうのは実行中にオブジェクトのプロパティに関数突っ込むのがプロトタイプベースOOPの流儀なんだが。
ろくにjavascript触れないPGの苦肉の策にしか見えない。
てかHTML+DOMだけでできる気がする。 言語のコンパイラひとつ丸ごとデバッグしろっていうのに等しいなw 実際、言語コンバータ一つ丸ごとデバッグしてるので間違ってないな。 >>123
元々はSVGによるグラフをXSLTを使って生成する事が目的だった様です。
ところがSVGの代わりにFlashのグラフコンポーネントを使う事になって、
そのFlashではパラメーターをJavaScriptで渡す必要があった。
で、「よ〜しJavaScriptコードもXSLTで生成しちゃうぞ〜」となった様です。
やがてXSLTを用いたJavaScriptコードの生成技術にもますます磨きが
かかり、関数宣言やロジック実装までXSLTでバキバキ行うように。
いや動く、確かに動くんです。デバッグの手間や拡張さえ考えなければ。
技術の無駄遣いというか、どこで磨き方の方向を誤ったのやら・・・
>>124
いや、まさにそんな感じです。プログラムだけではなくコンパイラの面倒も
見なくちゃいけない、そんな感じでした。 俺はPHPでXSLTでXML整形してかきだすWikiみたいの作ってるけど
未実装関数とか多いわ挙動おかしいわで苦労することだけは伝えておこう。
あとhtml5で書こうとしてXSLTからはDOCTYPE生成できないとか、
妙に新しいことやるのもダメポ。 >>127
DOCTYPE が生成できないとか嘘だろ。 >>126
なんか見る人が見たら一発で特定されそうだなw
まぁ、なんというかお疲れ様 xml好きの俺が仕事納めに一言申します
php, jsp, aspとかのソース見てると罪悪感
嫌悪感を感じます
<e name="<%= value %>" />
なんか、いや、もうっやめてあげてえーー こういうXMLに変数値を埋め込む方法は悩ましいですねぇ。
E4Xではどうでしょう(以下はActionScript3の例)。
var value:String ="Foo bar"
var xml:XML = <e name={value} />
二重引用符が必要無いのが素敵。 亀だが、JSPならXML構文使えば?
数値文字参照とかELとかでいくらでも解消できるだろ。 データをCSVからXMLに移行しようと思ったのですが、本が古くて今でも通用するのか心配です。
XMLでデータを作成して、XSLTでIEに表示させるようにするのが主流であってますか?
CSSという奴はどういう位置付けなんでしょうか? >>135
XML で作成したデータを XSLT で変換するのは
IE じゃなくて Java とかのプログラムを使うのが普通かと。
ユーザーが全員 IE を使ってるわけではないし
全てのブラウザが正しく XSLT に対応しているわけでもない。
自分だけで使うなら IE でも全然かまわないが。
XSLT が文書構造(スタイル)を決定するのに対して
CSS は見た目(スタイル)を決める。
例えばデータを XSLT で表構造に変換して CSS で表に枠を付けるみたいに。 Java入れるくらいならそのページは見ない。
IE使ってる人 > そのページを見るためにJava入れてもいい人
この式が成り立つなら、IE対応で良いのでは?
サーバーサイドに関してはどうでもいいと思いますね。 >>138
JavaってXMLをHTMLに変換して表示するだけならサーブレットでいいんじゃないの。
ユーザー側は何も「入れる」必要なく見れる。
サーブレットまで行かなくてもPHP(笑)とかRubyとかPython使ってサーバー側で変換して、
ユーザーには変換後のHTML(+CSS)のみ返すのが主流じゃないか?
…それともjavascriptで変換するつもりじゃないよね? >>135
>XMLでデータを作成して、XSLTでIEに表示させるようにするのが主流であってますか?
そういう未来は結局来なかった、というのが正解では。
まずWebブラウザ上のXSLTプロセッサを利用してクライアントサイドで
XMLをHTML等に変換して表示、これはあまりポピュラーではない。
問題はつい最近までのブラウザのXSLT実装状況のばらつき。
積極的に使われるのは趣味か、イントラ等でクライアント環境が揃って
いる場合ぐらいではないかと思う。。
次にJava等のライブラリを用いてサーバーサイドで変換、変換結果の
HTML等をクライアントに送信する用途では、案外使われる。
ただしこの場合にはJSP等が対抗技術になる。
XMLで表現されたデータをそのまま表示する事というのは案外少なくて、
大抵はビューとの間にロジックを噛ます。そういう場合はXML上のデータ
を一旦Java等のオブジェクトにマッピングする必要があるし、この場合は
JSP等でビューを定義して出力した方が簡単。
サーバーサイドでの利用に関しては、ビューのテンプレートを記述する
技術のワンオブゼムという扱いだと思う。 XML+XSLTの本しかないのでわからないのですが
XSLTを勉強するのは意味無駄だということでしょうか?
今のIEコンポーネントで自分のアプリ内だけでXMLデータを表示させるにはなんら問題はないんでしょうか?
どのみちきれいに見えるようにCSSも勉強しないといけないということですね。 無意味って事はないよ。勉強という意味では学んでみるのも
悪くない。ただその本が書かれていた頃に期待されていたほど
大活躍はしていないというのも事実だと思う。
CSSについては書いてある通り。XSLTによってHTMLを出力する
にせよ、そのHTMLを見栄えのするものにするには結局CSS等の
Webオーサリング界隈で使われている技術を用いる必要がある。 CSS Lv3が控えてるからなぁ。あれは組版にも耐える仕様。XSLTと衝突する。
まあ日本語組版に耐えうるかは知らんが・・・日本語は手でやるのが最強だしな。 http://www.w3.org/1999/XSL/Transform
はなんで書かないといけないんですか?
情報収集されているということなんでしょうか? いやまぁ、俺もそれで大分悩んだクチだが。
>>146
結論から言うと、それは「ただの一意な文字列」であるという以上の意味はない。
「xmlns:xsl="http://www.w3.org/1999/XSL/Transform"」と書けば、
<xsl:〜>というタグはXSLT的に意味があるよ、というお約束なだけ。
ブラウザで開いてみれば分かるけど、そのアドレス自体は仕様へのリンクが
張ってあるだけのページで、XSLT処理系もパースの度にそこにアクセスしたりはしない。 ありがとう!全XMLを一括管理されてるのかと思ってXMLやめようかと思ったよ XMLのシンプルなデータ構造をブラウザで表示する場合一番いい方法はなんですか?
XMLにXSLTを参照させてXMLを表示
HTMLにXMLを参照させてHTMLを表示
Firefox なら xml を見るモードがあるけど、そういうのはダメなの? 見た目を調整したいのですが、いろいろ実現する方法があるので、違いがわからず
決めかねてるんですが、組み合わせは実現できればどうでもいいんでしょうか? xhtmlにしてfirefoxでエディットモードでいじればいいんじゃないだろうか。
表示周りはCSSごりごり書いて。 html として解釈できない xml から html として解釈できる xml に変換するのが XSLT
html のレンダリング方法をいじる情報を付加するのが CSS >>152
xsltかjavascriptかってことなんかな? XMLにXSLTを参照させてXMLを表示
HTMLにXMLを参照させてHTMLを表示
この2つだとどっちが自然ですか?
両方HTMLにXMLの情報を取り込んでレイアウトできるんですが。 >>159
「自然」の定義と、
>HTMLにXMLを参照させてHTMLを表示
これでちょっとよく分からない。フレームやJavaScriptで取り込む
と言うこと?
あとはサーバを介すか全てクライアントで処理するかでも変わる。
現状WebブラウザのXSLTプロセッサの利用は現実的ではない。 便乗質問しても良い?
XML+XSLT(サーバーサイド)がメインのサイトって、やっぱりテンプレートメインのサイトより少数派なんかな。 >>148
でもちょっとくらいそういう欲目はあったかもしれない。
未知構造の文書でも動的にnamespaceの参照先URLにアクセスして
きっちりオンザフライでバリデーションします!なんてエレガント!
俺って天才!
みたいな。
>>162
ていうか、最初そういうものだと思ってスッゲー!って感動していた俺ガイル 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
続く データ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
----//
こんな結果になります。
改行を一要素として数えている?
これってバグですかね?
それとも自分がバグ? xmldata.elements["/root"].size
でもそれぞれ7と3が返っている
XMLの仕様?パーサの仕様?バグ?
どなたかおしえてー 改行がTEXTノードとして間に挟まっていると思われ。
xmldata.elements["/root"].elements.each {|e| p e}
とかで確認してみては。 >>167
試してみました
結果は両方同じで以下のように表示されます
----
<elem> ... </>
<elem> ... </>
<elem> ... </>
----
CR+LFをLFやCRにしてみても同じでした
なぜだー index は要素だけじゃなくて全てのノードなのに対して
elements が要素しか返さないからじゃないのか? 要素名指定なしで、indexのみで表示してみました
for i in 1..3
puts(xmldata.elements["/root"].elements[i])
end
結果はまた両方同じで
<elem>1</elem>
<elem>2</elem>
<elem>3</elem> こんどは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>
----
む、微妙な差が。 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 えーと、ていうことは、今着目してる"elem"elementsが
親要素の中の何番目の"elem"elementsなのかを
直接知る方法が無いってことかい?
とりあえずもうちょっと検証してみます
ヒントくれた人ありがとー うりゃ
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を求めれば
良いわけで、上記の解。 >>175
うおー、ばっちりです
これでコーディングが進みます
本当にありがとー >>157
最近jQueryを弄っていたので試しにXML Viewerを作ってみようと
したら、案外めんどくさかった。
Tree表示のjQuery Pluginを使えば数行でサクッと出来るかもと
思ったけど、DOMの12のNodeタイプにそれぞれ対応した処理を
書かなければならなかったのが面倒。 以下の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>
でもなにも表示されません。これって何か間違ってますでしょうか?
<xsl:value-of select="books/logo" /> >>179
ありがとうございます。
そうか、と思って直してIEで表示させたら表示できました。
でもFirefoxではやっぱり何も表示されませんでした。
IEとFirefoxってXSLの動きが違うのでしょうか?
>>180
すいません。
180のとおりにやったらIEでもFirefoxでも同じように表示されました。
エラそうなこと言って失礼しました。
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の問題? >>183
先日俺も同じ状況に陥った。
結局 Saxon で前処理してから表示するようにしたけど
やっぱ Firefox が原因なのか。 >>184
これはFirefoxのバグになるのかな?
仕様・・・ってわけにもいかないよね ローカルだとなんかセキュリティがかかっちゃうとか? ローカルだとローカルにあるファイル参照できないよ。mozilla系は。doctypeでSYSTEM指定しないとだめだったはず。 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クエリの指定方法が調べた限りで見つからなかったので。 >>188
XPathではプレフィックスなしの要素名は名前空間なしと決まっているんだ。
MSXMLだと名前空間コンテキストを指定する方法があったはず。それでプ
レフィックス⇒名前空間の対応を指定して、XPath中ではプレフィックス
付きで書く。
回答ありがとうございます。
こんな感じですかね?
エラーは出ないけれどノードは認識しないので、まだ何かが足りない風味ですが。
----
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
----
理解が足りてないようなので、もう少しぐぐってみます。 連続で失礼します。
---
strPath = "/root/evt:Event[evt:System/evt:EventID=12012]"
---
でいいんですね。
うまく取得できるようになりました。
ちなみに、検索の[]内をwevtutil.exeに投げるXPathと同じにしたかったのですが、evt:Systemとかつけなくて済む方法はあったりしますか?
もしご存じであれば教えてください。 /root/evt:Event/evt:System[evt:EventID=12012]/.. 書き方が悪かったですね、失礼しました。
wevtutilと同じように、System以下をプレフィックスなしで書きたかったのですが、仕様で無理みたいなので今回はこのまま進めようと思います。
回答ありがとうございました。 Xerces C++を使っています。
とあるアプリケーション(A)のモジュール(B)が返したXMLツリーを
Aで管理しているXML文書の子要素として取り込むという処理を行いたいのですが、
BからAが管理するXML文書にアクセスできないようにしたいと思っています。
AからBにドキュメントオブジェクトを渡さないようにして、
Bの内部でXMLツリーを作成したいのですが、どのようにしたらいいでしょうか?
AとBの間の受け渡しはXMLのテキストで行います。
Bの中でドキュメントを作成して、ルート以下をメモリ上にシリアライズして
それをコピーする方法が考えられるのですが、もう少しスマートな方法はないでしょうか? XML の内容を比較するようなツールってありますかね?
XML のデータをツリーとしてみたときに、2つのツリーで異なるノードがあったとき
それを報告してくれるツールといいますか... あと XML のフォーマットの任意性
(改行やインデントの差、順序に寄らないノードのXMLでの出現順序等)を
ちゃんと考慮して、内容としての差のみ表示してくれるとうれしいのですが。
とりあえず linux でコマンドラインから使えたりすると非常にいいです。
が、Win や Mac 等の環境もあり、とにかく差分を表示してくれるようなソフトが
あるなら見てみたいなと思うので、ご紹介いただけると助かります。 xmlstarletでselすると&とか数字とかに文字化けするんですが
どうしたらなおりますか? >>196
どうもありがとうございます。しかし何だか古い情報にしかヒットしない感が。
よほど需要が少ないのか、すでにソフトが枯れているのか...
とりあえず一つ一つ当たっていますが、もし個人的にお勧めなのとかあれば
教えてくださいますか? XML Schemaについて質問なんですが。
実体参照を定義したいんですがどうやればいいかわかりません。
なお、すでにググってあります。 さらにググったらないとか…orz
かといって列挙が必要なのでDTDは不可能。
なんかいいスキーマ言語はないもんかね。
必要条件
実体参照をサポートするもの
列挙をサポートするもの
範囲指定が容易であればなおよい
もしDTDとXML Schemaの連携ができればそれで終わりなんですがね。 >>195
例えばxmlstarletってツールだと
xmlstarlet fo file.xml
でxmlファイルを、フォーマットの任意性を排除した形に整形できる
整形した後のファイルをdiffツールで比較すれば、とにかく差分を表示できると思う
>>197
xmlstarlet sel ... した結果を xmlstarlet unesc すればいいんじゃないかな
要はselの出力が数値文字参照になって(エスケープされて)困ってるんだと思う >>200-201
何がしたいのかよくわからんが、
実体を宣言できるのはDTDだけ。 >>203
やりたいこと
wdicのV6というフォーマットをXMLに移植すること Microsoft.XMLDOMでProcessing Instructionの要素を取得する方法と
Processing Instructionの属性の値を読み書き方法を教えてください。
<?xml version="1.0" encoding="SHIFT_JIS"?>
<root>
<?aaa c="0" ?>
<eee g="0"/>
</root>
というようなXMLが有った場合、
eee要素の取得は XmlDom.documentElement.selectSingleNode("eee")
属性gの値の書き換えは、.Attributes.getNamedItem("g").text = "1"
で出来ますが、これと同じようにaaaのProcessing Instruction要素、
つまり<?aaa c="0" ?>を取得し、属性cの値を読み書きしたいのです。
この場合なら要素の取得は XmlDom.documentElement.childNodes(0)
で出来ますが、インデックス指定ではなaaaの名前指定で取得する方法をお願いします。
Microsoft.XMLDOMのバージョンは6.0です。 >>208
できないんじゃないかな。PIは要素じゃないし、普通は使わないし。
と、思ったけど、
selectSingleNode("processing-instruction('aaa')")
でできるような気がする。
PIの内容は単なる文字列で、属性という概念はないので、「c="0" 」は
自分でパーズするしかないと思う。
ものすごく初歩的な質問だったらすみません。
xmlのツリー表示って"任意のツリーだけ最初から閉じた状態で"表示することってできるんですか? 初歩的というか、意味不明です。
XMLを解釈して表示するのは、個々の処理系の責任なので、XMLとしてできるかできないかという話ではありません。
そういうソフトウェアを作りたいという話なら、答えはyesです。 xml単体ではできないということですね。
普段FireFoxでxmlファイルを開いて確認しているのですが、最初から全部のツリーが開いているのが個人的に気になったもので質問させていただきました。
答えてくださってありがとうございます。 >>213
それはFireFoxがそういう風に作られていると言うだけのことですから、XMLがどうかと言う話ではありませんね。
因みに、私の手元にあるXMLビューワは始めから全部閉じた状態で表示されます。 >>214
件の質問者じゃないが、そのビューアがノード名だけのツリー表示ではなく
Webブラウザのような一覧性のある表示が出来るならソフト名教えて >>213
納得するのはいいが、今日が何の日か知ってるのか? 一部のバカが、普段より更にバカなこと企てるが
一般人は何事もなく過ごす日 すみませんが、質問です。
たのしいXML: XSLT基礎編: xsl:copy-of
http://www6.airnet.ne.jp/manyo/xml/xslt/step30.html
に載っている
http://www6.airnet.ne.jp/manyo/xml/xslt/sample30/flights.xml
ですが、IE7だときれいにテーブルとして表示されますが、それ以外のブラウザ
(Firefox 3.02, Opera 9.64, Safari 3.1.2)だと、テーブルとして表示されま
せん。
これって、IEとその他、どちらが正しいのでしょうか?
ちなみにFirefoxだけエラーになるので、ローカルに保存して試しました。 >>218
xsl:output が指定されていないから table 要素をどう表示するかは処理系次第なんじゃね? >>219
なるほど!
xsl:stylesheet 要素の次に、
<xsl:output method="html" encoding="Shift_JIS"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
これを挿入すると、他のブラウザでも見事にテーブルになりました。
ありがとうございました。
ちょっとしつもん。
空白だけのドキュメントは、XMLデータと
してvalidでしたっけ?
>>221
XMLドキュメントとしてはinvalid。ルート要素が必須。
External parsed entityとしては、OK。
>>222
ありがと。
やっぱり要素はなんか必須なのか。
>External parsed entity
初耳。
調べたら「外部解析実体」とかいうやつね。
well-formedからルートをなくした感じ?
いつもスキーマなしのstandaloneしか
使わないから知らなかったよ。
XPATH で名前空間によらずとにかく a というローカル名の要素に一致させたいんですけど、
名前空間のワイルドカードみたいな指定はできます? >>225
*[local-name()='a']
お聞きしたいんですけど、どこかに、ユーザスタイルシートとしてXSLTを適用
できるWEBブラウザはありませんか?Operaは駄目でした。あとIEは使いづらい
ので避けたいです。
Amazon APIを使った開発をするとき、レスポンスをブラウザで全部表示すると、
量が多すぎて困るんで、XSLTを適用して見られたら便利かなと思うんですよ。
それとも、他にもっと便利なXMLブラウザはありますか?
>>229
> Firefox
すみません、どうやって設定するのでしょうか?
↓の記事によると、Firefoxは userContent.css というファイルをプロファイ
ルディレクトリに置くことでユーザスタイルシートを指定するようです。
ユーザスタイルシートによるカスタマイズ(1) - えむもじら
http://level.s69.xrea.com/mozilla/index.cgi?id=20070114_sdfx2_2
このファイル名からして、XSLTは指定できないように思えます。実際、
userContent.cssの内容をXSLTにしてみましたが、動作しませんでした。 foo要素かbar要素を選択するXPathってどう書けばいいんでしょうか。
イメージ的には //foo or //barみたいな感じです。 ああ、|が使えるんだ。
どうもスレ汚し済みませんでした。 文法で質問です。解析しようとするXML中に
[adlcp:datafrom]abc[/adlcp:datafrom]
[adlcp:mast]80[/adlcp:mast]
という「:」で区切られたタグがありました。この要素中のabcや80といった内容
を抽出したく思っています。
この場合、[A:B]のAとBはそれぞれ何という文法名称を持っているのしょうか?
(Aは単に要素?)
※書き込みCGIの都合上、タグ記号を<>→[ ]にしています。
>>236-237
どれが(どっちが)本当なんですかあ?
以下の様なXML(ちなみにjava.util.Propertiesが吐く出力です)
================検証対象================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="fooKey">fooValue</entry>
<entry key="barKey">barValue</entry>
</properties>
========================================
に対応するXML Schemaを記述したいのですが、以下ではエラーになりました
曰く「entryは子どもに要素は持てないよ(※1)」とのことなのですが、
どこが誤っていますでしょうか・・・
(改行規制が入ったため、スキーマだけ次に記述させていただきます)
(※1)パーザーからのエラー原文
[Error] :5:21: cvc-complex-type.2.4.d: Invalid content was found starting with element 'entry'. No child element is expected at this point. =================定義=================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="properties">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="entry">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="key" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
======================================
>>238
<A:B />
A:B -- qualified name
A -- namespace prefix
B -- local name >>239-240
エラーメッセージを読み間違えてる。
「要素'entry'から始まる不正な内容を発見しました。ここには子要素は認められません」
<sequence>は指定した要素を指定した個数だけ指定した順番で要求する定義。 >>243
ありがとうございます。sequence のままの場合、
データ側を試しに一つのentry要素1つにしてみると成功しました。
何度も質問してすみませんが、「entry要素が任意個並ぶ」の場合は
どうなるのでしょうか。any と choice は×でした。 >>244
っmaxOccurs, minOccurs >>245
ありがとうございます。min=0, max=unboundedで出来ました。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="properties">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="entry" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="key" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
そもそも>>239のXMLに対して妥当な書き方なのか分かりませんが… XSLTでhtml出力したいと思っているのですが、
MSXSL6でhtml出力されると
<!--hogehoge-->
<?php include("./include/index.php"); ?>
が出力されません。
コメントタグなどテキスト出力できる方法はありませんでしょうか?
よろしくお願いします。
hoge.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="xml" omit-xml-declaration="yes" indent="yes"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
media-type="text/html" />
<xsl:template match="/"><html>
<head>
<link rel="stylesheet" href="../../css/import.css"
media="print,screen" charset="shift_jis" type="text/css" />
</head>
<body>
<!--hogehoge start-->
<div id="hogehoge">
<?php include("./include/index.php"); ?>
</div>
<!--hogehoge end-->
</body>
</html>
</xsl:template>
</xsl:stylesheet> <!--hogehoge-->は
<xsl:comment>
<xsl:text>hogehoge</xsl:text>
</xsl:comment>
<?php ?> のほうはわかんね。 VB.net2005で要素探して文字列置換する関数教えて >>247
> <?php include("./include/index.php"); ?>
処理命令ならxsl:processing-instructionを使えばいいんでないかな。
XSLT 1.0仕様書だとここらへん。
ttp://www.w3.org/TR/xslt#section-Creating-Processing-Instructions >>248、251 ありがとうございました。
<xsl:processing-instruction name="php">
include("../../../include/business/index.php");
</xsl:processing-instruction>
でOKでした Java(6)でXHTML文書をorg.w3c.dom.Documentに読み込んだあと、そのまま
javax.xml.transform.Transformerで出力すると、
出力結果の文書に、元の文書にはなかった属性(たとえば<a>に shape="rect")が
追加されてしまいます。
これを抑止する方法はないでしょうか?
これらの属性値は暗黙のデフォルト値のようで、
出力前にElement#removeAttributeNode()で削除することができません。
(削除してもデフォルト値で復活してしまう)
Transformerのパラメータ等で属性のデフォルト値出力を抑止できると
大変たすかるのですが、対処法をご存じないでしょうか?
>254
ttp://w3g.jp/xhtml/dic/a#shape
あと、ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtdに
<!ELEMENT a %a.content;>
<!ATTLIST a
%attrs;
%focus;
charset %Charset; #IMPLIED
type %ContentType; #IMPLIED
name NMTOKEN #IMPLIED
href %URI; #IMPLIED
hreflang %LanguageCode; #IMPLIED
rel %LinkTypes; #IMPLIED
rev %LinkTypes; #IMPLIED
shape %Shape; "rect"
coords %Coords; #IMPLIED
target %FrameTarget; #IMPLIED
>
とあります。 XMLとDTDをテキストファイルに書いて
データベースを作ったんだけど、
それらのファイルを開いて検索したり手軽にするには
どうしたらいいですか?
XMLのフリーのDBMで定番ってあるの? PostgreSQLとかMySQLみたいな。 COBOLのフリーのJAVAで定番ってあるの? EclipseとかNetBeansみたいな。 俺メモ
//div/div より //div[parent::div]
//div//div より //div[ancestor::div]
の方が早い >>262
へぇーへぇーへぇーだけど、もろ実装依存じゃないの?
ちなみに、どういう要因でそうなってるの? 実装依存ではあるけど、たいていはスラッシュって閉じタグの検出用じゃないか?
だから省略するより軸は正規構文で書く方が早いのは納得できる 実装毎に差はあると思いますが、自分の知る限りでは全部早いです
先祖は1本腺で辿れるが、子孫は無数。とか構造的なもん?
漠然としてますが、自分なりの解釈です
俺メモ
//div//div//div より //div[count(ancestor::div)=2]
の方が若干早い
誘導されてきました。
【OS】 Windows XP SP2
【PC】 VAIO typeT
【質問内容】 xslファイルのエラー解決法を教えて下さい。@の部分がエラーですと言われるのですが、文法は間違ってないハズなのに…
ファイル名:Sample1.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="xml" encoding="Shift_JIS" />
<!-- 文章 -->
<xsl:template match="/">
<root>
<xsl:apply-templates select="cars"/>
</root>
</xsl:template>
<!-- 車リスト -->
<xsl:template match="cars"/>
<cars>車リストを処理しました。</cars>
@→</xsl:template>
</xsl:stylesheet> <xsl:template match="cars"/>
のケツに付いてる/でtemplate要素が終わっちゃってるからじゃない? 文法間違ってないって自信はどこからくるんだ?
バカでも文法知ってれば、このイージーミスは一目でわかるだろ
>@→</xsl:template>
missmatched closed tag xsl:template.
>>268さんの方法で試したら動きました。ありがとうございましたm( )m XML専用機能の付いたテキストエディタを使えば
こんな凡ミスは防げるのに。 mozilla系に読み込ませればexpatが怒ってくれる >>273
わざわざそんなモノをひきあいに
出さなくても、IEでおk。 ごめんねカーチャンOSがOpenSolarisだから
IEが使えなくてごめんね むしろ今時winでしか使えないIEを出す方が間違ってる macの無くなっちゃったんだよね……
10年ぐらい前に親が買ってきたmacにIE4.5を入れてはしゃいでたのが懐かしい C言語からexpatを使っているんですけど、タグの要素内容を取得するのってどうすればよいのでしょうか?
属性は取得できたのですが。 <xsl:sort>で躓いているのですが、data-type="text" でのascending, descending というのは
文字列の何を基準に並び替えているんですかね?文字数?
例えばxmlファイル<book>配下にそれぞれ下記の出現順に<publish>が並んでいて
<publish>昭和システム</publish>
<publish>昭和システム</publish>
<publish>ハードバンク</publish>
<publish>頌栄社</publish>
xslファイルで下記のように並び替えると
<xsl:for-each select="book">
<xsl:sort select="publish" data-type="text" order="ascending" />
ハードバンク
昭和システム
昭和システム
頌栄社
の順で並びます。
何故、ハードバンクが一番上にくるのでしょうか?
ハードバンクと昭和システムの昇順の差異はどこでしょうか?
Unicodeのコードポイント順だろうけどちゃんと調べたほうがいいぞ ありがとうございます。
なるほど、深いですね・・・
とりあえず飛ばして先進みます。 あるXMLに任意のXSLTを適用した結果のXMLを出力するような、
コマンドラインで使えるフリーのツールって知りませんか?
検索の仕方が悪いのかもしれないけれど、
ブラウザしか見あたらなくて 検索ワードに「コマンドライン」って入れるのを忘れてましたw
ぼろぼろ出てきたけれどどれが良いのやら
お勧めがあったら教えてください >>285
どもです。試してみます。
ありがとうございました。 以下の条件を満たすe1要素を取得するXPathはどう書けばいいんでしょうか
・a1属性の値がv1である
・a2属性の値が共通しているe2要素が同文書中に存在する
・そのe2要素のa3属性の値がv2である
サンプル:
...
<e1 a1="v1" a2="hoge">...</e1>
...
<e2 a2="hoge" a3="v2">...</e2>
... @a1="v1"のe1要素リストを取得する
↓
@a3="v2"のe2要素リストを取得する
↓
e1@a2の値を一つ取り出して、e2@a3と照合←繰り返す
おわり ああすまん三つ目を間違えた
リストのe1@a2の値を一つ取り出して、リストのe2@a2と照合←繰り返す >>287
xsltのように外部で変数を定義できる環境があれば一本のxpath式でかけるが、そうでないなら無理。 任意のXMLを任意のXSLでするCOBOLのJAVAってどこにありますか?
任意の検索をしてみましたが、あらゆるサイトは私を苦しめました。
あなたたちの力は私を大いに助けるでしょう。そして、は、にだけ、私のもので。 どう見ても機械翻訳だけど
なんでわざわざ2chの過疎スレに投げるのw ここって過疎スレなのか?
俺たちがいるってことは世界の中心なんだろ? >>301
そのページのどこを読めばそういう感想に至るのかについてkwsk >>301
ライブラリ開発といえばそこだよな
そこのC言語ライブラリはマジで最強 >>303
まぁ、プログラマじゃなきゃ分からんわなwww >>301
こっちも参考になるよ
http://dkingyoutility.sourceforge.jp/
最先端の技術をハッキングしているし、将来有望なプログラマだね 結局、>>291の質問に答えられる奴はここにはいないんだなwww ローカルのXMLをXSLスタイルシートを使ってブラウザ表示させていますが、
IE8では問題なく表示可能。FireFox3.0では何も表示されません。
ただし、<?xml-stylesheet type="text/xsl" href="http://hoge.hoe/hoge.xsl" ?> としている場合。
XSLファイルもローカルにおき、<?xml-stylesheet type="text/xsl" href="hoge.xsl" ?>とすると問題なく表示されます。
サーバの返すMIME-Typeの問題かと思いましたが、text/xmlでもtext/xslでもapplication/xslでもやはりだめです。
# 関係ないですが、IE8はtext/xmlだとXSLスタイルシートは適用されないよう。
どういう原因が考えられるでしょうか? よく分からんけど、別ドメインへのアクセスを抑制するセキュリティ上の問題じゃねえの。
ちなみにXSLスタイルシートのMIMEタイプはapplication/xslt+xmlまたはapplication/xml なるほど。
ありがとうございます。
その線で調べてみます。 表示ですが、それは支障なくIE8のローカルのXMLを表示できます。
XSLスタイルシートがあるブラウザ。 FireFox3.0に何も表示しません = あります。
「/テキストはxsl(xml)です。」. . xmlに喜ばせられます。
そして、あなたが言われて、タイプがあったとき<それを表現しました>、それを仮定するとき、
それが「テキスト/xsl」<の「Http://hoge.hoe/hoge.xsl」と等しい謝意Hrefに言われた、--スタイルシートになるのが、等しかったときに。
そのうえ、XSLがファイルする地元住民は、置かれます。
Hrefは「Hoge.xsl?」です。 問題、大部分へのMIMEの種類について。
サーバそれでテキスト/xml、テキスト/xsl、および>さえ役に立たなくて、リターンのときに等しい方が静まっているのを見て、支障なくそれを表示しました。
アプリケーション/xsl。
しかしながら、IE8がテキスト/xmlであるときに、それは
#、が関係ないXSLスタイルシートです: それを適用させないでください。
どんな原因が考えられますか? <age period="regularly"/> <age period="regularly"/> <response action="age" period="regularly" /> ――すなわち、過去のある時点である人が「ほげ」を使用すると、そこには「ほげ」の場が作られる。
そのとき、たまたま「ほげ」に共鳴した人がいれば「ほげ」の場は強められ、他の人にも影響を与える。
共鳴が繰り返されるうちにやがて、「ほげ」の場がより強力になり、日本全国で「ほげ」を使う人が増え、「ほげ症候群」と呼ばれるほど共鳴した人々が現われたのである。
また、「形の場」は現在だけでなく未来に対しても影響を与える。
すなわち、一度「ほげ」の場が構成されてしまうと、それ以後に生まれた人にすらその影響が及ぶのである。
特に、ユングの言うところの「集合的無意識」に影響を与え、意識が低下しているときに「ほげ症候群」の症状が現われやすい。
例えば、納期に追われながら、朦朧となりつつもプログラムを組む職業プログラマはソースプログラムの中に "hoge" を使用する傾向が高いと言われている。
しかし、最も顕著な例は、最 近 の 赤 ん 坊 が 「 ほ げ ぇ 、 ほ げ ぇ 」 と 産 声 を あ げ つ つ こ の 世 に 生 ま れ て く る こ と で あ ろ う 。
http://kmaebashi.com/programmer/hoge.html <response action="age" period="regularly" /> <response action="age" period="regularly" /> l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一 l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
<thread name="XML総合" part="3">
<wadai is_empty="true" damepo="true" />
</thread> element thread {
content
& attribute name { text }
& attribute part { xsd:positiveInteger }
}
content = empty
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_}
|:: ∈∋ ヽ |
//:: -=,=.ヮ. |ヽ、|
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
class thread extends Thread {
private String name = "XML総合";
private int part = 3;
public void run() {
while (true) System.out.println("<response action=\"age\" period=\"regularly\" />");
}
}
dtdの属性値列挙型みたいに同じ属性に複数の値を持たせるにはどうするの?
ビットフラグみたいな扱いで、
<encode available=(shift_jis|euc|utf-8) />
みたいにやりたいんだが。
<encode shift_jis="true" euc="true" />
こういうのがいいのかもしれんが、既存定義の属性名が重複してて、
新たに追加するのは避けたい。
>>348
XMLの仕様としては何も決まっていない。
属性値はただの文字列だから、好きなように区切り文字を定義すればいい。
参考までにXML Schemaでは、スペースを区切り文字としてList型が定義されている。
http://www.w3.org/TR/xmlschema11-2/#list-datatypes >>349
ありがとう。調べてみます。
org.xml.sax.Attributes#getValue(int index)が
> If the attribute value is a list of tokens (IDREFS, ENTITIES, or NMTOKENS), the tokens will be concatenated into a single string with each token separated by a single space.
と言ってるのも同じポリシーかな。
パーサまかせじゃなくてjavaで処理するなら何を区切り文字にしてもいいんだけど、
なるべくなら標準に近い形で組み込みたくて。
(変な仕様だとかっこ悪いし) SGML/XML的には空白区切りが流儀ということで合ってるよ。
それに合わせる必要はないけども。
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
XMLにバイナリ(base64)を仕込むのはアイコン程度なら断然有りだな。
XMLスキーマは何か一部で不評みたいだけど個人的には好き。 l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
>>354
HTMLにもデータURLってのが追加された
みたいだしな。
早く普及してほしい。
このスレの最初の方で、バイナリデータにはPI使えってあるけど
それだとデータ内に?>が入っていた場合に破綻するよね?
BASE64も読むのに結構時間かかりそうだし、
巨大なバイナリデータを表現したい時は、別ファイルにするしかないのか。
サイズ指定して、生のバイナリデータそのまま埋め込めるように
ならないかな。 l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一 >>357
BASE64で埋め込んで、XML自体をバイナリXMLにして送る、とかだとどーなるんだろ BASE64はデータ量がきっちり1.333..倍になる。
単位時間が求められる変換は基本的にちょっぱやで終わるよ。
ただBASE64で送って良いサイズはメールと同じだと思う。
だいたい1MB以下、もうちょっと許容して2MB以下って所。 l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一 l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
プラットフォーム非依存で構造的(階層的)なメッセージを
転送効率が問題になるほどの大量データ転送を実装したいのなら、
(テキスト形式である)XMLではなく、バイナリ形式のメッセージ仕様を
採用するのがよいと思う。もちろんソケットプログラミングの知識が
必要であったり、(Webキャッシュが利用できなくなることによる)
スケーラビリティの課題を抱えるというデメリットもあるが。
バイナリエンコーディング例 [詳細はWikipedia等を参照]
・XDR(Externel Data Representation, ONC/RPC)
・BER(Basic Encoding Rules, OSI/ASN.1)
・AMF(Action Message Format, Adobe ActionScript) ここでは、HTTPを使用せずに(ソケット上で)独自のプロトコルを
実装することを提案している。
HTTPではないから、当然Webキャッシュは利用できない。
もちろんBase64等でテキストエンコードしてからHTTPで転送することは
論理的には実現可能だが、(トンネリング実装の場合を除き)実質的には無意味。 Base64とか通さずapplication/octet-streamとか*/x-ナントカにして
直接HTTP上でバイナリデータ送ったらだめなの?
節子それ画像ファイルやないウィルスや、ってことにならなければ
いいんじゃないかな l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一 ttp://www.w3.org/XML/Binary/ l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
<response action="age" period="regularly" /> l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一 l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一 XSLTについて聞きたいのですが…
・<xsl:with-param><xsl:value-of select="要素"/></xsl:with-param>
で他のテンプレートに値を渡したとき、受け取った側では型は
どうなってしまうのでしょうか。
単に「要素の値(テキストノード?)」しかとれないでしょうか。
・受け取った側で要素の名前が知りたいのですが
良い方法があったら教えてください。
いろいろ調べたのですがネット上に情報が少なく
本屋にも本が少なくこの分野は大変ですね…
リファレンス的に使える本などありましたら併せて紹介ください。 ああ…どこが理解できてないのか段々わかってきた。
何渡しても「結果ツリーフラグメント」っつー奴になってんのね。
型判別できるわけじゃないし、ノードとしても見えないし
使いづらいですなぁ… l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一 l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一 ギャラクシーエンジェルTV版のノーマッドなのはわかるんだが、なぜ…
だれかこのスクリプト荒らし報告してる?かなり前からいるけど XML SpyみたいにC++用のコードが吐けるツールを探してるんだけど、Linuxで動作するコードを吐けるツールってあるかな。
XML SpyはWindows用のみ吐けるっぽいんだよね。 WEB上のHTMLやらXMLを読み込んで自動でデータ収集するソフトを作ってるけど
ちゃんとタグで閉じてなかったりへんな文字が入ってたりするページが多すぎ。
結局手動で処理する部分は必要だね。 質問です。
Windows XP Professional C#、 .NET 3.5、 Visual Studio 2008 Proの環境で開発をしています。
たとえば、書きのようなXmlドキュメントがあったとして、
属性kensakutaishougai、kensakutaishougai1、kensakutaishougai2以外の属性をすべて検索したいのですが、
どのようなXPathを書けばよいでしょうか?
とりあえず、
"//@*"
で、属性全てを検索できるのはわかったのですが、これだとkensakutaishougaiXも検索されてしまうため、適切ではありません。
宜しくお願いします。
<node1 attr1="abc">
<node2 attr1="def" attr2="ghi" />
<node3 attr3="def" attr4="ghi" />
<node4 attr5="def" attr6="ghi" kensakutaishougai="xxx" />
<node4 kensakutaishougai1="xxx" kensakutaishougai2="yyy" />
</node1> >>389 追記
ちなみに、ノードnode1,node2を検索しようと思った場合に
"//*[self::node1 or self::node2]"
とやれば良い事は分かってます。同じようにしたいのですが…… >>390
ヒント: local-name() で文字列比較
>>389
許されるならXPathよりLINQ to XMLつかったほうが楽だと思うよ。 VB6でもXMLのタグを読み込んだり書き出したり出来るんでしょうか? >>393
参照設定からMSXMLを探すんだ。ただし、少なくともバージョン3以上、3か4か6。 >>387
むかしむかしトライデントのパーサーが糞すぎて
IEでしか読めないhtmlが出回りだしたころNNがHTMLの正規化という方法を考案してな。
1)必ず必要なものはパース前に存在すると仮定する
2)パース中に必要になったものはとりあえず付け足してみる
3)エラーでパースを止めずに無視して進める
とりあえずこれやれば多少は読めるよ。
まあこれだけだといわゆるお尻pの処理がめんどくさいんだが。
HotJavaのパーサーですら実装してるからJDKのソース読んでみ。
ちなみにHTMLの正規化という単語はもう死語だからググっても出てこないよ。
実装して当たり前くらいに浸透してるからソース読んだ方が早い。
ああ、xmlパーサでこれやると破定するから。そういうパーサもあるけど。 ちなみに破定という単語はもう死語だからググっても出てこないよ。 xmlを読み込んで適当なサイズのバッファに格納しといてそれをパーサーに食わせたときに、バッファサイズが小さくて要素名を途切れさせてしまったらパースに失敗するんでしょうか? てかパーサに食わせるxmlが千切れてたら、そりゃダメだろ タグの開始と終わりがちゃんとバッファ内に収まるように担保してあげないといけないということですか? 文字列変数相手にしかパースできない汎用パーサはあまり見たことない。一度それっぽいのを正規表現ぐちゃぐちゃのやっつけで作ったけど。
オブジェクト指向環境用のパーサなら普通、その都度「もっと字をよこせ」と供給側オブジェクト(何ちゃらストリーム)に要求するような仕組みになってんじゃないかな。
JavaでいうならXMLReaderとInputSourceとか。
オブジェクト指向でないなら、おそらく呼び出し元の方へ「字が足りないから、途中の状態はキープしてるから、残りもよろしく」と結果を返してきそう。
・・・ところで fxis さんとこの日本語情報はどこにいってしまったんだー >>396
糞だったのはNN。
IEのほうがずっとマシだった。
そもそもリカバー続行するようなパーサは「XMLプロセッサ」名乗れないんじゃなかったっけ? XMLプロセッサを名乗る基準なんて定められてないよ まず>>387がHTMLとXMLをごっちゃにしたカキコして(これは問題なし)、
それに対して>>396が、(このXMLスレで)HTMLパーサのうんちくを
語りはじめたものだから、それ以降はスレの流れがグタクタに。
>>405,406もグダグダな流れに気が付かず。
タグの閉じていない(>>387)SGML文書はHTMLであるかもしれないけど、
XMLじゃありません。HTMLとXMLをごっちゃにして議論しないでーーー!! end-tagのないxmlをパースできるパーサもある >>416
タグの閉じていない(end-tag)のないSGML文書はXMLではありません。
>>416のパーサはSGMLパーサ(あるいはHTMLパーサ)と呼ばれるもの。
けっしてXMLパーサ(あるいはXMLプロセッサ)なんかじゃありません。
ごっちゃにしないでくださーーーい!! >>412
- タグが閉じていてもSGML文書はXML文書とは限らない。
- XML文書だからといってタグが閉じてるとは限らない(ie. well-formedでないXML文書)
- XMLプロセッサはヴァリデーションを行わない場合、well-formedでない文書も受け入れてよい。 416 ズザー
>>409
すまん、名乗るのは勝手だよな。
XML1.0規格の5章あたりのうろ覚え知識で、規格書上の「定義」の話をしてみた。
今読み直したら、「エラー報告」さえあれば整形式エラーのリカバーを継続しても構わないみたい。
>>413
>- XMLプロセッサはヴァリデーションを行わない場合、well-formedでない文書も受け入れてよい。
同じ話かな?
いずれにせよ、XMLプロセッサが異常系も上げずに変なXML読んで、ベンダ間で違う解釈されるのは勘弁なんだな。
XHTMLぐらいならいいんだけど。いや、よくない。 VC++2003でアンマネージド開発してます
MSXML4.DLLをインポートしてXML処理の実験をしてたのですが
<ROOT><TestNode>TestText</TestNode></ROOT>
上記のXMLデータをIXMLDOMDocument、IXMLDOMElement、IXMLDOMTextを使用して生成し
Test.xmlというファイルに保存するまではできました
しかし、その後このXMLファイルをIXMLDOMDocument::loadで読み込んで
documentElementからfirstChildを取得しようとするとエラーが起きてしまいます
「場所 0x00000000 の読み込み中にアクセス違反が発生」等と表示されるので
たぶんfirstChildが無いと言うことなんだと思いますが
あるはずのものがなぜ無いのでしょう?
ためしにIXMLDOMDocument::getElementByName(_bstr_t("TestText"))をして
取得したIXMLDOMNodeListのlengthを調べると0でした
ちなみに、loadはちゃんと戻り値がVARIANT_TRUEであることを確認しています
何かおかしなXMLだったりするのでしょうか? >>416
MSXMLは詳しくないけど、
> 「場所 0x00000000 の読み込み中にアクセス違反が発生」等と表示されるので
firstChild がない以前に、親ノードがぬるぽになってない?
> getElementByName(_bstr_t("TestText"))
_bstr_t("TestNode") じゃないの?
>>417
> 親がぬるぽ
最初は自分もそう思ったのですが
デバッグしてポインタ値を見る限り、0x03aなんとかとちゃんと有効なアドレスが入ってるようでした
_bstr_t("TestNode")ですね
コピペじゃなくて書き写ししたので、書き込んだ時に間違えてました・・・ getElementByName() って存在するの? getElementsByTagName() では?
コメントをブラウザ上で流れるようにしたい
っていうかぶっちゃけらいつべっていう動画配信サイトでニコニコ仕様を作りたいんだけれども
どうなってるの >>419
すいません、そこも書き込み間違いです・・・orz >>420
なんでこのスレに書き込もうと思ったの? >>421
IXMLDOMDocumentを得てからクラッシュするまでのコードを*ぜんぶ*
見せたほうが良いと思われる。
>>422
なんか調べたところによると、ブラウザってXMLで作られてるらしいんだぜ……? >>423
そうですね、ソースのその部分を載せてみます
VOID XmlTest() {
MSXML4::IXMLDOMDocument* w_lpDocument;
MSXML4::IXMLDOMElement* w_lpRoot;
MSXML4::IXMLDOMNode* w_lpNode;
TCHAR w_szAppPath[MAX_PATH];
std::wstring w_strAppPath;
std::wstring w_strXmlFile;
_variant_t w_varText(_TEXT("ChangeTestText"));
::GetModuleFileName(NULL, w_szAppPath, MAX_PATH);
w_strAppPath = w_szAppPath;
w_strXmlFile = w_strAppPath.substr(0, (w_strAppPath.rfind(_TEXT('\\')) + 1));
w_strXmlFile += _TEXT("Test.xml");
::CoInitialize(NULL);
if (SUCCEEDED(CoCreateInstance(MSXML4::CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER,
MSXML4::IID_IXMLDOMDocument, (LPVOID*)(&w_lpDocument)))) {
w_lpDocument->async = VARIANT_FALSE;
if(w_lpDocument->load(_variant_t(_TEXT("XMLファイルのパス"))) == VARIANT_TRUE) {
w_lpRoot = w_lpDocument->documentElement;
w_lpNode = w_lpRoot->firstChild; ←※ここでエラー
w_lpNode->nodeValue = w_varText.GetVARIANT();
w_lpDocument->save(_variant_t(w_strXmlFile.c_str()));
}
w_lpDocument->Release();
}
::CoUninitialize();
} >>425
古い知識かもしれなくて悪いんだけど
w_lpDocument->get_documentElement(&w_lpRoot)
じゃないか。
こういうの煩雑で嫌ならIXMLDOMDocumentPtrとか使えばよかったんだと思う。 >>425
IDEが提示してくれるプロパティらしきものはフェイクなんですかね・・・
とりあえず、仰るとおりにメソッド使用にして、各操作にSUCCEEDEDをかませて見たのですが
今度はDOMDocumentのloadで読み込みに失敗してるみたいです・・・もう何がなにやら・・・
if(SUCCEEDED(::CoCreateInstance(MSXML4::CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER,
MSXML4::IID_IXMLDOMDocument, (LPVOID*)(&w_lpDocument)))) {
w_lpDocument->put_async(VARIANT_FALSE);
if(SUCCEEDED(w_lpDocument->load(_variant_t(w_strXmlFile.c_str())))) {
if(SUCCEEDED(w_lpDocument->get_documentElement(&w_lpRoot))) {
if(SUCCEEDED(w_lpRoot->get_firstChild(&w_lpNode))) {
if(SUCCEEDED(w_lpNode->put_nodeValue(w_varText.GetVARIANT()))) {
if(SUCCEEDED(w_lpDocument->save(_variant_t(w_strXmlFile.c_str())))) {
MessageBox(NULL, _TEXT("保存終了"), NULL, MB_OK);
} else {
w_lpDocument->get_parseError(&w_lpParseErr);
w_lpParseErr->get_reason(&w_bstrErr);
w_strErr = _bstr_t(w_bstrErr, false);
MessageBox(NULL, (TCHAR*)w_strErr, _TEXT("Faild"), MB_OK);
}
}
}
}
}
w_lpDocument->Release();
}
ためしにload失敗のところでIXMLDOMParseErrorを取得してみたら
errorCodeは0、reasonは空でした・・・ 試行錯誤の結果自己解決しました
スマートポインタの使用に変更して、
w_lpNode->nodeValueをw_lpNode->firstChild->nodeValueにしたら
ちゃんと値の変更、保存ができました
お騒がせしました l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一 l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一 l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一 l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一 OOoのXForms文書は便利だな。
XMLファイルの入力フォームがこんなに簡単に作れるとは。
うまく作ればXMLデータベースみたいなのを作れるのかな?
てかOOoの問題だろうけど、相対パスでファイル保存する方法が分からない。 まあXFormsはHTML5に入れて貰えなかった時点で死んでしまったがな はぁ?
Web Forms 2.0のことも知らんのか? そんな程度の知識で知ったかぶりされてもな… XFormsとWeb formsは考え方からして全く別物だろ xmlはじめようと思うんだけど、おすすめのエディタやソフトなどはありますでしょうか・・・? MSXMLとIMXWriterPtrを使って、XMLをインデント付きで出力しているのですが、
アトリビュートの部分を一つごとに(または任意の文字数を超えた時点で)
改行して折り返すようなことは可能ですか?
Visual Studioのプロジェクトファイルのような記述をしたいのですが。
知らんがその手のレイアウトに拘るなら手書きの方が早いんじゃないかな。
値中の < > & " をそれぞれ < > & " に書き換えることだけ気をつければ
あとはプレーンテキストの出力とさして変わらないかと。 ・・・まさかの参照文字変換w
< > & " ね。 MSのXMLライブラリは触った事がないので役に立つかは分からんが....。
公式ドキュメントに出力形式を指定するオプションが明記されていないのなら、
>>465の手書きするという提案に賛成する。
というか、メソッドをフックするとかオーバーライトするような仕掛けは、
そのMSライブラリには用意されていないのかねえ?
自分の場合は、Rubyの標準XMLライブラリ(REXML)の出力形式に
不満があったのと、そのライブラリのAPI仕様の汚さにうんざりしていたので、
XMLライブラリを(手書きで)自作した。入力(パーズ)だけは標準ライブラリにまかせ、
あとは自作ライブラリで加工&出力するという形。
他のアプローチとしては、XSLTの採用も検討すべきかと。インデント加工を含め、
後々になってXML出力をカスタマイズしたいという要望はたびたび起こるもの。
だから、その加工処理をプログラムのロジックとして埋め込むのではなく、
XSLTプロセッサに変換(Transform)をまかせるという考え方。
MSもXSLTライブラリは提供しているのではないかと思う。 >>465-467
たしかに読み込みとは違ってパーサ処理も不要ですし、
文字列をUTF8にするルーチンさえ作ってしまえば、
自前でテキストファイルに出力して折り返しなども自由にできますね。
そっちの方向でも調査してみたいと思います。
このスレッドは定期的に見させていただきますので、
もしMSXMLやIMXWriterPtrの使いかた次第で可能になる方法をご存じであれば、
引き続き情報を教えていただけると嬉しいです。
ありがとうございます。 XMLって、HTMLの延長線上かと思ってなめてかかったんだけれど、そんなレベルじゃなかったね
他プログラミング言語やってたから何とかなったが、いきなり最初からXMLとなったら難しいだろうな、と思う >>472
W3Cって事ですか?
自分、英語があまり得意ではないとです・・・ 英語ドキュメントが読めないと、この世界じゃ生きられないぞ
翻訳サイト使ってでも頑張って読め 『10日で覚えるXML』にXMLSchemaの部分で書かれていたのですが、
<ym:books xmlns:ym="urn:books" title"一覧">
の<ym: > って何ですか?
その記述に関しては何も書かれていないし、ネットで検索しても自分には出てきませんでした
この<ym: >の部分の意味、そしてこの構文の名前(又はこの説明の載っているサイト)を教えていただけませんか?
違う、それは名前空間接頭辞。ymをmyと置き換えてもhhhhと置き換えても同じ。
なんならym:booksをただのbooksにして、xmlns:ymをただのxmlnsに置き換えても同じ。 CSVの時代遅れで、XMLの時代と聞いたので調べてみたのですが
http://www.atmarkit.co.jp/fwcr/rensai/imasara01/imasara01_01.gif
すごく見づらくないか
各要素が何を指しているのかがわかりやすいが、こんなもん?
それとも表示するソフトとかあるの? テーブル状のデータを見たいだけなら CSV でもいいんじゃね?
表示するソフトってどういう形式での表示を求めているかしらんが
メジャーなインターネットブラウザならスタイルシートに紐付けて表示できる。
その画像は IE のデフォルト表示だと思う。 見づらいですよ。
ていうか、適材適所です。
たとえば表計算のexport程度なら、私は迷わずCSVを選びます。
何かすでに使えるものがあって、それがxmlの入力を必要とするとかでなければ。 CSVはカンマや空白、ダブルクォーテーション等の扱いがめんどい JavaだとJAXBであっさりデータバインドできるからXMLのが便利だな。
あとXMLだとCSVと似たようなことすると、構造体配列のように扱えるから、
テキストとして開いた時に可読性がいい。(好きにインデント付けられる)
何十万件というデータ量でもなければCSVでプログラム組むことはないなぁ。 ミニマムに何かexportするときは"T"SVをまず選ぶかなぁ。
次にXML。CSVは他所とのやり取りで必要が無い限り回避。 xml下の書き方であってる?
<勇者>
<HP>100</HP>
<MP>100</MP>
<Str>100</Str>
</勇者>
それと、属性はどのような場合使うべき? べつに属性をどう使おうが自由だ。
個人的には
<勇者 xml:id=”ChID20091124T193800”/>
って感じで識別IDを置くくらいだと思う
あとどうでもいいが、それだとHPとMPのMaxが分からんぞ 名前空間はC++/Java/C#のプログラマとかじゃないとしっくりこないよなぁ。
iniファイルより設定ファイルとしての機能は上だけど、やりたいこと以外の情報が多すぎる。
配列にしたって
[DataSet01]
[DataSet02]
のようにセクションに連番した方が一般人には分かりやすい >>491
むしろ XML の名前空間を理解してから Java のパッケージや C# の名前空間を理解できるようになった。 ドメイン取る金なんて無いから、個人のプログラムで名前空間は使わないな。
どうしても付けるなら、urn:UUIDだな。ルール上、確か有りだったはず。 名前空間URIってmailto:でもいいんじゃね?
ドメイン取る金がないって .com なら年間1,000円未満、 .jp でも年間3,000円程度だぞ。 >>494
data: でもOK
>>495
OK >>496
しかしそのドメインをXML名前空間として使うなら、ドキュメントが存在する限り永劫にドメインを保持し続ける必要があるだろう ドキュメントがパブリックなものならドメインを保持する価値はあると思うが。
逆に非公開のドキュメントなら名前空間のドメインの存在・所有者うんぬんなんて瑣末な問題だろ。 それならそもそもドメインの必要なスキームのURIなんか使わなくていいし 名前空間にドメインが必要ってのがそもそも間違った考えだな
別に他人のドメインだろうがなんだろうが、使おうと思えば使えるさ。
ただパブリックな文書でそれやると恥ずかしいだけで。 XSLTにて、基点となるカレントノードが移動するのは<xsl:apply-templates>と<xsl:for-each>の他にどのようなものがあるのでしょうか? 『10日でおぼえるXML』やたのしいXML(http://www6.airnet.ne.jp/manyo/xml/)でXMLを勉強しているのですが、どうもIEだと動作するのに、FireFoxではエラーになる(又は作動しない)コードばかりです
例えば、このページ(http://www6.airnet.ne.jp/manyo/xml/xslt/step13-1.html)の下の方にあるコードを実行するとIEでは動くのに、
Firefoxでは『スタイルシートの読み込みエラーです: XSLT スタイルシートの MIMEタイプ が XML ではありません:』と表示されます
どのようにすればFirefoxでも表示されるようになるのでしょうか?
IEとFirefoxの表示方法の違いが分かりません
『10日でおぼえるXML』には一言も書かれていなかったのですが、XMLにもJavaScriptのようにIEとIE以外で書き分けをしなければいけないのでしょうか? >>505
XSLTのMIMEタイプをtext/xsltにしてるとか? まさかね…… l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一 XMLドシロウトです。
OBLIVIONというゲームのUIをカスタマイズ
してるんですが、解らない所があるので教えてください。
<x>
<copy src="Imp_UI_Settings" trait="_wepx"/>
<copy src="screen()" trait="width" />
<sub> 277 </sub>
<add>
<copy> 510 </copy> <!-- Defoult 510 -->
<sub> <copy src="screen()" trait="width" /> </sub>
<onlyif> <copy src="HUDMainMenu" trait="user3"/> <eq>
0 </eq> </onlyif>
</add>
</x>
この、<copy src="screen()" trait="wides">
って、なにやってるんでしょうか?
その前は、他のソースから値を拾ってるのは解るんですが、
screenが良く解らないのと、値の参照後に再度別のを拾っている場合、値はどうなるのか知りたいです。
>>510
それはまったくXMLと関係がない。OBLIVIONとやらに限定した話。
なので、ここで聞いてもムダ。
>>511
ゲームのUIですが、XMLで記述されています。
なんでここで聞くのが無駄なんですか? >>512
日本国憲法が日本語で記述されてるからといって、日本語学者に憲法について尋ねたりはしない。
ゲームのUIがXMLで記述されているからといって、XMLスレで尋ねるのはスレ違い。 つまりだ、XMLが決めているのは大枠の構造だけであって、
中身のデータがどういう意味なのかは使う人(ここではゲーム作者)次第。
だから、そんなXMLの応用(アプリケーション)について聞かれても答えようがない。 まあまあ。
XSLの書き方をここで尋ねるのと大して変わらんだろよ。
XSL並にメジャーなナニカと思って質問がくるなら仕方ない。
RPG記述の共通インフラとか聞いたことないからなー。
ま、おそらくはOblivion開発サイドしか知らない何かだ。 LSF BOOKSとかもスレ違いなのか、その辺どうよ。
そういやXMLじゃないけど、LinuxのQ&AってSGMLじゃなかったか。 XSLはXML処理系だから許せるが、XHTMLとかSVGとかのXMLアプリケーションはスレ違いだろう。
けど、XHTMLスレとかSVGスレってあったっけ。
さすがにゲームの設定ファイルとかは「開発元に聞け」と思うけど。
XMLが、未だに何かのアプリケーションだと思われてるのは何でだろうねぇ。 自分は、W3C・ISO・IETFで策定されたXML関連規格なら許容かな。
XSL-FO「たまにでいいので思い出してください」
固有のAPIの実装由来の話もスレチじゃないか?
XMLバリデータ通りませんならここだろうが。 >>521
みらくるドリームて。w
なにがそういわしめたんだ?
Firefox で <mo>(</mo> とかの描写が XHTML+MathML と MathML では異なるのが気になるなあ。 XMLって人間が書くのではなくソフトウェアに生成させて、ソフトウェアに読み込ませるものだとか書かれているのを見てふと疑問に思って質問させていただきたいのですが、本当ですか?
XMLの資格試験のようなものもあるし普通に人間がXML、XSLT、Schemaなど作るのだと思っていました
あまり良くXMLの事知らないのですが、例えばどのような自動作成ソフトウェアがあるのでしょうか? >>528
その文はXMLがプレーンテキストであることの意義を見失っている
別に人間が書いてもいいし人間が読んでもいい
ただXMLがソフトウェア(を作るプログラマ)にとって扱いやすいフォーマットだっていうのは確か
例えばXMLは終了タグの省略を許さないから、省略の有無を判定する必要が無い
またプログラマにとってお馴染みの木構造をしているから処理するコードが書きやすい
XMLを生成するソフトは山ほどあるから自分で調べてね >>529
SGML,XMLはコンピュータで文章を管理するために作られたものでそもそもは人間が扱うことは考慮してない。
プレーンテキストだから人間でも読める書けるは後付け的な結果論でしかない。
実質の問題としてSGMLの仕様は人間にはでか過ぎて複雑だし、XMLはXML hellを生んだ。
それでも手書きしようってのはコンピュータで管理するという本質から外れることになる。 簡単なXHTMLやXSLTは人間が手打ち。
逆に複雑なものやデータ交換用のものなら機械が作る
でFAだろう? 違うのか? 話を外れるけどプレーンテキストって言葉を間違って使ってた
http://en.wikipedia.org/wiki/Plain_text
http://www.artima.com/intv/plain.html
テキストファイルと同じような意味で使ってしまったけど
formatted text (XML等)と対置されるものなのね 何を言ってるんだ漏れは
意味付けと書式化を分けるのがXMLなのにXMLがformatted textなわけないじゃないか
>>532のバカ氏ねとか言わずにスルーしてくださいね >>530
> プレーンテキストだから人間でも読める書けるは後付け的な結果論でしかない。
人が読めると言うことも仕様の目標に入ってるよ >>530
>SGML,XMLはコンピュータで文章を管理するために作られたものでそもそもは人間が扱うことは考慮してない。
ウソを書くのはイケナイ。
SGMLやXMLは、歴史的にROFFやTexと同様な書式付きテキストである。
従って、その作成が手作業で行われる(=人間があつかう)ことは考慮されている。
コンピュータによる自動作成こそ後付け的な結果論である。
>>530のバカ氏ね 人間が扱うの考慮しなかったら、バイナリでいいがなw
わざわざパースするのに時間かけている訳だし >>535
自動生成とは言ってないだろ。管理と言ってる。
管理とは紙媒体の電子化およびその文章の長期間に渡る参照だ。
ついでにプレーンテキストなのはバイナリにするとソフトのバージョンアップで互換性が失われるのを避けたからだ。 >>540
長期間参照可能なものにするには
人が読めるってのは絶対条件じゃないか
ソフトは容易に紛失しうるし手に入らなくなったりもする
もし文書がバイナリで保存されていたらお手上げ
そういったときに人が読める(=解釈できる)ってのは凄く大きい >>長期間参照可能なものにするには
>>人が読めるってのは絶対条件じゃないか
いや、それはさすがに無理がある >538
そーいや検討してたよなーと思って見に行ったらつい先頃 Candidate Recommendation になってたわ。
ttp://www.w3.org/TR/2009/CR-exi-20091208/ Opera 10.10というブラウザを使っての
XMLの表示について質問があります。
hoge.xmlとhoge.xslファイルを書きまして、
hoge.xslファイル内の<xsl:copy-of>要素を使って、
hoge.xml内の<table>要素をHTMLとして表示しようとしています。
IEでは表示出来てしまったのですが、
OperaとFireFoxでは数珠つなぎのテキストが表示されてしまいます。
hoge.xml内の<table>を抜き出して
HTMLファイルとしてOperaやFireFoxに渡せばキチンと表示してくれるので、
XMLの<xsl:copy-of>要素が反映されていない…と推測しているんですが、
いかんせん当方力量不足なもんで…
ちなみにソースは「たのしいXML」というサイトの
■XMLをIEで表示(基礎編-1) - 34. xsl:copy-of
ttp://www6.airnet.ne.jp/manyo/xml/xslt/step30.html
です。
こちらのサイトではあくまで「IEで」と謳っているので、
何かしら手を加えなくてはならないのは重々承知しています。
もしヒントなどありましたらご教授お願いします。 <xsl:output method="html" /> >>546
ちゃんと出力方法を指定しなくてはならなかったんですね。
お陰様でしっかり表示されるようになりました。
ありがとうございます。 DOMを使用して、以下のfoobarstringを除去したいのですが、
どのように記述すればよいでしょうか?
<test>に対してnodeValue =''にすると中身がすべて消えてしまいました。
<test>
foobarstring
<attr>aaa</attr>
<vava>bbb</vava>
</test>
>>548
<test>のfirstChildをremoveNode()
appendChildなどであるノードの子にDocumentFragmentを追加するとします。
DocumentFragmentが5つの子ノードを持っていて、例えば3番目のノードがappendChildで
許されないノードタイプだったときに、1,2番目のノードは正常にappendされて3番目で
例外が発生して終了。それとも、5つすべてのノードがappendされずに例外で終了する。の
どちらでしょうか?DOM仕様にはそのときの動作の記述が書いてないように見えるのですが。
そのようなDocumentFragmentってどうやって作るの? え?
普通にdoc.createDocumentFragmentで空のDocumentFragmentを作って、例えば、
DocumentFragmentにTextノードを追加。それと他のCDataSectionノードを追加。
それで、doc自体にこのDocumentFragmentを追加する。doc自体はCDataSectionは子ノードと
して許すが、Textノードは許さない。 textにバイナリを記述する場合はやはりbase64などで変換しておく必要があるのでしょうか? XMLで始まる要素名は予約されてるからスレタイは規格違反 Relax NGについてお尋ねします
W3CのXML Schemaだと
xmlns:foo="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://example.com/boo-namespace boo.xsd"
としてXML側で妥当性検証用のスキーマを指定することができますが、
Relax NGにはこのような仕様はありますか?
仕様書のどこそこを読めばいいかだけでもいいので、アドバイスお願いします。 自己解決しました。
一通り仕様に目を通したんですが、それっぽいものが見つからなかったので
多分ISO/IEC 19757のPart10〜11辺りで策定されるのだと思います。
スレ汚し失礼しました。 勝手な思い込みで自己解決とか言わないでください。
RELAX NGとXMLボキャブラリは1対1で対応する物ではなく、
・検証したいときに使う
・別のスキーマ使ったって構わない
・無くたって別に構わない
ので、インスタンス側で何か特別な記述がある訳じゃない。
あくまで、
・バリデータが持っている
・バインディングルールを生成する
・その他スキーマがいりそうなことに使う
ためのスキーマです。 >>558
反論になってねーぞ
RelaxNGの内容はそうだけど、
RelaxNGをXML側から一対一対応させる別規格がISO/IEC 19797の別パートで策定される
という話だろ コメントおねがいします。
書籍などのXMLアプリケーションはよく見ますが、“人”のXMLアプリケーションは
技術的にも倫理的にも可能でしょうか。
研究書の書誌情報をXML化しているのですが、このたび著者のデータベースも
XML化したいと考えたのですが、氏名ぐらいしか情報が集まらない。。。
というか、集めてよいものなのか。。。
公開済みの文書とはいえほぼ無名の研究者の情報は、やはりプライベートなもの
として保護されるべきなのでしょうか。
そもそも有名と無名の線引きはどこなのでしょうか。
仮に作ったとしても、
<person id="00000001">
. . .
</person>
というように、IDで管理することになると思うのですが、国民総背番号制みたいで
なんか気が引けてしまうんですよね^^
みなさんだったらどのように作成しますか? じゃあXMLに限らず電子データとして人の情報を扱うこと自体倫理的に問題があるんじゃね?
じゃあ紙ならいいの? 人間の情報を文字だけで扱うことは倫理的に問題ないの? >>560
> 公開済みの文書とはいえほぼ無名の研究者の情報は、やはりプライベートなもの
> として保護されるべきなのでしょうか。
おまえ研究者じゃないな。そんなアホなこと言い出すってことは。 著者情報ということなら既存の図書DBでも参考にしてみたら?
だいたい、漢字の著者名とその読み、同姓同名の場合の同定情報として生年、
というぐらいの情報が普通。 よく分からんから適当にアドバイスするが、
書誌情報のXMLデータベースがあるなら、普通はそこに著者名も埋めておいて
後からXQueryで取り出すなり、著者のデータを後から追加で埋めるなりするわな
そこから著者データを取り出して別に管理しようってことなら
XLinkで相互参照させるとかすればいいだけだろ
ってか>>560はあんまXMLがどういうものか分かってなさそうだ DublinCoreまで話が広がるかもしれないがまあ待て。
>>560
「書籍などのXMLアプリケーションはよく見ますが」
まずはどこでなにを見たのかkwsk聞こうじゃないか。 銀行のシステムしかり、住民基本台帳しかりID使っていないデータベースが(ry
>>561にリレーショナルDBの基礎から小一時間(ry 髪の毛一本もらってきてXMLに貼り付けておくのはどうだろう 簡単にXML読みたいのだけど
ttp://hidemon-memo.blogspot.com/2009/01/codesynthesis-xsd.html
これは使える? DBなら内部ではふってあるだろう。
国民総背番号制は、共通のIDを使いまわすことじゃないの XMLパーサーで、C++対応しているものでお奨めは?色々あり過ぎてどれを使えばいいか分かりません。
XMLスキーマ使って妥当性検証が出来るのがいいんですが、軽量なものは無いでしょうか?
Xerces-C++はDLLのサイズが大きすぎます。 CodeSynthesis XSDというのも使ってみたのですが、
動作にXerces-C++が必要なようなので・・ >>578
「xml parser generator」でググったらこんなの出てきた。
http://www.xmlbooster.com/ XMLBoosterは・・すいませんパスです。
なんとかDLできましたが、ドキュメントはダウンロードできないし、使い方が分かりません・・。
libxml++というのはどうなんでしょう。 >>579
XSD/e はダメなの?parser generatorの方。 >>582
良さそうですね。
これを使ってみることにします。
ありがとうございました! 専ブラでTab→Wを押してしまい間違って書き込まれちゃった。
Xerces-C++を静的リンクするには
XERCES_STATIC_LIBRARYというマクロを定義しなくちゃいけないことを初めて知った・・。 XMLマスターの勉強のために、XQueryのサンプルを実行したいのですが、
良い方法はないでしょうか。
準備にあまり時間がかからず、なるべく仕様に忠実なものが望ましいのですが。
フリーのXMLDBなら
eXistとかIBMのDB2お試し版とかOracleのBerkeleyDBXMLとか
とりあえずOracleが手軽では? >>587、>>588
ありがとうございます、試してみます!
フリーのXMLエディターでおすすめって何でしょう。
100KB超えるXMLファイルを編集したいのですが、
そんな大きなファイルを編集すると固まってしまうようなのばかりです。
Visual C++ 2008 Express EditionについているXMLエディタは、バリデーションやオートコンプリートも可能で重くもなりませんが、
手軽にインストール出来ないのが難点です・・。
EclipseのXMLエディタも高機能ですが、大きなファイルを編集しようとすると結構重いんです。 >>590
テキストエディタ以上の部分で何を必要としてるかわからないんだけど、
ハイライト、バリデーション、補完ぐらいなら jEdit + XML プラグインを
試してみるといいかもしれない。
jEdit - Programmer's Text Editor
http://pc12.2ch.net/test/read.cgi/software/1196182758/ 申し訳ないのですが,ご質問させてください.
vc++2008のexpress editionの環境で,msxml6.hをインクルードし,
xpathで要素を指定し,任意の要素のtextを取得することはできるのですが.
要素の内容を書き換えることができません.
例)<width unit="millimeters">230</width>→<width unit="millimeters">100</width>
上記のような操作を行うためのサンプルコードなどが記載されているサイトをご存じないでしょうか.
それとも,msxmlは,ただ読み込むだけの機能しか持たないのでしょうか.
お教えください.よろしくお願いいたします. >>592
> 要素の内容を書き換えることができません.
どういうコードで書き換えができなかった?
ふつうにDOM操作するだけですよ。
XPathは文書中の場所を表現するだけXPathで表された場所にあるものをDOMなど文書を書き換えれるAPIに渡せば可能。
XPathは操作用の仕様ではない。
もし、意味が分からんならそーすうp。 >>591
jEdit使ってみました。
確かに軽いのはいいんですが、Eclipseについてるものほど高機能ではないのがちょっと
(スキーマにdocumentationを設定していても表示されないとか、
属性の値の補完が出来ないとか) 「タグの間にデータまたはノードが存在しない部分」のマッチで困っております。
お分かりの方、ご教授ください。
サンプルのような文書で、<c id="2" x="val2"> と <c id="3" x="val3"> の間に
何も無い場合にマッチしたいのですが、どのようにすればマッチできますか。
マッチしたい部分:
<c id="2" x="val2">str a - 3</c><c id="3" x="val3">str a - 5</c>
サンプル:
<?xml version="1.0" encoding="utf-8"?>
<root>
<pair>
<a><c id="1" x="val1">str a - 1</c>str a - 2<c id="2" x="val2">str a - 3</c>str a - 4<c id="3" x="val3">str a - 5</c></a>
<b><c id="1" x="val1">str a - 1</c>str a - 2<c id="2" x="val2">str a - 3</c><c id="3" x="val3">str a - 5</c>str a - 4</b>
</pair>
<pair>
<a><c id="1" x="val1">str b - 1</c>str b - 2<c id="2" x="val2">str b - 3</c>str b - 4<c id="3" x="val3">str b - 5</c></a>
<b><c id="1" x="val1">str b - 1</c>str b - 2<c id="2" x="val2">str b - 3</c>str b - 4<c id="3" x="val3">str b - 5</c></b>
</pair>
</root>
自分で「//b/c[@x=val3]/preceding-sibling::text()[1]」や
「//b/c[@x=val3]/preceding-sibling::*[1]」などを試して「前一つのノードを
マッチ」するところまで来ましたが、問題の部分のマッチはできませんでした。
ttp://www.w3.org/TR/2010/WD-xml-c14n2-20100304/
C14n2の最新ドラフトが出てた あと、これすごく重要なDraftだと思う
Associating Schemas with XML documents 1.0 (First Edition)
ttp://www.w3.org/XML/2010/01/xml-model/
PIでXMLとスキーマを関連付ける仕様。>>555-557で言ってるようなやつね。
代わりにISO/IEC 19757の10部がcancelledになってる たとえばDTDの代わりに
<?xml-model href="urn:publicid:-:W3C:DTD+XHTML+1.1:EN"?>
みたいな風に書けるわけだ。 xslt(xpath?)の質問です。 入れ子のこんな文書でそれぞれの深さの"node"でテンプレートを呼び出したいと思います。
<node name="root">
<node name="node1">
<node name="node11">
<node name="node111">
</node>
<node name="node12"/>
<node name="node23"/>
</node>
<node name="node2">
<node name="node21"/>
<node name="node22"/>
</node>
</node>
</node>
しかし<xml:template match="node">とやると一番上の<node name="root">しかマッチしません.
match="//node"でも同じです. "/*/node"とか"/*/*/node"とかするとそれぞれの深さのnodeにはマッチ
するのですが、全ての深さでマッチするにはどういう記述式があるのでしょうか? >>600
× <xml:template match="node">
○ <xsl:template match="node"> <apply-templates select="//node" /> W3C XML Schemaをちょこっと拡張して使うという手法はあるのでしょうか?
データモデリングに使いたいと検討しているのですが、例えば
<xsd:element name="hoge" type="xsd:string" access="readOnly">
というような感じで"access"というような感じの属性を追加したいと思います。
それ以外はほとんど流用出来る様な気がするのでわざわざそれだけの為に
自分でスキーマ言語を定義したくないと希望しているのですが。 スキーマに属性を追加できたとしてどうなるの?
その例の readOnly の意味が分からないんだが。 XMLのドキュメントを表す為のスキーマでは無く、あくまでも抽象的なデーターモデルとして
スキーマとして使おうと思ってます。 で、例えばデータが読み書き出来る種類なのか、
読む事だけが出来るデータであるかでそのスキーマを使った派生物(データのアクセス層のコード、
UI等)を生成しやすくしたいと。 (SNMPのMIBのACCESS属性の概念が頭にあります)
もちろんその情報を全く別に供給することも可能でしょうが、スキーマを拡張出来ればより
コンパクトに表現が出来ると期待してます。 名前空間別にすればいくらでもやって構わない気がする
気がするだけでスキーマ読んだ上で発言してるわけじゃないけど なんでそれをスキーム側だけでやるんだ。
例えばだが、スキームを適用するXMLの方を@xmlns:xreadと@xread:readOnlyで拡張して
XML Schemaで@xread:readOnlyの値を制限する方が
使いやすい上に便利だと思うけど >>608
すみません、申し訳ないのですが理解出来ません.@は何を意味するのでしょうか? しっくり来ないのでやっぱりRelax NGにしようかなとしばらく検討。 これで
まあ行けそうかなと思ってたらYANGというIETFで開発しているデータモデル言語に
巡り会いました。 自分の希望している機能は全てある感じですのでこれに決定。
なによりもXMLでないので読みやすくていい(YINというXMLバージョンもあり)。
Relax NGのcompact syntaxよりさらに簡素でこんな感じ;
list interface {
key "name";
leaf name {
type string;
}
leaf speed {
type enumeration {
enum 10m;
enum 100m;
enum auto;
}
}
leaf observed-speed {
type uint32;
config false;
}
}
YANGてドラフトの途中じゃなかったっけ。
性質的にはスキーマやMLやIDLと同じもんなんだがスキーマ定義がいやとか言ってる奴が使える代物なのか?
普通こういう生な部分触りたくない場合はジェネレータに吐かせるもんだと思うんだが。 >>613
現在ドラフト12まで改訂され、この版でRFCになるためのlast callがかけられてますので
ほぼ最終版に近いと言っていいと思います。
> スキーマ定義がいやとか言ってる奴が使える代物なのか?
とりあえず一週間ほどいじってみて、スキーマからCLIのコマンド自動生成、コマンドパーザー、
CLI<->アプリケーション間のメッセージ定義、エンコーダー、デコーダー、ディスパチャーのコードを
全て自動生成するプロトタイプが出来ました。 YANGパーザーはPythonで書かれたPyang、コード生成には
Pythonテンプレートエンジンのcheetahを使用。 生成されたコードは全てCのみ。
一度完成すると、ひとつデータをスキーマに追加してフルビルドすると、アプリ側でディスパチャーから
呼ばれる関数が1つundefinedと出るので、その関数を書いて、値を引っぱって自動生成されたエンコーダー
関数を書くだけ。
今まで色んな「フレームワーク」を使って来ましたが、これは自分の必要な機能だけを生成する、
「フレームワーク生成フレームワーク」とでも言える、自分に取って理想の開発環境です。 データにバイナリ記述できるXML仕様ってないですか? 結果をよくみろ。xml バイナリで検索したらEXIとかのバイナリーxmlが出てくる。
バイナリを直接埋め込むんじゃなくてリンクすればいいんじゃないの?
直接だとbase64くらいが妥当。 >>618
リンクってのはどういった方法でしょうか? >>619
1. バイナリをどっかにおいとく
2. おいた場所へのリンクをXML中に記述する SOAPならSOAP with attachments 懐かしいな、MTOMとかストリーミングできなくて昔悩んだ。 l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一
ここ http://www6.airnet.ne.jp/manyo/xml/schema/step46-2.html とか見てるんですけど
namespace の解釈の仕方がよくわからないので教えてほしいです
testA.xsd
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema targetNamespace="http://test/nsA" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
…
testB.xsd
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema targetNamespace="http://test/nsB" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<import namespace="http://test/nsC" schemaLocation="testA.xsd"/>
…
として testB.xsd が testA.xsd をインポートすると、targetNamespace のネームスペースがhttp://test/nsCに置換されたものと解釈すればいいのか
それとも、targetNamespace 等が設定されていない時に http://test/nsC が適用されると考えればよいのか、もっと別の解釈なのかと
正しい所はどこなんでしょうか? eclipseで人気のあるxmlプラグインの名前を教えていただけませんか?
ごめんなさい、eclipseスレがありました
そちらへ移動します >>627
testB.xsdの<import>はエラーになるんでない?
<import namespace="http://test/nsC" ... />は、"http://test/nsC"という名前空間がついた
スキーマ(が世界のどこかにあって、それ)をインポートするよ、という宣言。
schemaLocationはオマケで、スキーマ定義を入手できるであろう場所のヒントでしかない。
XML SchemaプロセッサがschemaLocationにしたがってtestA.xsdをゲットして処理したら、
targetNamespaceが"http://test/nsC"じゃないんで、エラーになるんじゃないかと思う。
XML Schema Part 1の§4.2.3のSchema Representation Constraint: Import Constraints
and Semantics(スキーマ表現の制約:importの制約と意味)
ttp://www.w3.org/TR/2004/REC-xmlschema-1-20041028/structures.html#src-import
の3つ目の条件では、次のいずれかだ、と書いてある(意訳)。
・namespace属性がある場合は、importされるスキーマのtargetNamespaceと一致しろ。
・namespace属性がない場合は、importされるスキーマにtargetNamespaceがあってはダメ。
XSLTの質問なんですが、以下のxslを自分自身に作用させると
a a b の後にcontent以下のテキストが表示されます。(aは何故2回出力される?)
その後、コメントアウトすると組み込みテンプレートルールを上書きするためcontent以下のテキストは消えます。
ただ、bも表示されなくなるのは何故なのでしょうか
優先度の問題かとも思いましたが、priority="3"とかにしても同じ結果になります。
変換はmsxmlでやってます
<?xml version="1.0" encoding="Shift_JIS" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns = "http://www.w3.org/1999/xhtml"
>
<xsl:template match="/">a <xsl:apply-templates /></xsl:template>
<xsl:template match="/xsl:stylesheet/content/child/text()">b <xsl:value-of select="."/></xsl:template>
<!--
<xsl:template match="text()">c </xsl:template>
-->
<content xmlns="http://www.w3.org/1999/xhtml">
<child name="kebin">
this is child
<grandchild>this is grandchild</grandchild>
child end
</child>
<child name="john">
this is child2
<grandchild>this is grandchild2</grandchild>
child end2
</child>
</content>
</xsl:stylesheet> <a>hoge<b>fuga</b>piyo</a>
hogeだけ、やpiyoだけ、はXPathでどう表すの? >>636
おお、出来た!ありがとう。こんな書式があったんだ
今、xml->xhtmlなxsltを書いてて
<mail href="hoge@fuga.bar.foo.bar.baz.com">メールを送る</mail>
自分の名前空間でこんなタグを作ったんだけど
この時のhrefの値を入力としてメールアドレスを
暗号化するようなことってxsltで実現は出来るの?
xsltでどこまで出来るのかわからなくて どういう暗号化なのか知らんけど、使ってるXSLTエンジンが自作関数を組み込める機構をもっていれば何でもできるんじゃね。 MSXMLには<msxml:script>なる拡張機能があるね。
tp://msdn.microsoft.com/en-us/library/ms256042(v=VS.85).aspx
こりゃなんでもできそうだな。 いい情報をありがとう
JavascriptやらC#,perlなんかも呼べるみたいだね
perlが使えるとか、もうね、ワクワクしてきた
暗号化っていっても、スパム先アドレス集めてる
クローラがだませればいい程度なんで
シーザー暗号/HTMLエスケープ/実体参照あたりを
組み合わせるぐらいの簡単なやつだよ >>640
クローラ程度なら独自定義の実体参照でもうお手上げなんじゃない? 既にあるHTML/XHTMLコードをコピペして、それを使いたいんですが
XSLTで変換せずにXHTMLとして実行するような方法ってありますか?
<![CDATA[ を付ければ完全にエスケープしてしまう
value-ofを使ってもエスケープされて実行はされない
一つ一つ変換するXSLTコードを書けば出来るが、作業が大変過ぎる >>642
実行というのがよくわからんが、copy-of ?
ありがとうございます。やってみました(下のB)。
望みの動作に少し近づいたのですが
元のコードの修正が必要な可能性があるのと、名前空間がくっつく問題が出てきました
質問の仕方が悪かったのと勘違いもあったので状況整理します
xml -> xslt -> xhtml
という状況で、xmlにHTMLのコード(XMLとして妥当でない可能性もある)を貼り付けたい
xmlはこんな感じです
<?xml version="1.0"?><code xmlns:my="http://a.com"> <!--例えば<html><br></html>みたいなのを張りたい--> </code>
A
xml側で<![CDATA[ <html><br></html> !]]>とするとエスケープされてしまい、出力結果では文字になってしまう
B
brは妥協して手動で<br/>になおしてxml側に記述することにして
xslt側でcopy-ofを使うと
<html xmlns:my="http://a.com"><br/></html>のように不要なxmlnsがついてしまう
貼り付けるコードは修正したくないので<html xmlns="http://www.w3.org/1999/xhtml"><br/></html>のようにはしたくない
C
brは妥協して手動で<br/>になおしてxml側に記述することにして
<xsl:template match="my:html"><xsl:element name="html">... </xsl:template>
こんなのを必要なだけ書く。大変
しかも、上の例ではMSXMLのバグなのかmatch="my:html"ではマッチせずmatch="html"でマッチする
出力結果にはちゃんと<html xmlns:my="http://a.com.">みたいなのがついてくるのに。 Cを動作させたときのサンプルです
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:my="http://a.com"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:template match="html"> <xsl:copy-of select="."/> </xsl:template>
</xsl:stylesheet> 方法その1
入力:
<code xmlns="http://example.com/code">
<html><head><title></title></head><body></body></html>
</code>
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:code="http://example.com/code">
<xsl:template match="/"><xsl:apply-templates/></xsl:template>
<xsl:template match="code:code"><xsl:apply-templates mode="enhtml"/></xsl:template>
<xsl:template mode="enhtml" match="*">
<xsl:element name="{local-name(.)}" namespace="http://www.w3.org/1999/xhtml">
<xsl:apply-templates mode="enhtml" select="@*|node()"/>
</xsl:element>
</xsl:template>
<xsl:template mode="enhtml" match="@*|text()|comment()|processing-instruction()">
<xsl:copy>
<xsl:apply-templates mode="enhtml" select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet> 方法その2
入力:
<code xmlns="http://example.com/code">
<![CDATA[
<html>
<head>
<title></title>
</head>
<body>
<br>
</body>
</html>
]]>
</code>
XSLT:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:code="http://example.com/code"
>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="code:code">
<xsl:value-of select="." disable-output-escaping="yes"/>
</xsl:template>
</xsl:stylesheet>
あと、HTMLのXHTML化にはHTML Tidyとか。 まさか2つとも解決方法があるとは思いませんでした
TidyってW3Cの中に人が作ってるツールなんですね
[―{}@{}@{}-]さん、色々とありがとうございました。
初心者には、XSLTは本当に罠が多いです
apply-templatesの規則(C++のtemplateみたいなのが良かった)
組み込みテンプレートルール
XPATHは添え字が1から
MSXMLはXHTML1.1で動かない
xmlnsはバックスラッシュの有無で動作しない
xsl:ifにelseがない(choose)
独自定義したnsのマッチの仕方
最近は、最初にこんなの書いてます
<xsl:template match="*|@*|text()|q:*" priority="-1.0" /> >MSXMLはXHTML1.1で動かない
xmlしょりするのにmsxml使うのが間違い <articles>
<article id="1234">
<np>政府</np>が<pred>発表し</pred>た経済政策では・・・
</article>
</articles>
みたいなXMLがあるとき、<pred>発表し</pred>をコンテキストノードとして
同じarticle内のこれより前のテキストノードをすべて取得するには
どういうxpathを書くのが効率的でしょうか。
"preceding::text()[ancestor::article[@id=1234]]"で一応できたんですが
文書中で前にあるテキストノードをすべてテストしているのか
文書の後の方になるにつれて極端に処理が遅くなります。
使用しているのはRubyとMSXMLです。 preceding-sibling::text()|preceding-sibling::*/descendant::text() ヤフーファイナンスから株価を取得するのをEXCELのVBEとXMLで作ったんですが、遅いです。
もっと高速化するにはどうしたらいいのでしょうか? >>654
全然詳しくないけど、まずはどこがボトルネックになってるのか調べるのが良
いんでは? マジレスするとEXCELで作るのがそもそも間違い
VB.NETかC#なんで拾ってEXCEL操縦して吐き出させた方が良い msxmlならボトルネックはExcelだろうから
VBやC#使ったって一緒だろ
Excelのセルに出力する方法を工夫しないと 質問です。
<xs:element>の子要素に<xs:complexType>を書くのと、
<xs:element>と<xs:complexType>を別々にして<xs:schema>の子要素とするのは、
何が違いますか?
簡単で結構ですので、教えてください。
1.
<xs:schema (属性省略)>
<xs:element name="customer">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
2.
<xs:schema (属性省略)>
<xs:complexType name="customer">
<xs:sequence>
<xs:element name="name" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:element name="customer" type="customer" />
</xs:schema>
何も違わない
あえて言うなら使いまわせるかどうか・見た目 下見たいな感じでxml⇔csvの相互変換掛けられる物ってない?
<data>
<chara>
<hp>11</hp>
<mp>12</mp>
<magic>
<fire>13</fire>
</magix>
<gold>14</gold>
</chara>
<chara>
<hp>21</hp>
<mp>22</mp>
<magic>
<fire>23</fire>
<ice/>24</ice>
</magix>
<gold>25</gold>
</chara>
</data>
data
chara
hp,mp,magic,,gold
hp,mp,fire,ice,gold
11,12,13,,14
21,22,23,24,25
XMLパーサとスクリプト言語で自作したほうが早そう 949 :Name_Not_Found :sage :2011/04/14(木) 18:08:19.21 ID:???
Efficient XML Interchange (EXI) Format 1.0
(p)ttp://www.w3.org/TR/2011/REC-exi-20110310/
出たな。なあ、これWebで使えると思う?
XHTML5をはじめ、
MathML, SVG, SMIL, XBRL, Atom, RDF/XML, ebXML,
XML Schema, DSDLのXML構文を使うもの、etc……
これらがコンパイルされてWebがもっと高速になる日は来るのだろうか <video>
<title>動画のタイトル</title>
<url>http://</url>
</video>
<video title="動画のタイトル" url="http://" />
イマイチ使い分けがわからないのですがどちらがお勧めなのでしょうか? とりあえずHTMLではtitleを属性ではなく要素にしたのは失敗だったって言ってるな >>665
親要素に対して1:1対応だから属性ってルールにしてみたり、
長くてウザいから子要素に逃がすってルールにしてみたり、
必須項目だから属性ってルールにしてみたり、
複数になる可能性もあるかもしれないなぁとか思いながら子要素にしてみたり、
適当に悩む。そして>>666の境地に達する XMLファイルのツリー構造をそのままディレクトリ構造に出力するツールってありませんかね
超絶なげぇスパゲッティコードそのものだよな>xml
関数とか構造体とかファイルのインクルードも入れるべきじゃね? >>671
JKでないだろ。
汎用用途がなさそうだから。
SAXパーサーで自作しても、すぐに
できそうだが。
xml書くよりシェルスクリプト書いた方が手っ取り早そう XMLで記述するようなプログラミング言語ってあるのかねえ。 ゲームエンジンのスクリプトとかだったらあるようだよ 初心者ですが質問させてください
test.xml?id=123とかやってid=123をGETで取得することってできますか? 1. スレ違い
2. 板違い
3. 環境変数QUERY_STRING
4. その他
さあどれだ すみません。
えーと、xmlのことまったくわかってない初心者です。phpならそこそこわかります。
例えばtest.xml?id=123にアクセスして変数idの値123を表示することは可能でしょうか?
>>672
昔XIncludeというものがあったが完全に無視された >>675
XSLTは一応チューリング完全らしいが >>680
XMLにそんな機能は無いよ。index.html?id=123とかと一緒
仮にApache+PHPならAddHandlerとActionディレクティブ使って
test.xmlへのアクセスをtest.phpへのアクセスにすりかえたうえで$_GET['id']
これで解決しないなら基本的には板違いなので
実行環境(Webサーバ、言語、フレームワーク)を沿えてWebProg板へ データを含むスクリプトと思いきや
ただの言語であり、ステップ実行もトレースもできない
バグったらどうしようもない書くだけ時間の無駄の糞フォーマット
だったが、最近は違うのかね? >>683
そうなんですか。ありがとうございます。
データの受け渡しできないんですか。残念。。 > データを含むスクリプトと思いきや
なぜそんな勘違いをしたのかの方が興味深い。 >>686
そこは重要じゃないな
>ステップ実行もトレースもできない
>バグったらどうしようもない書くだけ時間の無駄の糞フォーマット
ここに関してはどうかね?
最近、少しはましになってるのかね? >>685
残念とかそういうレベルの問題じゃない
たぶんお前のやりたいことはtest.php?id=123でできそうな気がするけど
板違いすぎるからWebProg行けと言っただろ SAXONで変換を行った際に、文字数字参照をさせない方法ってある??
DOMオブジェクトとしてメモリにロードできないような超巨大XMLデータを扱う機会ってどういう場面ででくわすんでしょうか? l、、_ _,/'}
|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | < <response action="age" period="regularly" />
//:: -=,=.ヮ. |ヽ、| \________
/'../:: /∠.._ |、.ノ
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一 XSDをオッサンSEでも理解できる仕様書HTMLに変換するXSLTファイルくれ アプリケーションの設定を保存するのにMSXMLを使おうとしているのですが、
XMLでは要素名や属性名は必ず大文字小文字が区別されてしまうものなのでしょうか?
それとも、事前のパラメータなどによって同一視させることもできるのでしょうか?
XSLで <!DOCTYPE html> とか、どうやって出せと。 xsl:outputで
@methodをtextに
@media-typeをtext/htmlにする >>665
基本的に下だな。
上の文字列ノードは、HTMLと違ってネストで修飾できるようなメリットがない。
あと、タグを拡張しようとしたとき、文字列ノードとタグのノードは共存できないから、
文字ノードが邪魔になる。 MSのxml notepad使いながらxmlの勉強してるんだが、
下のエラー出るはずのコードがパースエラーにならないんだが、何でか教えてくれ。
xmlマスターの教科書に載ってたサンプルだ。
------test.xml-------
<?xml version="1.0" encoding="Shift_JIS" ?>
<!DOCTYPE root SYSTEM "test.dtd">
<root attr="16000">
------test.dtd-------
<!ATTLIST root attr CDATA #FIXED "20000">
<!ELEMENT root (#PCDATA)> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE root [
<!ATTLIST root attr CDATA #FIXED "20000">
<!ELEMENT root (#PCDATA)>
]>
<root attr="16000" />
要はこれが通るってこと?
そりゃ、チェックが甘いだけ。ちゃんとしたValidator使いなよ
W3Cのとかに通せばエラー出るよ
ttp://validator.w3.org/ >>701
おお!!エラー出た!!
こんなものがあるとは、ありがとうございます!!
他にも2つパースしてくれるXMLエディタで試したんですけど、
エラーが出なくって、途方に暮れておりました。
Validatorで検索すればいいのか。 VC#2005なんですが
XPATHで属性値にダブルクォーテーションが含まれる値を探す方法教えてください
------------------------------
<?xml version="1.0">
<root>
<data key=""1"" value="あ"/>
<data key=""2"" value="い"/>
<data key=""3"" value="う"/>
</root>
------------------------------
この文書のvalue「い」を得ようとkeyの値から探そうとして
SelectSingleNode("/data[@value=""2""]/@value")
とやると全くヒットしないし
SelectSingleNode("/data[@value="\"2\""]/@value")
SelectSingleNode("/data[@value="""2"""]/@value")
とやってもInvalid Tokenって怒られるし
じゃあどうすればValidなんですか? 訂正orz
------------------------------
<?xml version="1.0">
<root>
<data key=""1"" value="あ"/>
<data key=""2"" value="い"/>
<data key=""3"" value="う"/>
</root>
------------------------------ XmlNode node = doc.SelectSingleNode("/root/data[@key='\"2\"']/@value");
Console.WriteLine(node.Value);
これでとりあえず取れるようだけど本当はどう書くべきなんだろう
たしかにそうなんだけど、次のコードがnullを返すので困っちゃう
doc.SelectSingleNode("/root/data[@key='"2"']/@value");
処理系が絡む話でもあるしC#書ける人あとはまかせた これもダメなの?
doc.SelectSingleNode("/root/data[@key='&quot;quot;2&quot;quot;']/@value"); それよりもこの板の実体参照を何とかして欲しいorz >>700
MSXML自体はちゃんとエラー検出したからxml notepadが妥当性検証を
行なっていないだけじゃね
> errorReason=属性 'attr' の値は、DTD またはスキーマで定義されている
> 固定値と一致しません。 すみません。
プログラムの実行結果がxmlで吐き出されるので、それをパースして
変数に格納したいと思っています。
以前、Javaでxmlpullparserを利用したときは、タグを探し、
そのタグの中身を取り出すようにしていました。
今回、吐き出されるxmlの記述様式が以前扱ったことのある
<タグA>変数</タグA>
という形ではなく、
<タグB var_a=x var_b=y var_c=z></タグB>
という形式で出力されています。
これらの変数をそれぞれ取得し、それを変数に格納したいとき
それはどのようにして実現できるのでしょうか?
また、言語がCなのですが、Cでも使えるXml parserのオススメがありましたらご教示願います。
>>713
オプソかつ英語可でよければ libxml がある
The XML C parser and toolkit of Gnome
http://www.xmlsoft.org/ 名前空間って深くできる?
xmlns:tanaka:taro="http://hello" http://www.w3.org/TR/REC-xml-names/
[1] NSAttName ::= PrefixedAttName | DefaultAttName
[2] PrefixedAttName ::= 'xmlns:' NCName
[3] DefaultAttName ::= 'xmlns'
[4] NCName ::= Name - (Char* ':' Char*) /* An XML Name, minus the ":" */
何で規格読まないの?バカなの? というかxmlns:tanaka:taro="http://hello" はあくまで例示であって
質問の本質は名前空間をネストできるかどうかだろうに BNFもわからないようじゃXMLいじるのやめた方がいいよ ネストはできないと思うが"tanaka:taro"セットで1つの名前空間になると思う >>720
いや、xmlns: に続ける文字列には : は含められない
Name - (Char* ':' Char*) は
「 Name にマッチするけど (Char* ':' Char*) にはマッチしない文字列」って意味
だよね? >>716 facebookのプラグインが:を含めててその要素を指定できずにStylishで消すのが面倒でしょうがない コメントに /* */ って使えるんですか?
<!--
<hoge /> /* unko */
-->
みたいにネストしたいんですが 質問です。
ヤフー知恵袋でみつけて疑問におもったんですが
------
<!ATTLIST 商品 code ID #REQUIRED>
<!ATTLIST 店舗 code ID #IMPLIED>
<!ATTLIST 顧客 pro_ref IDREF #IMPLIED>
<!ELEMENT root (商品|店舗|顧客)*>
<!ELEMENT 商品 (#PCDATA)>
<!ELEMENT 店舗 (#PCDATA)>
<!ELEMENT 顧客 (#PCDATA)>
これだと、顧客要素のpro_ref属性が、商品要素のcode属性を参照するのか、
店舗要素のcode属性を参照するのか、分からないですよね。。
-----
これって商品要素のcode属性と店舗要素のcode属性
それぞれに一意のIDが割り振られた場合
pro_refはどっちも参照できる、であってますか? >>726
> これだと、顧客要素のpro_ref属性が、商品要素のcode属性を参照するのか、
> 店舗要素のcode属性を参照するのか、分からないですよね。。
うん。分からない。
> これって商品要素のcode属性と店舗要素のcode属性
> それぞれに一意のIDが割り振られた場合
> pro_refはどっちも参照できる、であってますか?
その通り。
というか、IDREF 型となっている以上、ID 型となっているものを参照する。
ID は文書内で一意の名前を示すものなので ID 型として指定してある場合、どの要素の属性とか関係なく XML 文書全体で
一意になっていなくてはならない。
このため、商品要素の code 属性と店舗要素の code 属性の値が被ることはない。
そして、IDREF 型の顧客要素の pro_ref 属性は、商品要素の code 属性か、店舗要素の code 属性の一致するものを参照する。 IDREFの対象となるのはIDだけなのですか?
というのは、idとして番号を扱って、後で参照したいのです
IDでは最初の1文字目に数字を用いることができません
IDの代わりにNMTOKENを用いて、これを後で参照することはできないのですか? >>728
仕様書のIDREFのとこの定義がそうなってるなら、そうなんじゃない。
何としても数字にしたいなら、prefixに決まった文字を付けるとかでも良いのでは。 このエラーはどういう意味なのでしょうか?
courses.xsd:35:
element element: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}complexType':
The content is not valid. Expected is (annotation?, (simpleContent | complexContent | ((group | all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?)))).
>>732
courses.xsdの35行目がなんかおかしいぞ、という意味です。
本来そこにあるべき文法は
(annotation?, (simpleContent | complexContent | ((group | all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))))
に従うべきだと言っています。 <hello world="tokihatomaru"/>
<hello>
<world>tokihatomaru</world>
</hello>
アトリビュートと子エレメントはいったいぜんたいどう使い分ければいいというんですか? 全部アトリビュートで表現されてるXMLはそもそも設計がおかしい
っていうか要件定義から失敗してるにほいがするって暴言してみる 最近はXML自体狂ったシロモノとしか思えなくなってきた
余計な技術多すぎ >最近はXML自体狂ったシロモノとしか思えなくなってきた
漏れは昔から思ってるよ >>738
XML本体なら名前空間かなあ
周辺技術ならXSLTや(怒られそうだけど)スキーマ
広く使われてきたXPathですらCSSセレクタの台頭でこれも立場が危うい
それでもラベル付きコンテナとしてのXMLはまだだ優秀だと思う アトリビュートがいらないと思う
子要素ですべて解決するのになんであんなもの付けたんだろう JSONやCSS selectorsが主流になってwebからはほぼいらない子扱いになってきたもんな
型がないのと子要素がリストかリストでないか判別できないのも面倒
それだけのためにスキーマとかアホみたいだし >>740
>XML本体なら名前空間かなあ
これには異論があるかなぁ。
例えばXHTMLに独自タグを埋め込んでビュー定義するようなテンプレート記述言語
の場合は独自タグのセットがユニークな名前空間で他から「避妊」されているから
安心して埋め込むことが出来るよね。混ぜても安全な拡張性が保証されていてしかも
可読性を下げないのは名前空間のおかげ。
特にRDFとかその応用としてのLODとかは名前空間の仕組みがないと面倒くさくて
やってられん。というか、読めんw
XML namespaceはXMLの面倒な機能の中でも一番便利に使われているものの一つ
だと思うよ。
あとXMLスキーマは人間様が直接使うには面倒だけど、機械に書かせたり使わせ
たりするにはすこぶる便利だと思う。
>>742
>子要素がリストかリストでないか判別できないのも面倒
JavaのJsonライブラリで、Beansを内部で一旦XMLに変換してそれをJsonに変換
することでBeansをJsonにシリアライズするものがあるのだけれども、仮にBeans
上でその値が配列であってもXMLに変換される際にその情報が落ちてしまい、結果
として配列に入っている要素数によってJson上では配列になったりならなかったり
するという恐ろしいことになっているw ごめん。テンプレート言語はよくよく考えると関係ないか。 JSONはJavascriptの異常な普及で台頭しているだけな気がする。 同じような型を持ってるスクリプト言語は多いし
はっきり言ってXMLよりはるかに分かりやすい
XML固有の用語・概念・技術なんていらねーよ Jsonも地味に方言が酷い。
サーバ側でデータバインディングのライブラリを差し替えた途端にWebブラウザの
JavaScriptコンソールが真っ赤になるとか珍しくない。
その点XMLはちゃんと整備されて使われているスキーマ記述言語を持っているので
それを使ってシリアライズ結果を検証したりトップダウン的にスタブを生成したりと
特に通信周りはJson使うよりもかっちり感がある。 最近はもうテキストデータはLuaでさっと済ませてしまうことが多い 厳密なデータ受け渡しならやはりXMLですな
スキーマは人間が書いた仕様書とは違って嘘をつかないw
まあ、物事にはいつも例外があるけどね…… ちゃんとXML Schemaが定義されていればXML文書を手打ちするときもXMLエディタが
要素の名前をサジェスチョンしてくれたり勝手にバリデーションして間違いを指摘して
くれるので楽。
これで何より重宝するのがXML Schemaを手打ちするとき。XML Schemaのスキーマ
自体XML Schemaで定義されているからw XMLソケットをはじめから勉強したいんだけど、情報が少なすぎて積んでいます。
入門に最適なサイトを教えてください 測定実験結果のように
・二次元配列形式で表現できるデータ群1つ
・日付や入力パラメータなどを複数
といった構造の情報がある場合に
二次元配列形式のデータをそのままXMLに書き込むのはよくないんでしょうか?
<Data>
<Date>yyyy/mm/dd</Data>
<Table>#Key1, Key2, Key3
0, 100, 200
1, 110, 300
3, 120, 400</Table>
</Data>
といった感じで書いてるのですがテーブルをほかの単一のファイルに分離して
そのファイルのパスを<Table>要素に記述するなどとしたほうがよいでしょうか? 残念ながら当スレのエスパーは全員出払っておりまして。
そのXMLファイルを何に使うのかわからんことにはなんとも。
データ交換とか、何かのプログラムへの入力とか。
リストや行列を要素毎にタグでくくるのではなく空白等で区切ったベタのテキストとして
突っ込むファイル形式は、特に大きなリストや行列を扱う用途だとままある。 > Prnglibは、64ビットシステム用に設計された擬似乱数生成ライブラリです。 xml:space 属性とかまだ知らないのなら、
空白や改行に頼るデータ構造はお勧めしないとだけ vbsでXMLをloadXMLで読み込むものを作っています。
Windows2008サーバ上では正常動作しているXMLを一旦WindowsXPのPCに退避しておいて
再度Windows2008サーバ上にコピーすると、「・・・無効な文字が見つかりました。」で読めなくなってしまいます。
どういう原因が考えられるのでしょうか。XMLはコピーしただけで一切更新していません。 正常動作しているXMLと正常動作しなくなったXMLを比較すればいいじゃない Xml Schemaを人間用仕様書に変換できるXSLT何かありませんかね? >>764
BOMの意味からして分からないけど、サーバー内でコピーして保存したものだと問題なかったので
今後保存はサーバー内ですることにしました。
ありがとうございました。 例えば、以下のようなXML文書があるとして、
<doc>
<p>波動砲発射準備</p>
<p>エネルギー充填120%</p>
<p>発射!</p>
</doc>
これは、以下のように解釈される可能性もあるってことですよね?
<doc>
<p>発射!</p>
<p>波動砲発射準備</p>
<p>エネルギー充填120%</p>
</doc>
だとすると、小説やレポートなどの文章データを本来の意味を損なわずに
正常な形でXMLで扱うのは不可能なような気がするのですが。
タグにシリアルナンバーを振るという手もありますが、
そうすると、人間が手で編集するのは、
現実的ではなくなりまますよね。 > これは、以下のように解釈される可能性もあるってことですよね?
ねーよボケ >>769
>これは、以下のように解釈される可能性もあるってことですよね?
解釈は解釈する側の問題。
よく使われる仕様の範囲内で例の二つの文章を別な物として扱えるかと問われれば扱える。
例えばDOMは子ノードの列びは順序つきと定義している。
文章を自然なかたちで表現できるか否かに関してはまた別のレベルで興味深いネタはある。
例えばText Encoding Initiativeという団体の出している文章に結構面白い話はある。 >>771
>解釈は解釈する側の問題。
>例えばDOMは子ノードの列びは順序つきと定義している。
それは、「このページはIEでないと正常な表示が保証できません」
と言っているのと変わらないですよね。 順序を保証したいならスキーマを用意してXML文書と紐づけすればいい
大抵は順不同にしようとする方がめんどくさいが
とはいっても「こう解釈するのが正しい」と示せるだけで正しく解釈されるかは別問題
「このページはIEでないと正常な表示が保証できません」が
「このページはスキーマに対応したシステムでないと正常な表示が保証できません」
に変わるだけと言われれば否定はできない >>775
XML Schemaでいうsequence要素内は同じ要素であってもsequenceなんじゃないかなぁ?
仕様でどうなっているかは未確認。
再帰を使って多重度を表現すれば
確実に順不同でないことを示せると思うけど。 >>778
それって、パーサの挙動としてはどうなるの?
妥当性検証の段階では、その規約に違反したエラーってのは
起きようがないないよね?
要素を取り出そうとしたときに、順序性の無いデータ型を返す
API を使おうとするとエラーになったりするの?
そんなパーサみたことないけど・・・。 >>779
お前は何を言いたいんだ?
波動砲発射準備
エネルギー充填120%
発射!
と表示されたからと言って
発射!
波動砲発射準備
エネルギー充填120%
の順番に「人間」が読まないことを保証できると思うか?
論文を結論から読む人は多いぞ? >>780
その通りですね。
ですから、医学系板ではなく、この板で質問しています。 スキーマが宣言できるのはその意味論のレベルまでだ
それより上位の意味論については関知しない(できない)
パーサの挙動まで制約掛けたいならそういう仕様を作って標準化しろ
それでも不安なら認証局でも作って不適合パーサを排除しろ
それで不満なら従わない人間を粛清しろ
お前がやりたいのはそういうことじゃないだろ? >>782
セマンテクスにも階層がありますよ。
あなたの理屈だと、BNFでは
(CやJavaのような一般的な)プログラミング言語は定義できないことになる。 >あなたの理屈だと、BNFでは
>(CやJavaのような一般的な)プログラミング言語は定義できないことになる。
いや、この例えはおかしいな。取り消します。
とにかく、自分は、「やり方」を質問しているわけではないので
あなたの回答はまとはずれです。
>>769
をちゃんと読むのが面倒なら、わざわざ答えてくれなくてもいいです。 >>783
>セマンテクスにも階層がありますよ。
だからある階層の意味論はそれより上位の意味論については
関知できないっていってるんだよ
小説やレポートなどの文章データの「本来の意味」なんて誰が決められるんだよ
要素の順番はスキーマなりで決められる
でもその順番の「本当の意味」は?
順番の意味を形式化しよう
でもその順番の意味の形式的ルールの「本当の意味」は?
結局どこかで線引きがいるんだよ
少なくとも文書データの構造についてはHTMLやらOOXMLやらで大体の人が満足している
それでも本来の意味が損なわれていると言われれば
まぁそういう考えもあるかもねとしか言いようがない ああHTMLは厳密にはXMLじゃないけどね
XHTMLにでもしとこうか >>785
>だからある階層の意味論はそれより上位の意味論については
>関知できないっていってるんだよ
逆にいうと、論点を不用意により上位の意味論に拡大すると、
本来感知すべき問題さえ感知できないということになってしまう危険があるということですよね?
あなたは今まさにそういうことをしていると思います。
「本来の意味」という言葉のあいまいさを不必要に拡大しすぎだと思います。
具体例を示しているのですから、問題領域は明白なはずです。 結局sibling間に順序は規定されてないってことで良いの? XML的には兄弟の順序は重要ではないけれど
それを解釈する人間なりソフトが重要とみなしていれば重要だということか
要はユーザがそのXMLにどう意味を与えるかってことだね
(これはスキーマがなくてもできる)
集合型と配列を直列化した結果としてのXMLをそれぞれ考えてみるとわかりやすい 違う要素名ならスキーマで対処できるけど、
同じ要素名だとスキーマ使っても順序規定できないね。
結局XML1.0単独だと>>769のように文書順序を変えてしまうXMLパーサが存在し得る
ことになる。
実際には出回っているXMLパーサは文書順序を変えないと思って問題ない。 そういうパーサーは書けるがそれはパーサーの規格をまず先に確認すべき話。
スキーマ云々は、パーサの規格が具体的にスキーマ規格を参照していてスキーマの内容が
パーサの振る舞いと関連している場合に始めて問題になる。 >>795
パーサーの規格はパーサーを書く人が決めるわけだが・・・ >>795
あ、勘違いした。
そうだね、だから結局パーサー次第。
XML1.0単独の規格内では兄弟間の順序にはなにも規定がない。
パーサーにDOMを使えば順序は保証される。 >>769
極端なことを言うと
<doc>
<p index="1">あ</p>
<p index="2">い</p>
</doc>
と
<doc>
<p index="2">あ</p>
<p index="1">い</p>
</doc>
と
<doc/>
を同一視してなおかつXML 1.0に準拠した処理系を考えられるけど、だから何?
Unicodeは65番がAであるとは定めているけど"C, A, T"と"A, C, T"の意味が同じかどうかなんて定めてない。しかしUnicodeで小説を扱えないという主張は意味が無い。 >>799
>を同一視してなおかつXML 1.0に準拠した処理系を考えられるけど、だから何?
それはそういう処理系を作る人の自由でしょう。
>Unicodeは65番がAであるとは定めているけど"C, A, T"と"A, C, T"の意味が同じかどうかなんて定めてない。しかしUnicodeで小説を扱えないという主張は意味が無い。
>「本来の意味」という言葉のあいまいさを不必要に拡大しすぎだと思います。
>具体例を示しているのですから、問題領域は明白なはずです。 同じ要素名でもスキーマで順序は宣言できるんじゃないの?
順序を入れ替えてもValidationが通るだけであって
入れ替える前後のXMLを「同一」とみなすかは別問題じゃね?
つーかValidationだけが意味を持つならannotationは何なんだって話。
ま、>>800には関係ないことのようだが。 質問者もああいえばこういうで全然収拾が付かないな。本来の質問に戻れよ。
>>769
>だとすると、小説やレポートなどの文章データを本来の意味を損なわずに
>正常な形でXMLで扱うのは不可能なような気がするのですが。
可能。
はい終了。 そこは順序を示す属性に数字でも入れておけということでしょ? >>803
XMLはXML1.0のみで使われるわけでなく、
通常はその周辺技術と一緒に使われる。
一般的にパーサとしてDOMやSAXが使われ、
その限りでは文書順序は保存されるってことでしょ。 そういうスレだからな
説明せずに解答だけ書くクズはイラね なにつまらない議論を
と思っていたが、XML1.0読みながら素直にXML-DBとか実装してたら
普通にありえそうな話だなあ 野暮ついでに言うが
XMLの整形式として要素の順序が規定されてないだけであって
XML1.0の仕様書にはDTDも含まれてるからな?
誰かの受け売りじゃなく仕様書ちゃんと読んでるよな?
そのDTDも今じゃ見かけないし2.0で排除予定だけど
もはやXML2.0自体が霞んで見えない この文脈でDTDが含まれているか否かは本質じゃない
XML1.0の仕様書に規定されているElement Type Declarationsによって
要素の順序は規定できるんだから
XML1.0単独だと要素の順序を規定できないって誤読すんなよって話 XHTMLの<meta>タグの登場順をXML処理系で保証するべきなのか否か、
定義する仕組みとか何かあるんだっけ? >>810
要素名が要素の順番のことを言ってんだよ。 XPathが登場順を規定してるのなら
XQueryでも登場順は規定されているんだろたぶん >>812
お前はレストランとかで待たされるとき
前に並んでた人の名前が自分と同だったら割り込んでよいなんて思うのか? >>815
その「名前」は要素名じゃなくてデータだろks >>810はXML文書とそれによって表現されるツリーオブジェクトを
明確に区別できていないように見える。
当然ながらXML1.0ではXML文書からオブジェクトを生成する場合の
兄弟間の順序など規定されてない。
順番通りに並べることもせず、順番を記録することもしないならば、
新たにXML文書に書き出すときに元の順番など保証されない。
あくまでvalidになるように要素を並べるだけ。
XML文書とツリーオブジェクトの関係を決めるのはあくまでDOMであって、
XML1.0規格ではない。 結局>>799の質問の要点は
「XML文書で表現されるデータは順序付きツリーなのか順序無しツリーなのか?」
ってことだな。
その答えは、
「どちらであるかは決まっておらず解釈次第であるが、
通常は順序付きツリーとして扱われる」
ってことだ。 XMLでタグや属性名で大文字や小文字が区別されるケースなんて皆無なのに厳密に区別しないと動作しないせいで余計に効率が悪い
XmlNodeとXmlElementを分ける意味がわからない1つでいいだろ
GetElementsByTagNameはエレメンツでGetElementByIdはエレネントってトとツが違うのは何らかのトラップのつもりか?
しかも、なんで一方に1種類の戻りパターンしかないんだよ
タグで単一ノードが欲しいことだってあるだろうし、Idで複数欲しいことだってあるだろ
何重にもなってるいちいちGetElementsでとってエラーチェックして0番目のをまたGetElementsしてエラーチェックしてってやかましいわ
と思ったらselectNodesなんてのがあるじゃない
なかなか気がきくなと思ったらエラーしか返ってこねーよ
しかも、どこがエラーか内緒かよ >XMLでタグや属性名で大文字や小文字が区別されるケースなんて皆無
え?
>Idで複数欲しいことだってあるだろ
え?
何やってんのか全然わからんけどXPathでも使えば記述量は減らせんじゃね
属性廃止して全部要素でいいじゃんと思うことはある IE10の標準モードで document.XMLdocument が使えなくなって困っています。
ローカルフォルダに置かれたXMLデータファイルとXSLTスタイルシートを
下記のサイトで示されている手法で静的に紐付けして処理しています。
http://www.atmarkit.co.jp/fxml/tecs/001stylelink/01.html
XMLデータをブラウザで表示する際に、XSLT内に記述した
javascriptコードでデータを集計処理しており、
javascriptにXMLデータを受け渡すために
document.XMLDocument.getElementsByTagName()
を使っています。
ところがIE10の標準モードでは document.XMLdocument が
使えなくて困っています。
互換表示モードならば使えるのですが、
標準モードで使えるようにjavascriptコードを
書き変えようと考えました。
しかし、静的に紐付けしたXMLファイルからデータを
取りだす手法が見つかりません。
XMLHttpRequestはローカルファイルには使えないようでした。
何かいい解決方法がありましたらお教え下さい。 >>822
IE を窓から捨てる!
Windows を世の中から無くす。
以上。 そもそもXSLTにjavascriptってどういうこと?
XMLをXSLTでHTMLかXHTMLかに変換していて
変換後の(X)HTML内にjavascriptを埋め込んでるということ?
そうだとしたら何でdocument.XMLdocumentを使う必要があるの?
あるいはXSLTを使う必要があるの? xslt(xpath?)の質問です。
HTMLの表のような構造のXMLがあるとして、「ひとつ前の行のカラム」は
どう表現すればよいでしょうか?
例えば以下で、b-3の位置からb-2の位置を表す方法を教えてください。
<table>
<row>
<cell>a-1</cell> <cell>b-1<f>dummy</f></cell> <cell>c-1</cell>
</row>
<row>
<cell>a-2</cell> <cell>b-2</cell> <cell>c-2<f>dummy</f></cell>
</row>
<row>
<cell>a-3</cell> <cell>b-3</cell> <cell>c-3</cell>
</row>
<row>
<cell>a-4</cell> <cell>b-4</cell> <cell>c-4</cell>
</row>
</table> >>825
本当はこの次に、空白でないcellを探して、
行を前にたどる、ということをやりたいのですが、
そういう表現はできるのでしょうか? 1行(row)毎にcellをなめる前提でコンテキストノードがcellのとき
<xsl:variable name="col" select="position()"/>
何列目かを変数に保存
<xsl:value-of select="../preceding-sibling::row[1]/cell[$col]/text()"/>
コンテキストノードの親(row)の→../
前側の兄弟の→preceding-sibling::
1番直近のrowの→row[1]/
$col列目のcellの→cell[$col]/
テキスト→text()
preceding-siblingは元データの下側からカウントアップしていくのがハマリどころ >>827
できました〜。ありがとうございます。
実はここでは簡単にしましたが、問題はもう少し複雑で、名前空間と複合した問題でハマってました。
でも、こっちが間違いない、というところが確実に突破口になりました。xslt始めて一週間、ここで5日くらい悩んでました。
答えはこんな感じで。
<xsl:variable name="col" select="position()"/>
<xsl:value-of select="../preceding-sibling::row[cell[$col]/text()!=''][1]/Cell[$col]/text()"/> 828です。また躓いてます。
変数に格納した内容に対して、繰り返し
(再帰的に)template matchさせるには
どうしたらよいのでしょう?
cellが空の時は、他のcellの内容(XML)の
処理結果を出力したいのです。
外でcellの内容を変数に格納し、
その変数の内容をparamでtemplateに渡した後、
paramの変数に対してxpathの指定をする方法はあるのでしょうか?
XMLのelementを一文字ずつ処理するのは
何か違う気がしますし…。 何がしたいのか分からん
デリゲートとか高階関数みたいなことがしたいってこと?
だとすれば標準機能では無理
そうはいっても別のやり方で本来の目的は果たせると思う 補足するとXSLT1.0の場合
変数の値の型がnode-setであれば当然/とか[]とかの演算子が使える
一方変数の値の型がResult Tree Fragmentの場合は使えない
必要なら処理系拡張のnode-set()関数とかを使う
XSLT2.0はその点改良されているらしいが使ってないので詳しくは知らん 率直な質問なのだけど、XSLって今時何に使うの?
個人的には使いどころが極めて少ない既にオワコン、というかそもそも始まりも
しなかった技術という評価なのだけど。 今時も何もXSLTは提案当初からXMLの変換だよ
「極めて少ない」と「ない」は違う
ニッチな分野にマイナー言語って構図は珍しい話じゃない
XSL-FOの方は…… XMLの代表的な使われ方ってRSSだけど、
RSSって使われてるの? 代表的?
セマンティック・ウェブという「典型的」「古典的」な使われ方ってんなら分かるけど
RSSはミニブログでないブログ文化とともに死んだイメージ 詳しくは知らないんだけどSEO関係でGoogleに登録するサイトマップはXMLじゃなかったか ウェブサイトのトップURLからGoogle登録用のサイトマップを自動生成するソフトの作り方を教えてください ネトゲの通信内容見たらデータがXMLだったことはある 最近は設定ファイルなんかでiniファイルの代わりに使われることがあるだろ この程度の内容ならiniファイルでいいだろ、ってことも多いなw
全くネストしてなかったりとか。 内容関係ないだろ
JSONとかYAMLとかならまだしも
何で得体の知れないiniファイルをわざわざ新規に使うのかわからん [section]
name=value
;commnent
この3種類だけで書かれたもの、に限定すりゃいいだろフツー >>844
Linuxにはiniファイルの文化がないから
マルチプラットホームで動くソフト作ろうと思ってXMLにしたんじゃない?
iniファイルもテキストファイルだからパースしようと思ったけど
XMLのほうがパーサも用意されててやりやすかったとか Linuxはそこら辺に落ちてたソフトを拾い集めたものだし、落ちてたソフトの大部分である
GNUも落ちてたソフトに「おめでとうございます!GNUに採択されました、これは名誉です!」
とか言ってGNUに入れていったものだし、統一性なんてあるわけないんだよね。 だから何?
GNUのコントリビュートに対する権利管理のやかましさを知らないバカです、
っていう自己紹介か?
Windowsに統一性があるか?
BSDだってベースシステム以外に統一性があるか?
Macだってアプリ含めたら統一性があるか?
統一性があるのはVMSとかDOMAINみたいにベンダーからしかアプリが提供されなかった
システムの利点だなw >> 851
設定ファイルの形式の変遷のおける、XMLファイルの位置付け、とか? Windows7 の WevtUtil.exeで、qe コマンドを、出力形式を xml 指定で実行したのですが、
<?xml version="1.0" encoding="UTF-8"?> の宣言文が出力されません。
( WevtUtil qe system /f:xml を実行 )
WevtUtil.exe はこういう仕様なのでしょうか?
詳しい方、教えて下さい。 スレチ
というかXML宣言がないと何か問題あるの?
Shift-JISなのにXML宣言がないのが許せないとか? 853です。
ファイルに吐き出してエクセルに取り込むのが目的ですが、
日本語文字が含まれているのに、宣言文がないので、
エクセルに取り込もうとするとエラーが出るのです。
( WevtUtil qe application /e:root /f:xml > Sample.xml を実行 ) 聞きたいことがあってスレ探してたら似たような質問があった・・・
XMLをXSLTにてHTML表示、加えてボタン等によるアクションで表示を動的に変えたい(並び替え等)
サーバプログラミングではなく個人PCのみ使用するのでJavaScript以外にないんかなと
>>824の質問がそのまま当てはまりそうな自分の状況ですが、サーバ立てるわけではなく
いずれは自分の手を離れるためになるべく簡潔な方法を模索中ってとこなんですケド
他にいい方法あるんでしょうかね? とりあえず目についたものに手を出してる感じなんですが なんとなく勘で答えるが
それはたぶんExcelマクロでやった方がいいんじゃないかな 一般的なWebブラウザで表示を動的に変えたいなら
JavaScriptを使うしかないんじゃないの
情報源がXMLファイルというのが前提なら
HTMLへの変換だけXSLTでやって並び替え等はJavaScript
処理系依存なら他にも方法があるだろうけど
一般的なWebブラウザで
XSLTやXMLにパラメータを与える方法は知らん XML使ってるという時点で
質問者の前提条件はあまりあてにならない >>857ですレスどうもっす
>>858
きっとそう
>>859
あちこち調べましたがXSLTに値渡すのはこの環境じゃ出来そうにないんですよね
>>860
言ってる意味がわかりませんでした
他の方法考えますわー jsdo.itにあるワニワニパニックは、
JavaScriptを使わず、6千行を超えるCSSだけで作られている つまり各列昇順降順全パターンをXSLTで生成しておいて
CSSの:active擬似クラスとかで表示・非表示を切り替えれば
いいわけですね! XML になっていればいくらでも処理のしようがあるけど
いまの web の現実的には、整形式になってない html を
処理しなきゃいけないケースが多い
非整形式の html を整形式の XML にするとき
みんなどうやってる? xmlのノードのうち、
どの階層にあるか分らないノードでattribute に attr="keyword"という値を持つノードを見付けて、
取り出すにはどうすれば良いですか?
一階層ずつ調べていく以外に、一気に上手くやる方法ありますか? >>869
レスありがとうございました。
XPath調べてみます。
もしわかればもう一つ教えてください。
attr="keyword1"
attr="keyword2"
など種類が有る場合に、
attr="keyword*"
みたいな抽出方法も可能でしょうか? CSSが20周年ということですが
ここでXSL-FOからお祝いの一言g(ry すみません、別掲示板でレスもらえないので、ここで相談させてください。
xmlマスターベーシックのために通称「緑本」を買おうと思います。
当方初心者で、知識はitパスポートレベルです。
プログラミング経験ゼロです。プログラミング言語もほとんど知りません。
緑本は理解できないですか?
「10日で覚える入門教室」は、スタイルシートの説明がhtmlを知っていることが前提で難しかったです。
事情で外出できないので、「緑本」の現物を見れず、よろしくお願いします。 理解できなかったらやめるんじゃなくて
理解できるように勉強するんだよ
XML使う気がないなら最初から手を出すな
箔が付く資格でもないし時間の無駄
余計なお世話だが HTMLもあれはあれでStrictに書こうとすると意外と制約多くて、勉強してて楽しい DTDで要素型宣言は重複OKなのに属性宣言はダメなのがよくわかりません。 XSLT中の述語は定義済み実態にしなくて良いのですか? 200より小さい要素を出力するなど、述語の中に「<」を使う場合です。 すまん、なにを言ってるのかわからん
XMLでは&amp;、&lt;、&gt;、&quot;、&apos;は事前に定義されてるとかそういう話? value-of select="element[@attribute<200]"
というような命令の場合、「<」は&glt;にしなくてよいのですか? XSTLもXMLである以上本来はエスケープしないとだめ(整形式でない)
エスケープしなくても動く処理系もあるかもしらんが ちなみに>は互換性目的のためエスケープしなくても問題ないはず
http://www.w3.org/TR/xml11/#dt-chardata
なのでnot()と組み合わせればエスケープしなくても済む どっちがの方がいいでなく使い分けでしょ
JSONで標準スキーマが定義されてValidationができて
しかもその仕様がXML Schemaほど複雑じゃなければ
本格的にXMLは捨ててもいいかもしれない もうひとつ教えてください。
スタイルシートに、下位ノードの命令から書くことはできるのですか?
<template match="*/*">
<value-of select="." />
<template match="/">
<value-of select="." />
というスタイルシートでは先にルートノードの命令が処理されテキストが出力されますが、
その後、ルートの子ノードのテキストも出力されますか? ごめん意味が分からん
具体例をたのむ
とりあえず適用範囲と適用順序が明確になるように
<apply-templates>
<call-template>
を使ってスタイルシートを書くべき >>888
文書
<Conference Situation="Reserved" Equipment="Projecter">
<Room>会議室A</Room>
<User>山田太郎
<Date>2005/6/1</Date>
<Time>10:00〜12:00</Time>
</User>
<Number>4名</Number>
</Conference>
スタイルシート
<template match="Conference">
<value-of select="Number" />
</template>
<template match="Conference/User">
<value-of select="Date" />
</template>
<template match="/">
<value-of select="Conference/Room" />
</template>
この時、出力が「会議室A」となるようなのですが、
スタイルシートの2行目、5行目は処理されないのかがわからず・・・
ルートノードから処理するから8行目が処理されて会議室Aが出るのはわかるのですが・・・ >>889
>>888が言っているように apply-templates を使って、
1行目〜のテンプレートと4行目〜のテンプレートをどこで適用するかを
ルートノードに対するテンプレートから辿れるように記述してやらないと、
2行目も5行目も呼ばれないよ。
例えば、
<Reservation>会議室A4名2005/6/1</Reservation>
と出力したいなら、
<xsl:template match="Conference">
<xsl:value-of select="Number"/>
<xsl:apply-templates select="User"/>
</xsl:template>
<xsl:template match="Conference/User">
<xsl:value-of select="Date"/>
</xsl:template>
<xsl:template match="/">
<Reservation>
<xsl:value-of select="Conference/Room"/>
<xsl:apply-templates select="Conference"/>
</Reservation>
</xsl:template>
(面倒な適用の仕方をしているように思うが、敢えて889に合わせて書いてる) >>888
>>890
ありがとうございました。
おかげさまで理解できました。 ソースを取得したいのですが
eucのところだと文字化けしてしまいます
msXMLhttp = CREATEOLEOBJ("Microsoft.XMLhttp")
msXMLhttp.open("GET", PageURL, 0)
msXMLhttp.send()
Result = msXMLhttp.responseText
これに何を足せばいいでしょうか?
uwscという言語から呼び出しているので
書式が少し違うかもしれません このへん
ttp://qiita.com/weal/items/3b3ddfb8157047119554 >>884-885
これかな
XMLが最善とは思わないが
XMLを捨てる十分な動機とインフラがない あと名前空間の機能は重要
XMLの名前空間の仕様自体は気に入らないが サッカーブッシュ日本代表日程ぷあたん(しゅっちょうまいくろ教育長交代)春文執行40代売上差額シュガーチョコ
https://www.youtube.com/watch?v=NDq1QoJY0nY宇ドナルドアナリストパワーストーンコーチングとしまえん
サッカーブッシュ日本代表日程古本屋よしたけしゅっちょうちょこしゅがー
ディーラー税務署天才開発者死亡詰みヨミドクターマイクロサービス不足
サッカーブッシュ日本代表日程ぷあたんシフト光金さかい強制バイト人権侵害問題
春分資源執行ニューヨーク低原価ぼったステーキソルトレイク福岡横浜新橋奴隷課金パチシフト強制バイト問題新潟米センター生残
コスメ24チャリティー隠れ40代生活保護プレイボーイバイトレードいたりあん接待問題
マスコミKARDローンケーオーサービス不足婚活パーティー寄付金執行原発ビジネス
FBIチャイニーズタイホテル売上事務所ガチャ決算ガチャキャンペーン(販売報道陣過激派組織向携帯最新情報提供終了
校長発言細心注意ノートン産廃エラー(著作権クレーム中国反応融資高額教育費)(中国捕鯨団体40代社員サッカーコメント
高額入学金ヤフウ新橋大学ヤフウ新橋理事長FX経費 おじや50代資産ガリバズフィード40代エリート xml2wbxml に xml 喰わせてバイナリ化させようとしても
The XML language is unknown.
が出ておかしいなと思ったら、これ WML とか特定の種類の XML しか処理してくれないのか。
ルートタグを wml に変えたら普通に変換できたけど、折角のライブラリだけどこれは使えないな。 やっぱりcsvのが使いやすいな
編集もExcelで楽チン出しね
自分でExcelで保存して03が3になったってキレた客からしかクレームないよ
xmlは人間が編集できないからね
触れそうだからって触った奴は阿鼻叫喚の地獄絵図 まあ煽りのつもりなんだろうけど。
10年前ならまだしも今さらこれに反論する奴はまずいないわな。
データ記述言語とマークアップ言語の両方をまかなおうとしたあげく
結局どっちにも使いにくいものになってしまったってのはもう誰もが認めるところでしょ。 XMLは人間が読むべきじゃないんだよ
つまりその都度専用のエディタ作らないと 人間が読むのは他人に迷惑かけてないし構わんでしょ
非整形式な(、もっと言えばスキーマの無い)XMLを書くことを
認めてしまった時点でXMLである利点が損なわれてしまった
専用のエディタはともかく専用のスキーマはあってしかるべき
人間がXMLを編集できないというより
XML(+xlink)でないと表現できないようなデータ構造が
人類に早すぎたというべきだと思う この期に及んで初めてXMLに真剣に取り組んでみてるけど結構面白いな
スキーマでの型定義とかで以外としっかりしててひたすらごちゃごちゃなイメージと違う
XSLTで結構柔軟に動けそうだしこれはなんだかLisp/Schemeみたいな言語だなと思った 会社のINI大好きおやじがウザくて困る。
「XMLは読みづらいからINIファイルにしろ。」と
設定の項目も数も自在に変わって、階層も深いプログラムの設定。
XMLなら簡単に実現できそうだけど、INIで実現するとなると物凄く大変そう。
オブジェクト指向も知らないオッサンにとってはINIで十分かもしれんけど、
大規模なプロジェクトにINIはキツい。 >>905
あー、いや
マジで疑問なんだけどその設定ファイルをお客さんがいじるとした場合
どうやっていじってもらうの?
iniはまだメモ帳で何とかなる
でもxmlってVisual Studioでも入ってないとそもそもエディタからしてないだろ メモ帳でええやん
読み込むときにバリデーションできる分iniファイルよりは安全 >>909
いや、あのツリー構造をメモ帳でお客さんに整合性とれってそもそも無理やで
俺もやってみたけどあかんわあれ 無理なら触らせるなってことだよ
XML手書きできないならjsonとかにしたって同じ >>911
でもiniやcsvなら触れるよね
なんかいいフリーソフト出ればいいんだけどなぁ iniやcsvが触れるのはツールの問題もあるにせよ
本質はそれらが1次元配列か2次元配列を扱うからだろ
2次元配列で良いんならExcelにだって編集機能あるぞ
使ってる奴見たこと無いが それに設定ファイルなら親を見れば子が取りうる型が判るんだから
1時間もあればスキーマからエディタを自動生成するやつが書けるだろ
スキーマを書くのは1時間じゃ済まないかもしれないが INI->XML変換器書けばぜんぶ解決!
INIのおやっさんには秘密兵器のように使い方を教えてあげよう >>908
設定はプログラムが吐き出すので、お客さんが直接いじることはない。
飽くまでも社内のオッサンの意向。
だいたい、iniだと連番付けたりしなきゃいけないだろうに、
挿入や削除したくなったときはどうするつもりなんだろう? gephiってソフトつかいだしたのでxmlについてちょっとべんきょうしようとおもってんだけど
xmlってもう廃れた言語なの? >良くも悪くも枯れた言語
良くも悪くも とか 枯れた ってわかりやすく言うとどういうこと?
このスレも10年位前に建てられてるし、図書館でけんさくしても10年位前の本しか出てこないし
xhtmlもなくなったし
勉強とかしても使いみちないん? とりあえず無くなったのはXHTML2.0でXHTMLは無くなってないよ
10年間変わっていないことに価値を見出せないなら止めとけば? XHTMLとXMLは違う
データの表現としてXMLは今後も残るように思う
schemaとかDTDとか検証できるのは強み XML Schema に合わせてXMLを修復してくれるようなツールってないでしょうか?例えば順序が違っていたら並べかえてくれるとか。 Webブラウザの互換表示みたいに
力技でやる以外は原理的に無理だろ
というかデータだけ見て修復できるんなら
最初から緩いスキーマで十分ということでは? そうですか。どうも。
やはり自作するしかないか・・・ XMLを整形するフリーのプログラムを探してます
ミスなく動作するのはもちろんのこと
・テキストで入力してテキストで出力する(ファイルではない)
・インデントはタブ(を選択できる)
・子要素タグを内包しない場合は内容および終了タグを改行&インデントしない(を選択できる)
・属性の区切りも整形できる
・ルート要素が複数あっても、警告は出すとしてもとりあえず整形結果を出力できる
…あたりの条件を始めとして、なるべく任意で設定できるのが望ましいのですが
なかなか全てを満たすものが見つかりません
なにかいいのないでしょうか ルート要素が複数あるのはwell-formedではないのでは。 その程度のスクリプトをさくっと書けるのがXMLの利点では?
XMLで独自色出しても自己満足以上に
いい事なんてないと思うんだが 2つのXMLファイルを比較して足りない部分は追加、変更部分は更新したいのですが
全ノードを一つずつ比較していくしか思い浮かびません。
何かいい方法ないのでしょうか。 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
S7OQA 広告やらなんやらの情報でめちゃくちゃごちゃついたxmlをjsonみたいにしてくれるサイトってありますか? exiフォーマットをブラウザーに表記できるもんですか? >>933
今日日、ブラウザで表示できないものはないんちゃう?w テキストベースのhtmlやxmlを介在せずにできるんですか?
素人すぎて申し訳ないのですが、お教えください EXI形式は一見すばらしい技術に見えるけど対して圧縮率変わらねーしな。
寧ろ今時の多くのシステムに備わってるgzip圧縮のほうが汎用性・可搬性の面で「効率的」とも言える。 ブラウザで動くアプリって、安定しないイメージあるんですけど、
イメージだけなんですかね?
グルグルまわって永遠にループしてたり、やはり機関系に比べてWeb系のPhper開発者はバカが多いからですか? レス数が900を超えています。1000を超えると表示できなくなるよ。