トップページtech
990コメント371KB

【XML】xmlns, XSLT, RelaxNG, JAXP, etc.【総合】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/11/30(水) 01:08:08
XMLなんでもスレ。


関連情報は、>>2-10位に適当に。

※RSSなどのWeb限定の話題は、Web板でどうぞ(XHTMLはローカルでも使うから可)。


前スレ? 【必須?】XML技術【使ってる?】
http://pc8.2ch.net/test/read.cgi/tech/1090253584/
0263デフォルトの名無しさん2006/06/18(日) 12:44:05
decending
0264デフォルトの名無しさん2006/06/18(日) 12:47:16
>>263
>>262が訊きたいのはそーゆーことではないような気がするんだが。

>>262
ソートのやり方自体はわかるんだよね?
02652622006/06/18(日) 14:04:42
はい、ソートはfor-eachの後にノードを指定するとありますが、
実際並べたいカラムというのは関数呼び出しをしているカラムなのです。
グループ化して其々をカウントするには他に方法が思いつかなかったのです。

下のような感じで「ここ」がソートできればいいんですが・・

<xsl:for-each selectほげ[not(id = preceding-sibling::ほげ)]">
<xsl:sort select="ここ" order="ascending" />
<xsl:variable name="ここ">
<xsl:call-template name="関数">
<xsl:with-param name="引数">
<xsl:value-of select="値"/>
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$ここ"/>
</xsl:for-each>
0266デフォルトの名無しさん2006/06/18(日) 22:23:55
>>265
俺の場合、for-each のブロックを個別の xsl:template として外に出して
その xsl:template を呼び出す xsl:call-template の引数に中間結果を渡す。
イメージとしては同じ元データに対し二重にxsltをかけるようなもの。
ただ、今はどうか知らんが、以前試した時は msxml ぐらいでしかこの技は使えんかった。
0267デフォルトの名無しさん2006/06/19(月) 09:55:40
XML初心者です。

複合型で値の制限は出来ますか?
0268デフォルトの名無しさん2006/06/19(月) 21:21:54
XML初心者です。

わかりません!
0269デフォルトの名無しさん2006/06/19(月) 21:41:53
>>262-266
はいはいワロスワロスwww

<xsl:for-each select="a">
<xsl:sort select="b" order="decending" />
<xsl:if test="not(preceding-sibling::a[b = current()/b])">
<!-- あとはご自由にどうぞ -->
</xsl:if>
</xsl:for-each>
0270デフォルトの名無しさん2006/06/19(月) 22:07:55
スキーマとしてはどれがメジャーなんでしょうか
やっぱりXMLSchema?
0271デフォルトの名無しさん2006/06/19(月) 22:08:28
はいそのとおりです。
0272デフォルトの名無しさん2006/06/19(月) 23:02:10
レスありがとうです。
XMLSchemaが一番難しそうなんだよなぁ・・・
勉強してきます
0273デフォルトの名無しさん2006/06/19(月) 23:27:46
>>269
お前馬鹿だろ?
0274デフォルトの名無しさん2006/06/20(火) 00:04:40
>>273
馬鹿でーす★ 何か問題あるのー?
0275デフォルトの名無しさん2006/06/20(火) 17:26:19
馬鹿ってだけで周囲には有害だからね。自覚できないからこそ馬鹿なんだろうけど
0276デフォルトの名無しさん2006/06/20(火) 20:38:15
馬鹿を語る馬鹿にはなりたくないものだ
0277デフォルトの名無しさん2006/06/20(火) 20:46:11
馬鹿がいるw
0278デフォルトの名無しさん2006/06/20(火) 22:45:07
俺の事馬鹿って言うなー!
0279デフォルトの名無しさん2006/06/21(水) 00:16:45
頭がいいのは俺だけか?
0280デフォルトの名無しさん2006/06/28(水) 01:24:22
「200万円以上の車は●台あります」 と表示させたいのですが
carsの中にpriceが200であるcarがひとつでも入っていたら全てをカウントしてしまうみたいで困っています
どうしたらいいのでしょうか?
<?xml version="1.0" encoding="Shift_JIS" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:output method="html" encoding="Shift_JIS"/>
   <!--文章-->
<xsl:template match="/">
<html>
<xsl:apply-templates select="cars"/>
</html>
</xsl:template>

<!--  車 -->
   <xsl:template match="cars">
    200万円以上の車は
     <xsl:if test="(car/price) > 200">
      <xsl:value-of select="count(car)"/>
     </xsl:if>
    台あります。
</xsl:template>
0281デフォルトの名無しさん2006/06/28(水) 01:27:04
XMLファイルはこれです。
この場合cars以下にprice200以上がひとつでも含まれていたら
台数が3台とカウントされてしまいます。

<?xml version="1.0" encoding="Shift_JIS" ?>
<!-- 作成日:2005年10月6日 -->
<!DOCTYPE cars SYSTEM "Sample1_DTD.dtd">
<cars>
<car>
<name>乗用車</name>
<price>150</price>
</car>
<car>
<name>トラック</name>
<price>500</price>
</car>
<car>
<name>オープンカー</name>
<price>200</price>
</car>
</cars>
0282デフォルトの名無しさん2006/06/28(水) 01:56:36
>>280-281
確かめてないけど、これでどう?

<!--  車 -->
<xsl:template match="cars">
200万円以上の車は
<xsl:value-of select="count(car[price >= 200])"/>
台あります。
</xsl:template>
02832822006/06/28(水) 02:08:26
「gt;=」で投稿したんだけど勝手に「>=」になってる。
(↑また置き換わるといけないので全角に)

逆向きのときもあるだろうから念のため・・・
0284デフォルトの名無しさん2006/06/28(水) 04:59:35
&amp;gt;
02852822006/06/28(水) 09:42:16
>>284
ん?と思ったけど、なるほど。

一応もう一回書き直し。
<!--  車 -->
<xsl:template match="cars">
200万円以上の車は
<xsl:value-of select="count(car[price &gt;= 200])"/>
台あります。
</xsl:template>

#284は&amp;amp;gt;と書いて投稿して&amp;gt;となってるわけか
#ややこしいね
02862802006/06/28(水) 23:30:04
ありがとうございます。
無事正しく2台と表示させることが出来ました
0287デフォルトの名無しさん2006/06/29(木) 00:56:21
xsl:keyって使います?
行き当たりばったりの酷いソースの修正でもない限り使う場面はないような。。。
ピンポイントで引っ張らなくてもXSLならいくらでも取り出すチャンスがあると思うの。
0288デフォルトの名無しさん2006/06/29(木) 01:39:07
>287
xsl:keyは、XMIファイルのparsingの前処理として、idrefを解決するために使った。
0289デフォルトの名無しさん2006/07/09(日) 15:23:16
<xsl:output method="html" encoding="Shift_JIS"/>
<!--文章-->
<xsl:template match="/">
<html>
<xsl:apply-templates select="cars"/>
</html>
</xsl:template>
<!--  車リスト -->
<xsl:template match="car">
<body>
<xsl:apply-templates select="car"/>
</body>
</xsl:template>
<!-- 車 -->
<xsl:template match="cars">
<div>
<xsl:apply-templates select="name"/>
<xsl:apply-templates select="price"/>
</div>
</xsl:template>
<!-- 品名 -->
<xsl:template match="name">
<xsl:copy-of select="."/>
</xsl:template>
<!-- 価格 -->
<xsl:template match="price">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
上記のxslファイルで「2台目以降のcar要素」を、<xsl:if >を使って
抽出したいのですがどうすればいいのでしょうか?
0290デフォルトの名無しさん2006/07/09(日) 15:40:30
なんかソースがおかしい気がして俺の頭じゃ変換結果が見えないが
position関数を使えばいいよ。
0291デフォルトの名無しさん2006/07/09(日) 19:29:23
たぶんカーズという映画のカース(呪い)なんだろう
0292デフォルトの名無しさん2006/07/09(日) 19:56:36
<xsl:output method="html" encoding="Shift_JIS"/>
<!--文章-->
  <xsl:template match="/">
   <html>
    <xsl:apply-templates select="cars"/>
   </html>
  </xsl:template>
<!--  車リスト -->
  <xsl:template match="cars">
   <body>
    <xsl:apply-templates select="car"/>
   </body>
  </xsl:template>
<!-- 車 -->
  <xsl:template match="car">
   <div>
    <xsl:apply-templates select="name"/>
    <xsl:apply-templates select="price"/>
   </div>
  </xsl:template>
</xsl:stylesheet>

とりあえずこれで全てのcarを表示できますが
挿入するのは
<xsl:if car[position() &gt;= 2]>
であってるんでしょうか?
いろいろな場所で入れてみましたがうまく表示されません
0293デフォルトの名無しさん2006/07/09(日) 20:11:36
>>292
何食わぬ顔してさっきとソースが違うじゃねーかw

<xsl:apply-templates select="car[position() > 1]"/>
0294デフォルトの名無しさん2006/07/14(金) 11:23:56
VB.NET2003でXMLをインデント付きでファイルに出力したいのですがどのようなやり方がありますでしょうか?
XMLはDOMになってます。
0295デフォルトの名無しさん2006/07/14(金) 12:21:16
フォーマットを扱うインタフェースがフォーマットに下克上か。
0296デフォルトの名無しさん2006/07/15(土) 01:44:57
一刀両断
0297デフォルトの名無しさん2006/07/31(月) 23:28:00
hosyu
0298デフォルトの名無しさん2006/08/01(火) 07:12:14
一般的なインデントってのを
なんでもいいから誰か決めてほしい

目が慣れない
0299デフォルトの名無しさん2006/08/06(日) 14:25:06
ShaniXMLParserってどうよ?
http://journal.mycom.co.jp/news/2006/07/11/342.html
0300デフォルトの名無しさん2006/08/10(木) 21:31:10
どっこいしょっと300げと
0301デフォルトの名無しさん2006/08/29(火) 14:11:23
ちょっとまて、パーサはinvalidなXMLをパースしちゃいけない(MUST NOT)んじゃなかったっけ
0302デフォルトの名無しさん2006/09/02(土) 20:40:20
語弊がある
0303デフォルトの名無しさん2006/09/10(日) 01:31:53
inlineで処理する場合、属性を継承させたいのだが、
同じタグがネストすることに
問題はあるだろうか、パースはできるが。

<A attr1="true">XX<A attr2="true">YY</A>ZZ</A>
XXはattr1がtrue
YYはattr1とattr2がtrue
ZZはattr1がtrue
0304デフォルトの名無しさん2006/09/12(火) 01:07:21
XML覚えたらどんな仕事に就けるんですか?
0305デフォルトの名無しさん2006/09/12(火) 01:28:41
>>304
XMLを使う仕事に就ける可能性が有る
0306デフォルトの名無しさん2006/09/12(火) 01:34:23
>>303
属性の継承自体はそのデータを扱うアプリ次第としか言いようが。
あとは、ループ可能なネスト構造なんて許容しちゃうと、あとで処理するのがめんどうだと思う…

>>304
XMLダケじゃなんにも
0307デフォルトの名無しさん2006/09/12(火) 01:51:05
>>304
RDBMSの世界で例えるとXMLはテーブルにすぎない。
はっきりいってXML*だけ*知ってても糞の役にも立たない。
ちなみにXSLはRDBMSの世界でのSQLに相当する。
0308デフォルトの名無しさん2006/09/12(火) 01:52:32
>>307
> ちなみにXSLはRDBMSの世界でのSQLに相当する。
ま、まじで?!XPointerとかだとおもってたぉ (;^ω^)
03093072006/09/12(火) 02:02:27
>>308
感覚でテキトーに吹いただけだから
厳密に捉えちゃいや〜んw
0310デフォルトの名無しさん2006/09/12(火) 10:52:58
XQueryとか使ってる? Oracleは結構前から、最近DB2、あとさっぱり知らんが
T1とかEsterraだっけ? 使えるようだけど。
それで楽になったこととか、支障ない範囲で具体的に教えてくれると嬉しい。
0311デフォルトの名無しさん2006/09/12(火) 15:11:10
>>307
outputがXMLなXSLTって言ってほしかったなあ。

SELECT文もテーブルを生成するように、
XSLTもXMLを生成するという意味では似ている。

>>310
多分ほとんどの業務系でOracleのXMLとかの機能使われて無い(´・ω・`)
0312デフォルトの名無しさん2006/09/12(火) 17:41:49
SQLはXPathだ!
0313デフォルトの名無しさん2006/09/12(火) 19:10:40
SQLに相当するのはXQueryかXPathだと思うお。


XQuery使ったこと無いけど…
0314デフォルトの名無しさん2006/09/12(火) 21:38:31
JavaでXML操作する方法勉強したいんですが良書はありますか?
オライリーのJava&XML第2版2002年発行なんですがこの内容はもう古いんでしょうか?
0315デフォルトの名無しさん2006/09/13(水) 11:40:10
>>311,313
やっぱそうなんかねえ。ありがとう。

>>314
あんまり最近の本読んでないけど(いかんなあ)、Java と書いて無くても
XML と書いてある本って大体 Java 使ってる場合が多い気がする。
特に DOM 操作あたりとか。たまーに Javascript とかも見た気がするけど。

読んだことありませんし何となく叩かれそうな売れ線の本に見えるけど
ttp://www.pro.or.jp/~fuji/computerbooks/tools/yasashii-xml.mana.html
見ると Java 入門 + XML みたいなこと書かれてますね。
0316デフォルトの名無しさん2006/09/13(水) 20:47:23
>>315
ありがとうございます。XMLの本も見てみます。

その本は第1版持ってるんですがAPIが古くて本のとおりような記憶が・・・
0317デフォルトの名無しさん2006/09/30(土) 23:45:31
XSLTをHTML整形以外に使ってる実例ってある?
0318デフォルトの名無しさん2006/09/30(土) 23:47:59
なんかSNMPの方でXML-SNMPとかいうのがあるらしい
0319デフォルトの名無しさん2006/10/01(日) 00:02:14
ネットワーク監視せんからそのプロトコルが何をするものか知らないけど
いちおう使われてるんだなと思うと嬉しいね。
0320デフォルトの名無しさん2006/10/01(日) 00:14:36
>>317
GRDDLとか
0321デフォルトの名無しさん2006/10/01(日) 01:45:10
>>317
たぶん、規格乱立で収拾のつかなくなったRSS(+ATOM)のバージョンの違いを
吸収するために各種RSSリーダーでXSLTが利用されているハズ。
0322デフォルトの名無しさん2006/10/01(日) 13:45:36
そうでもない
0323デフォルトの名無しさん2006/10/01(日) 17:27:12
>>322
じゃぁどうやってんの?
XSLTでRSSのバージョンの違いを吸収させずに他の方法使うなんてアホとしか思えんのだが。
俺が知らないだけでもっといい方法でもあんのか?
あ、サーバサイドのプログラムだと重いXSLTを使うわけにはいかんかったりするか。
それでもクライアントサイドでやる場合は確実にXSLTだろ〜
0324デフォルトの名無しさん2006/10/01(日) 17:57:43
話の流れぶった切るけど
mozilla系列のxul 面白いよね
豪快にrdf使ってプチrdbとかも最高
0325デフォルトの名無しさん2006/10/02(月) 16:42:21
XSLTぐらいで吸収できるのかな?
0326デフォルトの名無しさん2006/10/02(月) 19:30:03
>>325
お前では無理かもしれんが、フツーにできる。
というか、ここで使わないでどこでXSLTを使うんだよってくらいキまる。
0327デフォルトの名無しさん2006/10/02(月) 21:19:23
詰まらん煽りいれる奴の肩もつ気はないが
XSLTの表現力は、その印象ほど貧弱じゃないよ。
0328デフォルトの名無しさん2006/10/03(火) 02:47:17
わざわざXSLTに分離する意義があるかどうかは別だけどね。
0329デフォルトの名無しさん2006/10/03(火) 03:04:42
>>328
日本語でおk
03303252006/10/03(火) 10:14:43
>>327
いや、俺がXSLT使いまくった経験で言わせてもらってるよ。
ほかのフォーマットとやらには詳しくないんだ。すまない。

>>328
うん。そう思う。
XSLTは存在としては面白いけど、利点はすぐに書き換えられることぐらい…。
使う言語としてはいろいろ面倒すぎるだろう…。

あんまり存在意義がわからない。
0331デフォルトの名無しさん2006/10/03(火) 19:35:51
>>330
>利点はすぐに書き換えられることぐらい…。

ぐらい...って、おまい、それ、チョー重要だぞ。
すぐに書き換えられるってことはそもそも最初バージョンを書き起こすのも楽ってことだし、
デバッグもメンテナンスも楽ってことだぞ。
0332デフォルトの名無しさん2006/10/03(火) 19:37:38
大幅賛成だけど、

つ 諸刃の刃
ソースコードだって直ぐ書き直せるし、interfaceだってプログラマの意思で書き換えることができる
便利だけど怖い
0333デフォルトの名無しさん2006/10/03(火) 23:15:46
流れぶった切ってすみません。
http://www.xmlmaster.org/atelier/mc006.html
にあるITunesのXMLをHTMLに変換するXSLTに手を加えて
アーティスト名でソートしようと思い、
<xsl:for-each select="plist/dict/dict/dict">
の下に
<xsl:sort select="key[text()='Artist']" data-type="text" order="descending" lang="ja" />
と加えてみたのですが、ソートされません。
ただ漠然とxsl:sort select=の指定(ロケーションパス?)が誤っている気がするのですが、
具体的にどうすれば良いのかがわかりません。
どなたかご教示いただけませんか。
0334デフォルトの名無しさん2006/10/04(水) 15:51:03
string[preceding-sibling::key = 'Artist']
03353332006/10/04(水) 19:48:54
>334
ありがとうございます。目的は達成できました。
コンテキストノードの前の兄弟ノードでkeyがArtistの
stringを指定している?
答えを頂いてもよく理解できてません。もっと勉強します。
0336デフォルトの名無しさん2006/10/04(水) 20:30:44
とうとうProperty Listが「ITunesのXML」なんて呼ばれる時代がきたのか。
0337デフォルトの名無しさん2006/10/07(土) 21:41:45
ライブラリのマニュアルをRDFとDublinCoreで記述しようと思うんだけど、
どんな構造にしたらいいのかよくわからないからどうか教えてくれないか?

言語はCとC++でヘッダファイルごとに分けようと思っている。
0338デフォルトの名無しさん2006/10/09(月) 11:19:14
質問です。
XML自体には、フラグメント識別子の扱いに関する定義はないと考えて良いのでしょうか?
0339デフォルトの名無しさん2006/10/09(月) 22:16:57
>>338

DTDで定義するが、それだと不便なので、
xml:idが勧告されている。
0340デフォルトの名無しさん2006/10/10(火) 00:38:08
>>339
どうもです。
0341デフォルトの名無しさん2006/10/10(火) 22:07:45
ODFの仕様書邦訳ってない?
0342デフォルトの名無しさん2006/10/11(水) 09:49:51
Javaとかで、XMLの構造を単純なコレクションに吐き出すAPIって無いもんでしょうか?
InputStreamやStringそのままとかDocumentFragmentとかでなしに。

何がしたいかというと、外枠の仕様だけ決めておいて、
中にメタデータをボキャブラリを問わず格納できるようにしたいのですが、
外枠だけを管理するライブラリとしては、中のメタデータには触らずに、
それを処理できるほかのライブラリに処理を渡すといったことができないかと。
0343デフォルトの名無しさん2006/10/11(水) 12:30:43
Digesterは?
0344デフォルトの名無しさん2006/10/11(水) 21:42:50
よさそげですね、使ってみます。
0345デフォルトの名無しさん2006/10/11(水) 23:01:08
Digesterの後継たるBetwixtはいつリリース版になるのかねぇ
0346デフォルトの名無しさん2006/10/17(火) 03:57:45
Digesterのpluginパッケージを使った事ある方っていますか?
0347デフォルトの名無しさん2006/10/19(木) 20:51:32
>>14
LISPってS式だと思ってるの?
0348デフォルトの名無しさん2006/10/30(月) 17:47:27
XSL-FOをつかって
XMLからPDFを作ったりできるんだよね?

Office2007からはXMLを使うみたいだから
XSL-FOと組み合わればPDFつくれるんちゃう?
0349デフォルトの名無しさん2006/10/31(火) 08:35:52
OfficeがXML使うとか一体何度聞いたことか
0350デフォルトの名無しさん2006/10/31(火) 12:31:32
Office2003でもXML形式はサポートしてるぞ。
Office2007ではそれを(確かZIPで)圧縮した形式がデフォルトになるだけ。
0351デフォルトの名無しさん2006/11/01(水) 00:57:56
XMLのスキーマ?は違うものになるんじゃないの?
0352デフォルトの名無しさん2006/11/01(水) 01:56:21
>>351
そうかも。詳しくは知らないけど、確かそのZIPにはドキュメントに埋め込んだ
画像やらがフツーの画像ファイルの形式で保存されててその画像ファイルだけ
そこらの画像編集ソフトで開いて編集したりとかってこともできるようになるらしいね。
0353デフォルトの名無しさん2006/11/01(水) 23:17:52
そういやVistaはファイル形式の一つにパッケージを採用するんだっけ?
0354デフォルトの名無しさん2006/11/07(火) 16:43:11
浅海智晴事務所って消えたんでしょうか。
Relaxer、もう終わりなんかなあ。好きなのに。
0355デフォルトの名無しさん2006/11/08(水) 05:41:50
>>354
Relaxerはどうか知らんが、ttp://www.xmlsmartdoc.org/は終わってるようだ。
0356デフォルトの名無しさん2006/11/08(水) 10:53:35
XMLラベリング手法の「Dewey Order」ってどう読むの?
カタカナで全然書いてなくて分からん
0357デフォルトの名無しさん2006/11/11(土) 00:29:44
dewey decimal classification〜♪
0358デフォルトの名無しさん2006/11/11(土) 01:04:23
>>354
バグ修正だけど、Relaxer更新されたみたいだな。
0359デフォルトの名無しさん2006/11/12(日) 04:17:39
XMLを勉強しようと思った。

サンプルファイルを開いて意気込んだ。

2,3回開いて、IE、explorer.exeが落ちた。


     ,.――――-、
     ヽ / ̄ ̄ ̄`ヽ、        勇者トンファーパーマン惨状
      | |  (・)。(・)|
      | |@_,.--、_,>         俺が着たからにはもう色々と駄目だ
      ヽヽ___ノ          
        /:::::::::::::::::l   /77
       /::::::::::i:i:::::::i,../ / | 
       l:::/::::::::i:i:::、:::/ / |  
       l;;ノ:::::::::::::::l l;.,.,.!  |  
        /::::::::::::::::l/ /  冂 
       /:::::::;へ:::::::l~   |ヌ|
      /:::::/´  ヽ:::l   .|ヌ|  
      .〔:::::l     l:::l   凵
      ヽ;;;>     \;;>
0360デフォルトの名無しさん2006/11/12(日) 20:36:16
XMLの勉強を始めたばかりの初心者なのです.
私が作成したXMLファイルのエラーをチェックするために
コマンドプロンプトから
java dom.Counter (XMLファイル)
という風にやっているのですが、次のようなエラーが出てしまいます。
[Fatal Error] :-1:-1: Premature end of file.
開始タグと閉じタグが一致してないのが原因なのかとソースを何回も
チェックしましたが、そのような記述ミスはありません。
他に原因として考えられること、またはこのエラーの指す意味が
お分かりでしたら教えていただけませんか?

よろしくお願いします。

0361デフォルトの名無しさん2006/11/13(月) 12:20:41
エンコーディングに問題がないか、
XMLの記述に本当に問題がないかを調べる。

パーサによっては utf-8 でも BOM ついてると弾くとか、いろいろだよ。
0362デフォルトの名無しさん2006/11/13(月) 12:34:25
BOMはまじで引っかかるね。
あると怒るやつ、ないと怒るやつ… 狂ってるとしか思えない。
■ このスレッドは過去ログ倉庫に格納されています