トップページtech
542コメント171KB

XMLプログラミング

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
単におれが質問したいから立てたぞ!
0065デフォルトの名無しさんNGNG
>>64
みんなそれくらい理解していると思われ。何を偉そうにしゃべってるか知らんが。
俺も意外とあっけなく理解できてビビったけどな。
0066デフォルトの名無しさんNGNG
頭悪そうな香具師が絡んでるスレってココ?
0067質問NGNG
最近XMLを勉強し始めた者です.
XMLでもともと構造化されている文書を記述したのですが,思った通りに
表現できません.調べたんですが,よくわかりません...
ちなみにプログラムの知識はまったくないです.
やりたいことは,下のXMLのtag3について,IDが1であるものだけをとり出し
て文章を表示させたいです.(つまり,「あえおおお」と表示したい)
文章はtag3の中に直接書き込んでしまったんですが,これがいけないので
しょうか...?
わかる方,よろしくお願いします.

XML----------------------------------------------------------------
<root>
<tag1>
<tag2>
<tag3 ID="1">あ
<tag3 ID="2">い
<tag3 ID="3">う
<tag3 ID="1">え</tag3>
</tag3>
</tag3>
おおお
</tag3>
</tag2>
</tag1>
</root>
---------------------------------------------------------------------
0068質問(上の続き)NGNG
XSL------------------------------------------------------------------
<xsl:template match="/">
<HTML>
<HEAD><TITLE>テスト</TITLE></HEAD>
<BODY><xsl:apply-templates select="root"/></BODY>
</HTML>
</xsl:template>
<xsl:template match="root/tag1/tag2">
<xsl:for-each select="//tag3">
<xsl:value-of select="@ID"/>
<xsl:value-of select="tag3"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
--------------------------------------------------------------------
0069デフォルトの名無しさんNGNG
あげ忘れたったのでage
0070デフォルトの名無しさんNGNG
普通エレメントはテキストのみを持つものと、子エレメントのみを持つもの、
テキストも子エレメントも持たないものの3種類の内のどれか。
0071デフォルトの名無しさんNGNG
id重複だって馬鹿か?
0072デフォルトの名無しさんNGNG
id重複って許されるんだっけ?
0073デフォルトの名無しさんNGNG
<xsl:template match="/root/tag1/tag2">
<xsl:apply-templates select="tag3"/>
</xsl:template>

<xsl:template match="text()">
<xsl:if test="../@ID='1'">
<xsl:value-of select="."/>
</xsl:if>
</xsl:template>
007467-68NGNG
>>70
では,テキストと子エレメントの両方を持つエレメントは普通はないってことですか!?

>>71
え,IDって重複しちゃいけないんですか?そんなことないですよね???
007567-68NGNG
>>73
やってみます!
007667-68NGNG
>>73
なんかエラーメッセージが出たんだけど,そのエラーメッセージが文字化けしてて
読めない...文字コードもなぜか変えられない...欝
0077デフォルトの名無しさんNGNG
MSXSL.EXEを使え
0078デフォルトの名無しさんNGNG
まんせーってどういういみですか?
0079デフォルトの名無しさんNGNG
XMLってDTDとかスキーマの検証ってどうするの?
普通にDTD作ってIE開いても整形のXMLインスタンスだったら
表示されてしまってエラーにならないんだけど
DTD自体の構文が間違ってたらエラーになるけど
DTDとインスタンスが違っててもエラーにならない。

XSVとか使ってるの?
一番シンプルな検証方法をキボンヌ
0080デフォルトの名無しさんNGNG
XMLでDTDとかスキーマの検証ってどうやってるの?
普通にDTDを作ってIEを起動させても検証してないみたい。
DTDとインスタンスがちゃんと一致してなくても表示される。
DTD自体の構文が違うとエラーにはなるけど

XSVとか使ってるの?
一番シンプルなスキーマ検証方法キボンヌ
0081デフォルトの名無しさんNGNG
ゴメン二重になった
微妙に違うけど
鬱ダシ脳
0082デフォルトの名無しさんNGNG
XMLファミリーを列挙してください。
おながいします。

XML、XSL、XSLT、DOM、SAX
0083デフォルトの名無しさんNGNG
ファミリーつーか、XMLとそのクソに群がるハエ、って感じだよね。
0084デフォルトの名無しさんNGNG

        ____      ________
      /      \   /
      |   \XML/ |〜<俺を馬鹿にしやがって・・・
      川川==◆=◆〜 \_______
      川川 _ (・・)   /    ___
    _;   \ | 曲|    .    |  |   |\_
  /      \ _/        . |  |   | |  |\
 /    /     | |         |  |   | |  |::::|
(    (   / \_       .|  |   | |  |::::|
 \   \   /\    ̄ ̄\   |  |   | |  |::::|
  /:\   \      ̄\っ)))) 〜|  |   | |  |::::|
 /:::  \    つ_   | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 |:::    \___ )    ̄ ̄| ________ |
 |::::                   .| |            . |.|




0085デフォルトの名無しさんNGNG
>>82
XSLとXSLTは同じではないの?
スタイルシートとそのトランスレータ?
0086デフォルトの名無しさんNGNG
>>82 http://www.w3c.org/TR/ 見れ
0087デフォルトの名無しさんNGNG
XSLはXSLTとXSL FOから構成されるということになってるけど
先にXSLTだけ世に出たから
0088デフォルトの名無しさんNGNG
ホントでしか?
008967-68NGNG
こないだ質問した者です.
>>73
のをやってたらできました!!!
超感動です!
なんと言っていいかわかりませんが,本当にありがとうございます!!!
2chをやってて一番うれしかったかも(笑).
レスくれた人達,ありがとうございました!
0090デフォルトの名無しさんNGNG
XSLとExcelはなにか関係があるんでしょうか?
Excelの拡張子はxlsだし、混乱してます。
0091デフォルトの名無しさんNGNG
↓こいつの言ってることには同意できない。
http://www.users.gr.jp/ml/archive/xml/571.asp

>XMLの利点に関して
>(省略)
>しかし、パフォーマンスは置いといて、データの汎用性という点について
>考えてみるとどうでしょうか?
>例えばAccessで作成したファイルをOracleに移行するとなると、移行プログラムを
>作成したり、いったんCSV形式に変換してからOracleで取り込むなどの手間が
>必要ですよね。同期を考えると定期的に移行バッチ処理も流さないといけませんよね。
> これを元データをXMLで持たせておいて、AccessとOracleの両方で読み込む
>方式にすれば、データの持たせ方もはるかにスッキリしますし、同期処理も考えなくて
>いいですよね。

DB同士のマージに比べたら、XMLに移行する手間って相当なもんだと思うけど。
パフォーマンスの話どっかいっちゃってるし。
それに汎用性とか言ってるけど、何にでも適用できる汎用的なデータなんて
作れる気がしないんだが。
結局はパーサが同じで済むってぐらいの利点しか今のところ見出せない。
XMLの使い所ってなんなんだろうね?
0092デフォルトの名無しさんNGNG
>>91
ひでーなそれ。
今のところ「データ部分は XML 使ってます!」っていうセールストークにしか
なっていない。まぁ繰り返しやツリー構造を成すデータ構造の保管には便利っちゃ
便利なんだが、大抵は name=value の ini 形式と CVS でどうにかなっちゃう
のも事実。
0093デフォルトの名無しさんNGNG
>>91-92
こっちでやってくれ
http://pc3.2ch.net/test/read.cgi/tech/1014718263/l50
009467-68NGNG

この前質問した者です.
>>73で教えてもらった方法でうまくいったのですが,その後に続いてID=2,ID=3も
表示させようと思って,
<xsl:template match="/root/tag1/tag2">
<xsl:apply-templates select="tag3"/>
</xsl:template>
<xsl:template match="text()">
<xsl:if test="../@ID='1'">
<xsl:value-of select="."/>
</xsl:if>
</xsl:template>

<xsl:template match="text()">
<xsl:if test="../@ID='2'">
<xsl:value-of select="."/>
</xsl:if>
</xsl:template>

としたら,ID=2のテキストしか表示されませんでした.
本とかを見て,
<xsl:choose>
<xsl:when test="../@ID='2'">・・・</xsl:when>
<xsl:otherwise>・・・</xsl:otherwise>
</xsl:choose>
ってやつでもやってみたんですが,だめでした.なぜ順番に表示されないのでしょうか...
将来的には(もうちょっとわかってきたら)IDの数を読み込んで,その人数分だけID
別にテキストを表示させたいと思っていますが,とりあえずID別ににテキストを表示
させたいです.

