XMLプログラミング
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG俺の持ってる本には
「attribute軸とnamespace軸は要素ノードからのみたどることのできる軸」
とあるのでそういう認識でいいと思う
"self::node()"は"."と同義なんだからおかしな事になる(むしろself軸ってこれ以外使い道無い??)
属性ノードの場合"@"を使うわけだし
0244デフォルトの名無しさん
NGNGThanX!!やっぱそうだよねぇ〜
というか、もしかして本が間違えてると言う可能性も
えてたわけですが^^;<XML完全解説(下)
selfで取り出せるのは従属ノード以外のコンテキストノード
ということになるんですかね。
#そもそもコンテキストノードには従属ノードは含まれない?
axisのとこに*selfだけ解説がないので迷ってました。P.65
#child,followingなんかだと従属ノードは取り出せないって明記されてるんですが。
0245デフォルトの名無しさん
NGNGhttp://relaxngcc.sourceforge.net/ja/
あまりコメントないようなので、使ってあげてください。
0246デフォルトの名無しさん
NGNG243だけど俺も同じ本使ってる(w
たぶんあれには嘘は書いてないと思うよ
従属はあくまでも従属だからその親要素に行ってattribute軸なりを指定しないと
取り出せない(./@hogehogeなんてのができない)と思うので
そういう意味でselfは起点のノード(要素)のみでしょ
そのページの上に書いてある図がわかりやすいと思うけど
0247デフォルトの名無しさん
NGNGあれしか日本語でまともな本ありませんやん。重宝してます。
あとは、Don Boxの
http://www.amazon.co.jp/exec/obidos/ASIN/0201709147/ref=sr_aps_eb_1/250-5771327-1457021
とか。information setちゃんと解説した本あんまないような。
selfで今いるコンテキスト取り出せたとしても
attribute,namespace以外では従属ノードのとこまでtree walkできませんね^^;
もしそこまでいけたとしたら、きっと、selfで取り出せるけど
そんなことできませんがな、ってことですかね。
0248242
NGNGちょっと待てよぉ。Quipで試してみたら
/attribute::*/self::*
属性のコンテキスト取り出せます。
ってことは、従属ノードもselfは取り出すって事ですか?
でも、/attibute::*/self::node()ではでてこないという謎仕様なので
あんま信用おけないかもですが。
node()で出てこないで、なんで*で出てくるんだろ。
0249デフォルトの名無しさん
NGNGhttp://school.2ch.net/test/read.cgi/lic/1002557224/
0250デフォルトの名無しさん
NGNG0251重複スレです。
NGNG0252デフォルトの名無しさん
NGNG正気とは思えん
0253デフォルトの名無しさん
NGNG<?xml version="1.0" encoding="utf-8"?>
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
xmlns:c="http://www.xml.gr.jp/xmlns/relaxngcc"
c:package="">
<start c:class="PersonList">
<element name="person-list">
<zeroOrMore>
person = <ref name="person"/>
</zeroOrMore>
<c:java>
System.out.println("" + person);
</c:java>
</element>
</start>
0254デフォルトの名無しさん
NGNG<define name="person" c:class="Person">
<c:java-body>
public String toString() {
return ("name=" + name
+ ", sex=" + sex
+ ", age=" + age
+ ", zip=" + zip
+ ", address=" + prefecture
+ " " + city
+ " " + detail);
}
</c:java-body>
0255デフォルトの名無しさん
NGNG<element name="person">
<element name="name">
name = <text/>
</element>
<element name="sex">
<choice>
sex = <value>male</value>
sex = <value>female</value>
</choice>
</element>
<element name="age">
age =
<data type="decimal">
<param name="minInclusive">0</param>
</data>
</element>
0256デフォルトの名無しさん
NGNG<element name="address">
<element name="zip">
zip =
<data type="string">
<param name="pattern">[0-9]{7}</param>
</data>
</element>
<element name="prefecture">
prefecture = <text/>
</element>
<element name="city">
city = <text/>
</element>
<element name="detail">
detail = <text/>
</element>
</element>
</element>
</define>
</grammar>
0257デフォルトの名無しさん
NGNG<?xml version="1.0" encoding="Shift_JIS"?>
<person-list>
<person>
<name>ほげ</name>
<sex>male</sex>
<age>20</age>
<address>
<zip>1234567</zip>
<prefecture>東京都</prefecture>
<city>千代田区</city>
<detail>大手町</detail>
</address>
</person>
</person-list>
0258デフォルトの名無しさん
NGNGどんどん、追記式でデータが入る場合、どのような方法で
記録していけば効率がいいのでしょうか、いつも最後の閉
じタグのところの処理に悩みます。
例えば、次のようなデータの場合、最後の</salesdata>がある
がために、<order></order>データをどんどん書き足していく
ことができないのです。こういう場合ってどうやって処理するのが
一般的なのでしょうか?
<salesdata>
<order no="1">aaa</order>
<order no="2">bbb</order>
<order no="3">ccc</order>
<order no="4">ddd</order>
</salesdata>
DOMとか使うと、毎回データを全部メモリに読み始め
てしまうし、SAXでも結局はデータを順次読んでいかな
ければならないと思います。一番簡単なのはファイル
ポインタをいきなり最後にもっていって、</saledata>
のタグまで、戻って、<order></order>データで上書き
して行く方法なのですが、、、なんかムダな感じが、、、
みなさんはどうやっているのでしょうか?
0259デフォルトの名無しさん
NGNG<append><selesdata/><order>ddd</order></append>
つーか、普通にDB使えば?
0260デフォルトの名無しさん
NGNG状態遷移あくまで資料だから、見なくても使えるよん。
(状態はエラーの回復とかやる人のためのもの)
すごい簡単だよん。
使うソースはparse.cppとparse.hの二個だけ。
#include "parse.h" // ヘッダはこれ一個。
ifs.open("hoge.xml");
parser ps;
char c;
while (ifs.get(c), ifs.good()) {
if (ps.step(c)) break;
}
if (ps.checkerror()) {
std::cerr << "シンタックスエラー" << std::endl;
} else if (!ps.acceptable()) {
std::cerr << "ちょちょ切れ" << std::endl;
} else {
; // OK
}
0261デフォルトの名無しさん
NGNGキーボードから入力できない記号(?)があって困っています。
Unionと言う演算子(?)らしいのですが、Shift押しながら全部のキーを試しました。
でも、でませんでした。
皆さんはどうやって入力しているのでしょうか?
お助け下さい
0262デフォルトの名無しさん
NGNGhttp://pc.2ch.net/pcqa/
0263デフォルトの名無しさん
NGNG状態遷移図実はドキュメントと同期してない?
受理状態となるS7が見あたらないんだけど
0264デフォルトの名無しさん
NGNGとりあえず</salesdata>が現れるとこまでバッファに読み、</salesdata>を無視して
追記して最後に</salesdata>と書き込み、出力する。
とりあえず効率は良いし要件は満たしてるでしょ。
ただ組込系とかのタイトなシステムでやるのでない限りDOM使うのがいいと思うけどなー。
パフォーマンスチューニングも大事ですが、コードを単純化して
保守性をあげるのも大事な仕事だと思います。
0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNG直しまふ。すまそ。
0267デフォルトの名無しさん
NGNGWindows2000
JBuilder7.0
Java1.3.1_02
xalan2_4_1
xerces2_2_1
でXSLT変換してるんだけど改行がCRCRLFになる。デバッガでは\r\nですね。
普通にCRLFにさせたいんだけど何か設定漏れかな?
参考にしたところはhttp://www.hellohiro.com/xslt.htm
よろしくおねがいします。
ちなみに<xsl:output method="text" encoding="shift_JIS" />とxsltファイルには指定してあります。
0268デフォルトの名無しさん
NGNG<hoge>foo1,foo2,foo3</hoge>
のように,デリミタ区切りのXMLソースから,XQueryを使って,
<hoge>foo1</hoge>
<hoge>foo2</hoge>
<hoge>foo3</hoge>
としたいのですが,できるのでしょうか?
お手数ですが,よろしくお願いいたします.
0269デフォルトの名無しさん
NGNG>XSLT変換してるんだけど改行がCRCRLFになる。デバッガでは\r\nですね。
>普通にCRLFにさせたいんだけど何か設定漏れかな?
\r\r\n?
\nにしたいの?
0270デフォルトの名無しさん
NGNG\r\n -> \n
に
バイトなら
CRCRLF -> CRLF
0x0d 0x0d 0x0a -> 0x0d 0x0a
にしたいっす。
0271デフォルトの名無しさん
NGNG状況がそれだけじゃわかんないよ。
CRLFの入力をテキストモードで読みこんでCRLF補完された、または
CRLFのデータをテキストモードで書き出しでCRLF補完されただけって
気がするけど。
ファイルの読み書きの仕方が悪いとしか言いようがない。
0272267
NGNGpublic static String n2S(Node targetNode,
String xsltFileResourceName)
throws IOException, TransformerConfigurationException,
TransformerException {
ClassLoader cl = ClassLoader.getSystemClassLoader();
java.net.URL uri = cl.getResource(xsltFileResourceName);
StreamSource xslsrc = new StreamSource(uri.openStream());
StringWriter sw = new StringWriter();
TransformerFactory factory =
TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(xslsrc);
transformer.transform(new DOMSource(targetNode),
new StreamResult((Writer)sw));
return sw.toString();
}
よろしくおねがいします。
0273268
NGNGそれとも簡単すぎるのでしょうか.できればコメント願います.
...XQueryはデリミタを解釈できない...
再掲載:
<hoge>foo1,foo2,foo3</hoge>
のように,デリミタ区切りのXMLソースから,XQueryを使って,
<hoge>foo1</hoge>
<hoge>foo2</hoge>
<hoge>foo3</hoge>
としたいのですが,できるのでしょうか?
お手数ですが,よろしくお願いいたします.
0274デフォルトの名無しさん
NGNGここじゃなくてWebプログラミング板で聞いたら?
http://pc.2ch.net/php/
0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNG一応つっこんでおくとどの言語でも大体仕様一緒なんだから勝手に読み解けや。
0277デフォルトの名無しさん
NGNG君、大雑把過ぎ。
0278デフォルトの名無しさん
NGNG君プログラマに向いてない。
0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNGDOMとかSAXとかって言語問わず同じ手順で操作出来るのが売りなのでは?
0281デフォルトの名無しさん
NGNGMSXMLだったらCOMだしな。Java+XMLの達人でもいきなりだとサンプルなし
では難しいと思われ。
0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNG0284デフォルトの名無しさん
NGNGhttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnxml/html/xmlpaddownload.asp
0285まちがい
NGNG0286デフォルトの名無しさん
NGNGちなみにおれは知らん。ごめんよ。
0287デフォルトの名無しさん
NGNGXQuery使ったこと無いけど、本当にXQueryじゃないと駄目なの?
XSLTとか使ってると簡単なことなら問題ないけど、ちょっと複雑なことをやろうとすると面倒になるよ。
XSLTで改行を<br>に変換しようとしただけでユーザ定義関数作る羽目になったんで。
たぶんXQueryも同じじゃないかなと思うけど。
個人的にはこの場合はXPathとか使って値を取得してから普通にプログラミングでやった方が良いと思うよ。
0288268
NGNGありがとうございます.反応していただいただけでもうれしかったです.
>>287
反応していただき、ありがとうございます.
XQuery以外ですと,JavaScriptしか他はないといったところです.
自分が組める組めないという事情とはちょっと異なり,それしか
手段がないといったところです.
いずれにせよ,ちょっと難しそうですね.
いろいろありがとうございました.
0289デフォルトの名無しさん
NGNG0290デフォルトの名無しさん
NGNGたまにDOMのクラスにメソッドやイベントを書き換えたり追加したてぇって思いますよ。
例えばXMLファイルの整合性を保つためにロック機構を実装しようと、DOMDocument
クラスのLoad,saveメソッドを書き換えたいなぁっと。
MSXMLを使っている限りアクロバティックなコーディングをしないと無理?
Javaを使えばオーバーライドやらを使えばできるんですか?
0291わ ◆nZptw02DTU
NGNGロックは別の機構でしましょう。
ASPならServer.Lockだったかな?
VBとかならセマフォか?
一個ロック用COMを用意しておくと使い回しが便利だとは思うけどつくってません。
0292デフォルトの名無しさん
NGNG書込み可で開いたときにロックファイルを置くってなレベルで
いいんですよ。ただし、Load,save共に書き換えて置かないと
おかしくなりますが。
Server.Lock?ってありましたっけな。調べよ。後で。今は手
元にMSDNないし。
0293わ ◆nZptw02DTU
NGNG思い出した。
Server.ApllicationLock
0294デフォルトの名無しさん
NGNGはて?ありましたっけ?そういうメソッド。
ちなみにあちしはNT4で開発してるのでIIS4です。IIS5?
ひょっとして.NETとか?
0295わ ◆nZptw02DTU
NGNGごめんなさい。
適当に書いていること丸わかり。
Application.Lock
http://www.google.co.jp/search?num=100&hl=ja&ie=UTF-8&oe=UTF-8&q=Application.Lock&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0296デフォルトの名無しさん
NGNGSAXParseException : the root element is required in well-formed document
これってXML文書本体に誤りがあるってことですよね?
でもXML文書本体もスキーマも正しいはずなんですが、どうしてなんでしょうか?
誰かおねがい!!
0297デフォルトの名無しさん
NGNG> でもXML文書本体もスキーマも正しいはずなんですが
思い込み。
0298デフォルトの名無しさん
NGNG> でもXML文書本体もスキーマも正しいはずなんですが
証拠は?
0299 ◆oKgODJRETc
NGNGなーるほど。
(多分)
読み込み、書込みの前後で必ずApplication.Lock/Application.UnLock
をして同時に読み書きが行われるのを避けると。
ASPでの実装はそれでオッケーそうですな。
0300 ◆oKgODJRETc
NGNGJavaにヒジョーに興味があります。
>>290
であちしが書いたような、XML DOMのメソッド書換えってJavaだとで
きるんですか?
0301デフォルトの名無しさん
NGNG委譲書くのがめんどいけど。
0302デフォルトの名無しさん
NGNGパーサーと、XML文書、クラスパスの情報を書け
0303 ◆oKgODJRETc
NGNGいや、JavaでXML使うんだから、MSXMLは使わないです。
確かJavaでもXMLのDOMってありましたよね。
0304わ ◆nZptw02DTU
NGNGXerces かな。
.save とか .load とかっていう便利な代物無いから適当に書いてください。
でも、別環境との排他はファイル存在排他か、DBをつかわないと出来ないよ。
WindowsとASPとかはCOM経由で同一排他ロジックが利用できるけどね。
0305デフォルトの名無しさん
NGNGTransformerFactory.newInstance().newTransformer()
0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNGCの基本からやり直せ
0308デフォルトの名無しさん
NGNGXMLDOMを使用した場合、各タグのパラメータを取得するには
getElementsByTagNameメソッドを使用しますが、このパラ
メータを更新したいときはどのようなコーディングをすれば
良いでしょうか? 使用するメソッドがわからないです・・・。
0309わ ◆nZptw02DTU
NGNGなにがわからん?
a = domdoc.getElementsByTagName("").value
で取得できれば
domdoc.getElementsByTagName("").value = a
で設定。
0310デフォルトの名無しさん
NGNG0311308
NGNGありがとうございます!
その通り、パラメータセットを逆にしてあげるだけで
いいのかな?と思ったんですけど、上記のように実装
してもデータが反映されないんですよ。ファイル更新
時間も変わらないし。
このあとで何か命令が必要なんでしょうか?
ちなみに値の取得はできてます(確認しました)。
Set xmldoc=CreateObject("Microsoft.XMLDOM")
xmldoc.async=false
xmldoc.load(ファイルパス)
set strData = xmldoc.getElementsByTagName(タグ名)
domdoc.getElementsByTagName("").value = a
0312308
NGNGstrData.Item(0).text = a
0313デフォルトの名無しさん
NGNG0314わ ◆nZptw02DTU
NGNG保存してる?
MSXMLなら.save
それ以外は自分で調べて。
オンメモリのドキュメントは変更されてるから。
0315デフォルトの名無しさん
NGNG>>313
やり直してきたみたいだね。感心感心。
0316308
NGNGできました! そうですね、保存処理をすっかり
忘れてました・・・(恥)。ありがとうございました。
ただそのまま保存すると2バイト文字が内部コード(UTF-8)
の3バイト形式になってしまうんですね。
元々の形式が「𘚟」だったので・・・。変換モジュール
作るしかないですね?
0317わ ◆nZptw02DTU
NGNGそんなことはないよ。
どうやって保存してる?.save()?
>>313のようにXML宣言しているところをencoding="Shift_JIS"にしてる?
0318308
NGNG「encoding="UTF-8"」です。元々作成データはUTF-8なんです。
ただ、作成したいのはUTF-8の3バイトコードじゃなく、
"𘚟"の文字体系なんですね。
なので、Save処理を実行すると当然ながらデータは元々の体系
ではなく3バイトコードになってしまうのでマズイ、と。
0319308
NGNG0321デフォルトの名無しさん
NGNG例えば「正規表現で表すものは大文字で始めます」とかイットキナガラ
「prolog」が大文字で始まらないのはなんなんだよっ
0322デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNG0325デフォルトの名無しさん
NGNGCでコーディングしてるんですが、
IXMLDomDocument* aaa
みたいにして、かつCreateInstanceしてさらにaaaを、LoadXMLとかLoadしてDOMつくるじゃないですか。
今度はbbbを、aaaと同じようにして別のXMLで作成して、bbbをaaaに代入することはできるんですか?
処理が死んでしまうんですが・・・
どなたか詳しい方に教えていただきたいんですが。
よろしくお願いします。
0326デフォルトの名無しさん
NGNG「処理が死んでしまう」とは?
XML以前の予感
0327デフォルトの名無しさん
NGNGxalanのXPathAPIクラス使えばいいんだろうが、xalan.jar使いたくない
でもDOM/SAXは辛い
0328デフォルトの名無しさん
NGNG学生なんですいません。
「代入」・・・bbbのXML文書をaaaにコピーしたい。元々のaaaのXMLはもう要らない。
「処理が死ぬ」・・・実行時にエラーが発生するという意味です。
むいてないんですかね、おれ。
0329デフォルトの名無しさん
NGNGどんなコードか載せてみれ。
0330デフォルトの名無しさん
NGNG今ないんで明日ガッコからもってきます。
レスありがと。
0331デフォルトの名無しさん
NGNGAPIがエラーを返すのか、OSが例外を出すのか、はたまた…。
0332デフォルトの名無しさん
NGNGとにかくコード
0333デフォルトの名無しさん
NGNGXMLマスターってどんな資格?
XMLは元々そこそこ詳しいし、ちょっとした暇を見つけて取得しようかと考えているんだけれど。
少なくとも海外では使えなさそう、という事だけはわかりました。
後、他に(海外含めて)XML関係の資格ってどんなのがあるでしょう?
0334デフォルトの名無しさん
NGNG↓こっち嫁
XMLマスターってどうよ?
http://school2.2ch.net/test/read.cgi/lic/1002557224/
んでXMLマスタープロフェッショナルの資格を取って勇者になれ。
そしてスレを救え。たのんだ。
0335デフォルトの名無しさん
NGNGサンクス。しかしそのスレをみると、やはり使い道のない資格の様な気がする。
そのスレで紹介されていたIBMの資格がちょっと気になる。
http://www-1.ibm.com/certify/tests/obj141.shtml
今度アメリカに遊びに行くついでに試験受けてみようかな…
0336デフォルトの名無しさん
NGNGXMLマスターが使い道なければIBMの試験はもっと使い道ねーよ
もういい帰ってくれ。
0337デフォルトの名無しさん
NGNGアホ発見(プ
0338デフォルトの名無しさん
NGNG/∵∴∵∴\
/∵∴∵∴∵∴\
/∵∴∴,(・)(・)∴|
|∵∵/ ○ \|
|∵ / 三 | 三 | / ̄ ̄ ̄ ̄ ̄
|∵ | __|__ | < うるせー馬鹿!>>337
\| \_/ / \_____
\____/
0339デフォルトの名無しさん
NGNG言語はjavaなんですけど、
XQueryとか、そういうXMLの問い合わせ言語で
実際に使えるものはあるのでしょうか?
やっぱりDOMやSAXで自分で作るほうがいいでしょうか?
0340デフォルトの名無しさん
NGNGXPath
0341デフォルトの名無しさん
NGNGhttp://jakarta.apache.org/commons/jxpath/index.html
0342339
NGNGありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています