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

XMLプログラミング

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
単におれが質問したいから立てたぞ!
00461000NGNG
結論:
XML非常に面倒
0047名無しさん@EmacsNGNG
>>46
それ採用.

まぁstandardって意味ではXMLでいいのかもしれん.

>>44
いや, 乗り越えてくれるならそれが一番良いんだよ….
0048デフォルトの名無しさんNGNG
>>1
XMLだけでプログラミングできるの?
0049デフォルトの名無しさんNGNG
>>45
だったらSGMLとDSSSL(Schemeベースのスタイル記述)使えよ
#以上、退行現象
0050nNGNG
>>48
XMLに関するプログラミングをXMLプログラミングって言っても不自然じゃないと思う.
日本語を満足に理解できない方ですか?
0051デフォルトの名無しさんNGNG
XMLなんてデータフォーマットが記述できるだけじゃん
こんなの便利か?
0052デフォルトの名無しさんNGNG
だから面倒だって言ってるじゃん。
データの互換性以外はメリットも無いし。
0053デフォルトの名無しさんNGNG
データの互換性も疑わしいが。
0054デフォルトの名無しさんNGNG
つまり、遅れてきた開発者は、
開発経緯や判断・選択の内容を知らないから、
ちっとやそっとの努力では理解できなくなっちまう
って事ですね。

技術キャッチアップをサボっていると、どうゆう結末になるか、
という良い標本ですな
0055デフォルトの名無しさんNGNG
技術史勉強汁
0056///NGNG
バイナリでデータをファイルに押し込むのもまあその場限りの
プログラムならいかもしれんが、まともなアプリならそれなりに
可搬性のある表現で落す方法を用意する。(でないと、将来的にも不便)
XMLは、広く認められた表現だし、APIも整ってるので、
これを積極的に使っていかないのは損だぞ。
まあグラフ構造向きではないわな。最初から見抜けよそれくらい…。
0057/../../NGNG
そもそも、グラフ構造記述に向いた文字列記述ってあるのか?
つか、構造体でもポインタで記述するしかねぇんだから、
スマート・ポインタの一亜種として、部分構造ラベル使うって事でおっけじゃん?
0058デフォルトの名無しさんNGNG
無知が何かほざいてますな。
0059デフォルトの名無しさんNGNG
煽り屋さん登場!煽り屋さんは、w3c.orgのTRくらいさっと目を通して煽っているのかな(ワラ
0060デフォルトの名無しさんNGNG
>>57
XMLには参照の代用となる記述法が用意されています。
0061デフォルトの名無しさんNGNG
XPathの事言ってる?
0062デフォルトの名無しさんNGNG
>>61
あれのどこが?
0063デフォルトの名無しさんNGNG
グラフ記述は行列のし
0064デフォルトの名無しさんNGNG
XMLは ま じ で たいしたこと無い。丸一日あれば調査は充分。
他者とのインタフェイスには有用。APIがあるから便利というのはろくにコードが書けない馬鹿のたわごと。
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が使えるレンタルサーバで使いたいんだけど。
■ このスレッドは過去ログ倉庫に格納されています