たびたび申し訳ないのですが,わかる方よろしくお願いします.
0095デフォルトの名無しさんNGNG
>>90
ネタですか?
XSLとExcelは無関係です。拡張子が似ているだけ。
0096デフォルトの名無しさんNGNG
捻りのないネタとレスですね?
つかXで始まる拡張氏は全て、Excel用に予約してるんじゃないかと
0097デフォルトの名無しさんNGNG
お勧めの本教えてください。
文系でプログラミング経験無しです。
0098デフォルトの名無しさんNGNG
>>97
何したいんだか知らないけどさ、多分板違いだと思うんだよね。
こっちで聞いてみれば?
http://pc.2ch.net/php/
http://pc3.2ch.net/hp/
0099デフォルトの名無しさんNGNG
>>98
ありがとうございます!!
0100デフォルトの名無しさんNGNG
>>94
http://www.asahi-net.or.jp/~ps8a-okzk/xml/xslt10_1/conflict_resolution.html
> これでもなお最も高い優先順位を持ったテンプレートルールが複数存在する場合、 エラ
> ーとなる可能性があります。 XSLT仕様書を読むと、エラーとするか、一番最後に書かれ
> たテンプレートルールを採用するかを、 XSLTプロセッサが選択することになっています。

という理由。

なんか教えてあげたやつがどういう風に動いてるか理解してないんじゃないか
という気もするんだけど、とりあえずこうやればできるよ。

<xsl:template match="/root/tag1/tag2">
<xsl:apply-templates select="tag3//text()">
<xsl:with-param name="i">1</xsl:with-param>
</xsl:apply-templates>

<xsl:apply-templates select="tag3//text()">
<xsl:with-param name="i">2</xsl:with-param>
</xsl:apply-templates>
</xsl:template>

<xsl:template match="text()">
<xsl:param name="i" />
<xsl:if test="../@ID=$i">
<xsl:value-of select="."/>
</xsl:if>
</xsl:template>

あるいはその奇妙な書き方のXMLをやめて入門書の例を
真似てみたほうがいいかも?
0101デフォルトの名無しさんNGNG
<age>
0102デフォルトの名無しさんNGNG
http://findx.nikkeibp.co.jp/ws/sp00xhtml1.html
このサイトに書かれていた例文を入力しても、普通に「3 x」と表示されるだけです。
なんかもっと違う表示のされ方を期待したのですが、これでいいのでしょうか。

ソース
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">

<head>
<title>例</title>
</head>

<body>

<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply> <log />
<logbase>
<cn> 3 </cn>
</logbase>
<ci> x </ci>
</apply>
</math>

</body>

</html>
0103デフォルトの名無しさんNGNG
age
0104デフォルトの名無しさんNGNG
MathMLに対して標準の描画手段を持たないUAならそうなんじゃないの?
010594NGNG
>>100
レスありがとうございます!!!
さっそくやってみます!
0106デフォルトの名無しさんNGNG
>>102
mozilla 使っているならこのサイトを見れ。
http://pear.math.pitt.edu/mathzilla/
0107デフォルトの名無しさんNGNG
http://profiles.yahoo.co.jp/tengaiten2002
0108デフォルトの名無しさんNGNG
CもしくはC++で、XMLファイルをSAXで読み込んでくるプログラムを紹介している
サイトなどがあったら教えて頂けませんか?
0109デフォルトの名無しさんNGNG
それぐらい自分で検索しろ
0110デフォルトの名無しさんNGNG
http://www-6.ibm.com/jp/developerworks/xml/020118/j_x-ctlbx.html
011194NGNG
>>100
できました!!!
たびたびすみません...ありがとうございます.

