XML
PHP で XML を利用するスレ php Javaページより「XML関連情報」 http://www.cityfujisawa.ne.jp/ ~louis/apps/phpfi/xml/ >>191 それを除去するのに良い手段ってありますか? >>192 一番手取り早くてスマートなのは xslt じゃない? ちょいとオーバースペック気味な気がするが。 あとは API にそういうものがあると思う。 Perl だと XML::Filter::DetectWS とか。他の言語にもあるだろ。 何それ(´Д`)そんな規格あったっけか。 検索したけど、ML で質問に答えてる人しか引っ掛からんかった。 Xpathの仕様書ってなんで名前空間の例が何もないんだ? ./foo/bar[@hoge:attribute] ってやってもなぜか駄目なんだけど、属性「hoge:attribute」を持っている ./foo/bar要素を取得するにはどうすれば良いんだ・・・。 使ってる XPath エンジンが対応してないだけでは。 namespace fixup って何ぞや? 調べてみたけどイメーヂが捕めない……。 xhtml文書をxsltprocで変換したいと思ってるんだけど、 namespaceの有り/無しによってtemplateがapplyされない。助けて。 ----- test.xsl ----- <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform "> <xsl:template match="html"/> </xsl:stylesheet> ----------------- [実行例] $ xsltproc.exe -v test.xsl test.xml 2>&1 | grep xsltProcessOneNode ----- test.xml ----- <?xml version="1.0"?> <html xmlns="http://www.w3.org/1999/xhtml "/> ----------------- xsltProcessOneNode: no template found for / xsltProcessOneNode: no template found for html このようにマッチしない。でも、namespaceを消したり名前を付けたりするとマッチする。 ----- test.xml ----- <?xml version="1.0"?> <html xmlns:xhtml="http://www.w3.org/1999/xhtml "/> ----------------- xsltProcessOneNode: no template found for / xsltProcessOneNode: applying template 'html' for html #現象が再現できる最小のソースなので、それに関しては突っ込まないで。 っていうか、初心者向け解説ページとかってないのか? だれかおれしおしえろーー! >>204 俺もどうすればいいか知りたい。 http://www18.tok2.com/home/koumori27/xml/index.html のPHPDOMなんかどうだろう? 俺の場合は同サイトのPDSQLを使おうかと思うんだけど…。 PHP5のsimpleXMLなら取り込んだだけで全てがオブジェクトさ あとは君の好きなようにやればいい php5にしろ、phpdomにしろ、レン鯖ではサポートされないことが多いじゃん。 で、SAXを使って無理やりDOMっぽいことしようとしたけど、 xml_set_element_handler($xml_parser, $this->_startElement, $this-> _endElement); とするとエラーになってしまう。 どうやらハンドラの呼び出し方が気に入らないらしいんだけど、 これはどうにかできないのかな? こーじゃねーの? xml_set_element_handler($xml_parser, array(&$this, '_startElement'), array(&$this, '_endElement')); てか、ドキュメントに書いてある。 > Note: Instead of a function name, an array containing an object reference and a method name can also be supplied. お前はどこに目ん玉が付いとるんかと小一時間問い詰めたい。 なるほど。さんくす。 そこ読んだけど意味がよくわからなかったんだよ・・・ perlでxmlを読み込み、値を取得しようとしています。 --------------------------------------- #!/usr/local/bin/perl use XML::Simple; my $xs = new XML::Simple(); my $ref = $xs->XMLin('<opt><x>text1</x><member num="2">text2</member><member num="3">text3</member></opt>', ForceContent => 1); my $xml = $xs->XMLout($ref); print $xml."\n"; print $ref->{x}->{content}." ---1\n"; print $ref->{member}[0]->{content}." ---2\n"; print $ref->{member}[1]->{content}." ---3\n"; #●2 --------------------------------------- ↓ --------------------------------------- <opt> <member num="2">text2</member> <member num="3">text3</member> <x>text1</x> </opt> text1 ---1 text2 ---2 text3 ---3 --------------------------------------- となります。 ●2の所で、その上の行のように配列でアクセスするのではなくprint $ref->{member}->{num}->{3}->{content}." ---3\n";こんな感じで、「numが3のもの」として取得したいのですが空白になってしまって取得できませんでした。 「numが3のもの」を取得するにはどのようにすれば良いのでしょうか? http://cpan.uwinnipeg.ca/htdocs/XML-Simple/XML/Simple.html を読んでもわかりませんでした。 my ($n) = grep { $_->{num} == 3 } @{$ref->{member}}; てか、Perl の勉強しれ。 みようみまねでやっているのですが、 xsltで属性を指定する方法は ttp://634.ayumu-baby.com/xml/xslt_attribute.html に書いてあったのですが、 閉じた具のない要素についてはどのようにすればいいのでしょうか。 <img>など ttp://www.atmarkit.co.jp/fxml/tecs/012xslt/12.html でうまくいきました。すみません。 質問です (xmlの内容)Booksという蔵書管理ソフトから書き出されたものです <?xml version="1.0" encoding="UTF-8"?> <definition type="Book Collection"> <definition type="Book"> <property name="Authors" type="string">作者名</property> <property name="Format" type="string">フォーマット</property> <property name="Genre" type="string">ジャンル</property> </definition> </definition> これをxsltにおいて作者名(Authors)のみを取り出したい場合は xsl:value-of select= においてどの様な記述をすればいいのでしょうか? 昨日、xmlに触れ始めたばかりなのですが、 とりあえずどの様な形になるのか試してみたいものでお聞きしました。 >>215 取りあえずこんな感じ? 作者名が複数あるのなら、for-eachなり別のtemplateに分けてapply-templatesで呼び出す なりしなければだめだけど。 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform "> <xsl:template match="/"> <xsl:value-of select="definition/definition/property[@name='Authors']/text()" /> </xsl:template> </xsl:stylesheet> >>216 ありがとうございます、できました。 パスと属性の指定がよくわからず苦労しておりました 精進せねば・・ この板にhttp:// 〜の規制がかかったらxmlns書けなくなるなあ photobloxをココログに設置したいのですが、やり方を教えて下さい。 ttp://naoya.dyndns.org/feedback/ みたいな更新ツール検索エンジンみたいな スクリプトってないのかねぇ。 あまりにも重いので、自前の作って、 クロール+インデックス+RSS化して、自分で楽しみたいが… お聞きしたいのですが xmlで下記のような場合 <car> <color>red</color> <color>blue</color> <color>white</color> <color>black</color> </car> xsltで全てを取り出すのはどうすればよいのでしょう? xsl:apply-templates selectを使ったり、 必要な回数だけxsl:value-of selectを書いても 最初の値しか取得出来ませんでした。 よろしければお願いします。 誘導? XSL/XSLT http://pc5.2ch.net/test/read.cgi/php/999654569/ 失敗したなりのxslを書いてくれないと、やりたい事がわからないよ。 >>223 それぞれの<color>の中身を取り出したいという意味だったら、 <xsl:for-each select="car/color"> ... </xsl:for-each> でどうかな すみません。 書き方が悪くて混乱させてしまいました。 私がやったら、どうやってもredしか取り出せなくて悩んでいました。 >>225 さんのやり方で、とりあえず表示だけ出来るようにしたところ <xsl:for-each select="car/color"> <xsl:value-of select="." /> </xsl:for-each> で全て取り出すことが出来ました 完璧です。本当ありがとうございます。 こういう事がサラッと出るようになるまで、もっと勉強してきます。 >>226 <xsl:template match="/"> <xsl:apply-templates select="car/color"/> </xsl:template> <xsl:template match="car/color"> <xsl:value-of select="text()"/> </xsl:template> の方が効率的だろうな。 初心者にありがちだけど、for-eachはあんまり使うもんじゃない。 >>227 なんで?特定のコンテキストでも使っちゃだめなの? xsl:for-each って名前が悪い。実質 xsl:template/child::xsl:template なのに。 こ、、、このスレ1番最初から3年以上たってんじゃん。。。 1 :名無しさん@お腹いっぱい。 :2001/03/18(日) 02:50 ID:laaa63cU PHP で XML を利用するスレ php Javaページより「XML関連情報」 http://www.cityfujisawa.ne.jp/ ~louis/apps/phpfi/xml/ 過疎板過疎スレなら良くあるこった。 XMLに興味をもつ夏厨も居るんだな。 >>228 for-eachが有効な状況もあるので、常にだめというわけではないけど、 コピペプログラムを助長するのあまりよろしくない。 templateはapply-templatesやcall-templateで他の場所からも使いまわせるし、 importを使ったモジュール化の恩恵が受けられるので、積極的に使うのが良い。 他のテンプレートとの競合に注意しないといけないという欠点もあるけどね。 ツリー形式のデータを入出力する内部フォーマットとしてはよく使うが WebProgramming では使わねえからなあ > XML すいません、ご教授ください。 XMLは勉強し始めたばかりでとんちんかんなことをいうかもしれませんが、 よろしくお願いいたします。 ファイルメーカーというデータベースソフトからデータをXMLで取得し、 そこから必要なデータをXSLTで書き出したいと考えています。まず、 ファイルメーカーから取得するXMLのフォーマットは以下のようなものです。 <?xml version="1.0" encoding="UTF-8"?> <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult "> <ERRORCODE>0</ERRORCODE> <PRODUCT BUILD="2004/2/10" NAME="FileMaker Pro Web Companion" VERSION="6.0Jv3"/> <DATABASE DATEFORMAT="yyyy/M/d" LAYOUT="web" NAME="Service.fp5" RECORDS="9" TIMEFORMAT="k:mm:ss"/> <METADATA> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Name" TYPE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Address" TYPE="TEXT"/> </METADATA> <RESULTSET FOUND="1"> <ROW MODID="10" RECORDID="1"> <COL> <DATA>山田 太郎</DATA> </COL> <COL> <DATA>東京都港区南青山</DATA> </COL> </ROW> </RESULTSET> </FMPXMLRESULT> このXMLからXSLTを使ってエラーコードを書き出したいと考えています。 以下次のレスに続く。 以下前のレスからの続きです。 <?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns="http://www.filemaker.com/fmpxmlresult " xmlns:xsl="http://www.w3.org/1999/XSL/Transform "> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="ERRORCODE"> Error:<xsl:value-of select="."/> </xsl:template> </xsl:stylesheet> とりあえずこんな感じかなと思って動作させてみてもうまくいきません。 うまく照合できていないのか、Errorの文字列すら書き出されません。 いろいろ試してみて、XML内の、 <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult "> のタグに問題があることがわかりました。このxmlnsの属性がついて いるとデータの照合ができません。試しにこのxmlnsの属性を外して 動作させると、思うように動作させることができました。 元データのXMLは自動的にデータベースから吐き出されるもので、 こちらで任意にフォーマットを変えることはできません。 なのでここにxmlnsの属性があることを前提にXSLTを組まねばいけない のですが、どのようにすればこのままでも照合ができるようになるか わかりません。 お手数ですが、お分かりの方がいらっしゃいましたらご教授いただけると 助かります。よろしくお願いいたします。 >>235 >>236 すいません。自己解決しました。 お騒がせしました。 何ヶ月か前の日経新聞で、 これから注目の技術の何位か(だいぶん後だけど)に、XMLが入っていた。 えー?そうかー?とあんまり知らないながら思って、 実際本を読んでみたら、 やっぱり具体的にどう便利なのかがイメージできなかった。 でもこのスレみたらスッキリしました。 使うところではそこそこ使いますよ、程度のもんなんだね。 注目の技術で挙げていた奴はXMLって言いたかっただけかよ。 XMLは、使える使えないというか、それしかないというもんで、 それしかないといってそれだけあるというような何ともいえない存在 まぁ、現実的な使用のされ方としては、 CSVにしてたのを、XMLにした、ってだけだしなぁ。 CSVを可変長/ツリー対応にしたらXMLになった、みたいな感じか 天気予報は既存の配信ビジネスを守るためにRSS配信できない http://neta.ywcafe.net/000339.html 国民の税金で気象データの収集・解析までしておきながら、 気象庁の官僚の天下り先である 財団法人 気象業務支援センター 財団法人 日本気象協会 の利権保護の為、未だRSS配信が拒まれているのだ。 将来的に行われるであろう地震予知の情報も、有料で国民に販売するつもりだろうか? 根本はそうだけど、 普通は応用技術やライブラリ環境、APIの定義なんかもふくめた 複合技術をさします。 php4.3 の domxml で、 DomAttribute から名前空間接頭辞を得る方法って有りますか? DomAttribute から名前空間接頭辞を得る方法を教えてください。 DomNodeの場合はDomNode->prefixで得られます。 DomAttribute->prefixは有りません。 XMLじゃなくてCSVのデータバインドで質問です。スレなさそうなので・・ すみません。 CSVデータは a b あああ javascript:abc('URL')"> みたいなデータです。 b列でbuttonを使って、 onclick=b列 みたいに表示したいのですが、分かる方いらっしゃいませんでしょうか? よろしくお願いします。 このスレはちょっと‥ 質問は別にcsvでもxmlでもよさそうな感じだと思うので、 分かる人いらっしゃいましたらお願いします。 なんで XML でもよさそうなんだろうか…… 全く理解できないんだが。 ではこのスレの趣旨に沿って回答しよう。 まずCSVデータをXML整形式に変換するのだ。 しかるのちにその XML を XSLT で button に変換する。 これで完璧。 XPath解説突っ込み日記 (agenda) http://members.jcom.home.ne.jp/jintrick/Personal/d20033f.html#d10_4 @* を略さない形が attribute::* であると知らないことで起きうる弊害って何があるかな? >>255 では、@* をどう理解しているの? このことを知らないで、 axis, node tests, predicate, location steps, location path, XPath expressions などをちゃんと説明できる? 説明できないなら、理解できてないということで、 理解できてない人が使いこなせるわけがない。 弊害があるかどうかどころの問題じゃないと思うんですが。 ク ク || プ / ク ク | | プ / ス ク ス _ | | │ // ス ク ス | | | // / ス ─ | | ッ // /ス _ | | ッ.// / _____ // / ― // . / l⌒l l⌒l \ )) ____ . / / ̄| ,=| |=、| ̄ヾ / ____ヽ / ̄/ ̄. ー'●ー'  ̄l ̄ | | /, −、, -、l )) | ̄l ̄ ̄ __ |.  ̄l ̄.| _| -| ,=|=、 || |. ̄| ̄ ̄ `Y⌒l__ ̄ノ ̄ (6. ー っ-´、} ヽ ヽ 人_( ヾ ヽ `Y⌒l_ノ >〓〓〓〓〓〓-イ /ヽ 人_( ヽ / / Θ ヽ| /  ̄ ̄ ̄ ヽ-イ >>256 理解できない ⇒ 使いこなせない は言い過ぎだと思うよ。 >>260 > 理解できない ⇒ 使いこなせない ではなくて、 理解できてない ⇒ 使いこなせない なのですが、言いすぎでしょうか? 理解の度合いに比例してうまく使いこなせるというのは、 自明だと思うのですけどね。 まぁ俺は sage 間違ってるのを指摘しようとしただけだが >>262 ああ。2ちゃんねる初心者だったので間違えました。 申し訳ない。 (でも、あれはとても指摘とは思えんがね) XMLも3年で空気のような存在になったな。 いまさらながら技術革新はやすぎ >>261 俺もそう思う >>264 けど2000年ぐらいの技術革新に比べたら 最近の革新ってそんなになくね? 驚くような新技術がここずっと出てない >>265 どうでもいいけど、例えばどんな技術なら驚くの? お前の想像力が高まっただけとも考えられない? >>265 確かに言われてみればそういう気もする >>266 お前はどんな技術が革新だと思ったんだ? >>267 思いつかないから、そう思ったんだよ。 何出されても、ふーんまぁすごいね、て感じるような気がする。 >>266 漏れは>>265 の言ってる2000年付近ではないが 初めてFlashみたときは衝撃だったな あの頃ってまだ動的ページってBBSぐらいだったし (139ポートで騒ぐ前ぐらいね) 静的ページばっかりしかないときに BBSやチャットが出てきたときもそこそこ驚きだったけど WEB以外ではやっぱCUIからGUIに環境を変えたときかな Canbeとかでテレビやゲーム見れたときとか XMLでいうとやっぱりAmazonのAWS(技術というか使い方)だけど あの頃のように衝撃的なものはないかもしれない javascriptで配列に、idを格納しました。 xsltで、配列内のidの物だけ表示するって出来ますか? 配列 ('001','004','005') XML <name id="001">田中</name> <name id="002">佐藤</name> <name id="003">山田</name> <name id="004">関根</name> <name id="005">山口</name> >>270 JavaScriptとXSLTのつながりを言ってくれなきゃわからん。 ttp://orz.cc/blog/2004/11/25-2 > <http://www.w3.org/1999/xhtml:h1> ; > <http://orz.cc/:h1> ;管理人</http://orz.cc/:h1> ;について > </http://www.w3.org/1999/xhtml:h1> ; > > このように要素ごとにいちいち長い URI を書いてたら大変だから、 > 文書内で最初に出てくる要素 (ルート要素) で xmlns 属性を使って、 > 名前空間とそれと対応した略語をあらかじめ纏めて宣言しておく。 解りやすいとは思うんだが、あたかも <http://www.w3.org/1999/xhtml:h1> ; としても Well-formed であるかのような言い回しは良くないな。 質問です。 XHTMLファイルをXSL変換したいのですが、 名前空間が違うせいかテンプレートを読んでくれません。 xhtmlファイル <html xmlns="http://www.w3.org/1999/xhtml " xml:lang="ja" lang="ja"> xslファイルでは <xsl:template match="html"> という感じで、特に名前空間を意識して作ってはいないです。 ちなみに、xhtmlファイルのxmlns="http://www.w3.org/1999/xhtml "を消せば期待通りに動くのですが、 これでは何の解決にもならないので…。 どなたか教えて下さい。 ルート要素 xsl:stylesheet に、 xmlns="http://www.w3.org/1999/xhtml " という属性を付ける >>273 名前空間つきの XML を XSLT 内では接頭辞抜きで扱うことは出来ないよ。 <xsl:stylesheet xmlns:x="http://www.w3.org/1999/xhtml "> とでもして、 <xsl:template match="x:html"> PHP使えるレン鯖(さくらスタンダードを予定)を借りるつもりなんですが、 鯖側でPHPでxmlをxsltでhtmlに変換するには具体的にはどんなものをどこに置けば良いのだろうか。 質問です。 http://tools.live365.com/cgi-bin/api_station_status.cgi?member_name=bcname&password=bcpassword&action=listeners 上記記CGIにアクセスすると下記のXML形式のデータが出力されます。 <?xml version="1.0" encoding="ISO-8859-1" ?> - <LIVE365_API_STATION_STATUS_CGI> <Code>0</Code> <Reason>Success</Reason> <Stream_status>OK</Stream_status> <Current_listeners_reg>35</Current_listeners_reg> <Current_listeners_pm>2</Current_listeners_pm> <Current_listeners>37</Current_listeners> <Rating>8.73</Rating> </LIVE365_API_STATION_STATUS_CGI> そして<Current_listeners>37</Current_listeners> の値だけHTMLもしくはJavascriptに出力したいのですがどのようにすればいいのでしょうか? 各XSLTツールの趣旨を表にしたようなページ無いかな? 乱立しててよくわからん。 質問です。 http://www.flickr.com/ 有名なサイトですがXMLで書かれてますよね? このシステム作れる人いますか? >>282 やはり難しくて作れないものなんでしょうか? >>283 だからXMLをHTMLとかPDFにしてWebから見るってシステムは既にあるって言ってるだろ。 みようみまねでXMLからデータ抽出をしようとしてます。 <page1>1</page1> の値を抜き出すのは、 <xsl:value-of select="page1" /> でできることはわかりました。では、 <Args> <Arg name="page2" value="2"></Arg> </Args> のようにXMLに記述してある「value」の値「2」を 抜き出すことなんて、できるのだろうか? 教えておねがいします。 <xsl:value-of select="/Args/Arg/@value"/> とかじゃ駄目かな XMLもXSLTも超初心者です。以下のようなXMLデータをXSLTでHTMLに出力 するにはどう記述すればいいのでしょう;; <Args> <Arg value="値1" name="値名1" /> <Arg value="値2" name="値名2" /> <Arg value="値3" name="値名3" /> <Arg value="値4" name="値名4" /> <Arg value="値5" name="値名5" /> </Args> 任意のname値のvalue値を取得したいのですが。(きっと初歩ですよね。。) xsl:value-ofを使うのでしょうか。 よろしくお願いします。 xsl:if とか。xsl:choose 使っても良いし。 あと、xsl:value-of とかだべ。 少しは本買って嫁や。>>290 ttp://neta.ywcafe.net/000339.html 天気予報をXMLで提供すると気象庁が発表してから半年が経った 実は2004年の11月には既に気象庁がこんなプレスリリースを出している。 --- 府県天気予報・府県週間天気予報を新しい形式(XML形式)で提供します。 ◎:平成16年12月から追加して発表するもの (XML形式で提供します。気象庁HPでも12月から掲載します。) --- しかし発表で予告された12月1日からもう半年以上を経た2005年7月現在、 気象庁のwebサイトにはXML形式のデータなどどこにも見当たらない。 なお、お察しのとおり、財団法人 気象業務支援センターも 財団法人 日本気象協会も 気象庁の官僚の天下り先である。 read.cgi ver 07.5.0 2024/04/24 Walang Kapalit ★ | Donguri System Team 5ちゃんねる