67のXML,そんなに変ですか...?
確かに本に書いてあるやつとは全然違うなぁとは思うんですけど,同じタグや属性を複数の階層に
渡って使うというのがいけないのでしょうか.<本にはそういう例がない
扱う文書がそのような構造になってるのでそのままやってみました.
0112デフォルトの名無しさんNGNG
ものすごく変だよ
0113CMNGNG

                 ノリ返セヨ〜
  ∧_∧ ―     / ̄\ ―
  (´∀` *) ―     (´∀` ;) ―
 ⊂    つ ―    と  と) ―
   ヽ■ ヽ ―     Y  人 ―
  (__ノ `J ―     (__ノ`J ―

0114102NGNG
四日間、苦手な英語で>>106のサイトを翻訳していましたが未だにわかりません。
結局どうなんですか?ieでもnnでもoperaでも試しましたが、一向に>>102のソースは「3 x」と表示されるだけです。これでいいのでしょうか。
0115デフォルトの名無しさんNGNG
XHTMLからbr要素が消えるって話で思ったんだけど
brで改行されたXHTMLをlineに置き換えるXSLTってどう書いたら委員だろ?
↓こういうの。
<p>
1行目<br>
2行目<strong>強調</strong>。<br>
3行目<img src="bg.gif"><br>
</p>

<p>
<line>1行目</line>
<line>2行目<strong>強調</strong>。</line>
<line>3行目<img src="bg.gif"></line>
</p>
0116デフォルトの名無しさんNGNG
そもそもbr要素は必要か?…という煽り合いが始まるわけだが…。

# 個人的には要らんと思う。今まで使ったコトもないし。
0117デフォルトの名無しさんNGNG
別にbrの是非について話をふったんじゃないんだけど
0118デフォルトの名無しさんNGNG
というか例文がXHTMLになっていなかったけど脳内で修正してね
0119デフォルトの名無しさんNGNG
>>115
XSLは知らんのでschemeで。
アルゴリズム的な話に絞ればこれと似たコードになるんじゃないかなあ。

(define (br->line s)
 (let loop ((x (cdr s))(stack '())(r '()))
  (cond
   ((null? x)
    (cons (car s)(reverse (append stack r))))
   ((and (pair? (car x)) (eq?(caar x)'br))
    (loop (cdr x) '() (cons (cons 'line (reverse stack))r)))
   (else (loop (cdr x) (cons
     (if (pair? (car x)) (br->line (car x)) (car x)) stack) r)))))

;test1
(br->line '(p a b c (br) d e f (br)))
=>(p (line a b c) (line d e f))

;test2
(spexpr->html(br->line(html->sexpr
"<p> a b c <br/> d e f <br/></p>")))
=>"<p><line> a b c </line><line> d e f </line></p>"

だれかXSLに変換してくれ。
0120つかってみるとかNGNG
>>114
WEBの翻訳(無料)
http://www.excite.co.jp/world/url/
0121属性の有無を調べるにはNGNG
MSXMLを使ってDOMプログラムを始めた厨房です。
要素の属性名がわかっていて、その名前の属性をIXMLDOMElementPtr
が保持しているかどうかを調べるのにはどうしたらいいですか。
getAttribute()をつかってアクセスしようとすると属性が存在しない場合
例外が発生してしまいます。
0122デフォルトの名無しさんNGNG
XMLってどこから始めるのがいいの?
アプリの設定を保存するにしてもイマイチだし、
DTDだとかXSLだとか無関係に感じるんだけど。

ホントの初歩だと、どこからはいるのが良いんでしょ?
0123デフォルトの名無しさんNGNG
>>122
XMLなんかやめて、LISPやるのがいいと思います。
0124デフォルトの名無しさんNGNG
>>123
elispとschemeをちょっとだけやってます。
でも、今はXMLについて知りたいので。
0125デフォルトの名無しさんNGNG
perlとかで、ちょこっと何か書くとかの用途には向いてないよね。
0126デフォルトの名無しさんNGNG
lispをやると処理系を作りたくなり、
xmlをやるとパーサを作りたくなる。

車輪の再発名万歳
0127デフォルトの名無しさんNGNG
DOM使えばXMLの保存も楽に出来るけど、
SAXって何か保存する手段ないんですか?
0128デフォルトの名無しさんNGNG
厨が質問してるだけで誰も答えない寂しいスレだな、おい。
0129デフォルトの名無しさんNGNG
>>121
じゃあ例外を捕捉してあげてください
>>122
アプリ間の連結に使いましょう。
例えば貧弱なパイプ機構を強化するために、unixコマンドに
--xmlオプションが付いたバージョンを自作するなんて
どうでしょうか?XMLなら再利用が簡単です。
>>123
勧誘はよそでやれ
>>125
いつかはPerlに内臓されるかもしれません。この際、覚えてみましょう。
>>126
そんな君に万歳
>>127
SAXは保存を考慮しないで高速な解析を目指したもののような気がします。
>>129
ムキになって答えてみました。嘘は見抜いてください。
0130 NGNG
>>125
PerlのXMLモジュールは使いやすいよ。
0131デフォルトの名無しさんNGNG
xmlをやるとパーザよりも俺スキーマを作りたくなる。
0132デフォルトの名無しさんNGNG
スキーマもパーサーに含まれてるんじゃないの?
そうでないと妥当性検証できないじゃん
0133デフォルトの名無しさんNGNG
>>131は知ったか厨ということで。
0134デフォルトの名無しさんNGNG
>>129
>>115の質問にも答えてくれ。
0135デフォルトの名無しさんNGNG
>>129
>>102の質問にも答えてくれ
0136131NGNG
いや俺がいいたいのは、ヴァリデータじゃ無くてスキーマの規格?の方。
社内文書のスキーマとか。
0137デフォルトの名無しさんNGNG
それはスキーマを作るじゃなくて、
文書定義を書くってだけか?
0138デフォルトの名無しさんNGNG
>スキーマもパーサーに含まれてる
なんて言う方が馬鹿
0139デフォルトの名無しさんNGNG
>>138
え、なんで?
0140デフォルトの名無しさんNGNG
俗に言うXMLパーサーとバリデータってそもそも違うもんなんじゃないの?
0141デフォルトの名無しさんNGNG
バリデータもついてなきゃ単なるおもちゃのオナニーライブラリ止まりだと思われ
0142デフォルトの名無しさんNGNG
検証なしで高速化という方針もありかと。
検証なしの SAX パーサなら Java でも高速・省メモリにできる。
0143デフォルトの名無しさんNGNG
バリデータがついてると必ず検証しないといけないわけじゃないやん

>検証なしの SAX パーサなら Java でも高速・省メモリにできる。
検証なしの SAX パーサなら 単なるおもちゃのオナニーライブラリ止まりだと思われ。

ってことで。
0144デフォルトの名無しさんNGNG
プププ
0145デフォルトの名無しさんNGNG
perlでインストールしないで使えるパーサない?
cgiが使えるレンタルサーバで使いたいんだけど。
0146>143NGNG
validが保障されている場合、いちいち毎回vaklitateするの無駄でしょ。
0147デフォルトの名無しさんNGNG
XML::Parser::Lite が pure perl だったかな。
0148デフォルトの名無しさんNGNG
名前空間を指定したXMLファイルをDOMで読み込むと、
「この要素の属性'{xmlns}'は、DTDまたはスキーマで定義されていません。」
というエラーがでます。
このエラーを、DTDを変更しないで、且つ、名前空間は指定したままで解決する方法をどなたかご存知でしたら
教えていただけませんか?
DOMオンリーでお願いします。
0149デフォルトの名無しさんNGNG
XML::Parser::LiteでDOMとかXSLTとかできるのかしらん
0150デフォルトの名無しさんNGNG
これって本当か?

↓ ↓ ↓
http://www.dream-express-web.com/space-trust.htm
0151デフォルトの名無しさんNGNG
宣伝でつか?
0152デフォルトの名無しさんNGNG
宣伝でつね
0153デフォルトの名無しさんNGNG
XMLの本て、なんであんなに無意味に分厚いのが多いの?
0154デフォルトの名無しさんNGNG
そりゃ意味がわかんなきゃ無意味に見えるでしょうね。
0155例外処理について質問ですNGNG
ただいまIndyを使ってヤフーのTOPページのHTMLソースを
ダウンロードするアプリを作っているのですが、インタ
ーネットに接続してないときにこのアプリを実行すると..

「プロジェクト Project1.exe が EIdSocketError クラスの
 例外を生成しました。」

という例外が出ます。 この表示をtry〜except〜on〜do文を使って

「回線が繋がってません。」

というエラーダイアログに変更したいのですが、実際に
どう書けばいいのか解りません。
______________________________
var
Sorse:string; //HTMLソースを受け取る変数
begin
try
with IdHttp1 do
begin
Sorse := Get('http://www.yahoo.co.jp');
end;
except
on EIdSocketError do //EIdSocketErrorが未定義だと怒られます。
MessageDlg('回線が繋がってません。', mtWarning, [mbOK], 0);
end;
_________________________________
EIdSocketErrorが間違いなのは解っているのですが、ここを
どう変えれば良いのかが解りません。 もし解る方がおられ
ましたら宜しくお願いします。
0156155NGNG
ぐは・・
板間違えました、申し訳ない。m(__;)m
0157デフォルトの名無しさんNGNG
>>108
http://xml.apache.org/xerces-c/
0158デフォルトの名無しさんNGNG
Xercesをインストールできません.クラスパスの設定がうまく行ってないみたいなんですが,
使ってる人いますか?
0159デフォルトの名無しさんNGNG
>>158
使ってます。
0160デフォルトの名無しさんNGNG
>>158
どの OS でどのコンパイラのためにインスールとしてるのか書かないと、だれも返事できないよ。
0161デフォルトの名無しさんNGNG
ダ メ ダ
コ リ ャ
0162デフォルトの名無しさんNGNG
>>160
返事して欲しくないんです
0163デフォルトの名無しさんNGNG
IEってさ、XMLファイルを表示すると簡易ビューワーになって
すごい便利なんだけど、これと同等の機能を持ったemacs用
ソフトはあるかな?
0164デフォルトの名無しさんNGNG
>>163
× すごい便利
○ すごく便利
0165デフォルトの名無しさんNGNG
>>164
日本語の変化についていけない時代遅れは氏ね!
■ このスレッドは過去ログ倉庫に格納されています