XML
- UTF8への変換について
XMLをシフトJISで、作成しています。 このXMLから、XSLTを通して、UTF-8のHTMLを作成することは、 可能でしょうか? XSLTで、文字コードの変更は出来るのでしょうか? やはり、シフトJISのHTMLを作成した後で、UTF-8に変換する方法でしょうか?
- XMLSchemaのデータ型をインポートしたい
外部ファイルで定義したXMLSchemaのデータ型をimportで取り込んで使おうとすると、エラーになってしまいます。 XMLSchemaで使用するデータ型を次のように定義しました。 ------------- datatype.xsd ---------------- <?xml version="1.0" encoding="UTF-8" standalone="no"?> <sd:schema targetNamespace="http://datatype.com" xmlns:datatype="http://datatype.com" xmlns="http://datatype.com" xmlns:sd="http://www.w3.org/2001/XMLSchema" > <sd:simpleType name="html_xhtml_id"> <sd:restriction base="sd:token"> <sd:pattern value="[A-Za-z]+[A-Za-z0-9]*" /> </sd:restriction> </sd:simpleType> </sd:schema> ------------------------------------------------- そして次のようにXMLSchemaで呼び出しました。 ----------------- caller.xsd ----------------------- <?xml version="1.0" encoding="UTF-8" standalone="no"?> <sd:schema targetNamespace="http://example.com" xmlns="http://sample.com" xmlns:datatype="http://datatype.com" xmlns:sd="http://www.w3.org/2001/XMLSchema" > <sd:import namespace="http://datatype.com" schemaLocation="./datatype.xsd" /> <!-- ここでエラーが発生する模様 --> <sd:element name="testElement" type="datatype:html_xhtml_id" /> </sd:schema> ----------------------------------------------------------- エラーの内容(Java): org.xml.sax.SAXParseException: src-resolve: Cannot resolve the name 'datatype:html_xhtml_id' to a(n) 'type definition' component. ちなみに、datatype.xsdで定義せずにcaller.xsdで定義したデータ型を使っても、エラーは発生しません。 何がいけないのでしょうか。 分かる方よろしくお願いします。
- xslでファイルオープンのようなことはできますか?
こんにちは. XML,XSLを勉強し始めて間もない者ですがよろしくお願いします. XMLの中に画像のURLが記述してあって,XSLを用いてそのURLを抽出し,HTMLに変換する際画像を表示するということはできました. 例 XMLに 「<画像>http://***/***.jpg</画像>」 といった記述がされているとして, 「<img> <xsl:attribute name="src"> <xsl:value-of select="画像"/> </xsl:attribute> </img>」 とXSLを記述することにより画像が表示できました. しかしXMLの中にテキストファイルのURLが記述してあり,そのテキストファイルの中に画像のURLが表示されていたとすると,そのテキストファイルをオープンして制御するようなことはできるのでしょうか? 例 XMLの中に 「<画像情報>http://***/***.txt</画像情報>」 といった記述があり,そのテキストの中に 「画像のURLです. http://***/***.jpg」 のように書かれているとします. Cなどのプログラムを用いればすぐ出来そうですが,XSLのみでこのような制御を行うことは無理でしょうか? 説明が分りにくくて申し訳ありませんがよろしくお願いいたします.
- XSLT
いつもお世話になっております。 次のXSLTの結果がどうしてそうなるのかわからないので教えてください。 解説には、「処理は必ずルートノードのテンプレートから始まります」と書いてあるんですが、できましたら、その辺もからめて、どういう処理の流れになるのか、カレントノードがどう移動していくのか、教えていただけると助かります。 (XML) <?xml version="1.0" encoding="Shift_JIS"?> <Conference Situation="Reserved" Equipment="Projector"> <Room>会議室</Room> <User>山田太郎 <Date>2008/05/08</Date> <Time>10:00-12:00</Time> </User> <Number>4名</Number> </Conference> (XSLT) <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" /> <xsl:template match="/Conference"> <xsl:value-of select="Number" /> </xsl:template> <xsl:template match="Conference/User"> <xsl:value-of select="Date" /> </xsl:template> <xsl:template match="/"> <xsl:value-of select="Conference/Room" /> </xsl:template> </xsl:stylesheet> (結果) 会議室
- XML Schema
いつもお世話になっております。 わからないところがありますので教えてください。以下のXML Schemaで、 <xs:element ref="No" /> と参照しているのですが、参照先となるのは <xs:element ref="No" type="xs:NoType" /> だと思うのですが、自分はこれが <xs:element name="No" type="xs:NoType" /> ではないのかなって思っているのですが、どうなのでしょうか。 よろしくお願いします。 <?xml version="1.0" encoding="Shift_JIS"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Conference" type="ConferenceType" /> <xs:complexType name="ConferenceType"> <xs:sequence> <xs:element name="Room" type="xs:string" /> <xs:element ref="No" /> </xs:sequence> </xs:complexType> <xs:element ref="No" type="xs:NoType" /> <xs:simpleType name="NoType"> <xs:restriction base="xs:float"> <xs:minExclusive value="10" /> <xs:maxExclusive value="15" /> </xs:restriction> </xs:simpleType> </xs:schema>
- DTDについて
いつもお世話になっております。 以下のインスタンスに対して妥当なXML文書となるDTDはどれかという問題で、(1)は正解で(2)は不正解となっているのですが、自分は(2)がなぜ不正解なのかわかりません。正解じゃないの?と思っています。 お分かりになる方、お知恵を拝借できないでしょうか。よろしくお願いします。 (1)と(2)で違うのはinformationの子要素の出現回数が*か+かの違いです。 (インスタンス) <information><product>PC</product>と<product>モニタ</product>で<price>200000</price>円です。</information> (1) <?xml version="1.0"?> <!DOCTYPE information[ <!ELEMENT information (#PCDATA | product | price)*> <!ELEMENT product (#PCDATA)> <!ELEMENT price (#PCDATA)> ]> (2) <?xml version="1.0"?> <!DOCTYPE information[ <!ELEMENT information (#PCDATA | product | price)+> <!ELEMENT product (#PCDATA)> <!ELEMENT price (#PCDATA)> ]>
- XML Schemaの適用方法
いつもお世話になっております。 DTDにおいては、XMLのファイルの中に、 <!DOCTYPE root SYSTEM "chap01.dtd"> という感じで、外部ファイルのDTDと関連付けれたのですが、XML Schemaにおいて同じようなことはできないのでしょうか。 ご存知の方よろしくおねがいします。
- XSLTの動作
いつもお世話になります。 以下のXSLTの処理の動き方を教えてください。 どうして3の結果xmlになるのかわかりません。おそらくposition()の取り方がわかっていないのかなって思っています。 自分としては <answer> <色>白</色> <色>yellow</色> <色>赤</色> <色>blue</色> <色>黒</色> </answer> になるんじゃないのかなって思ってしまうのですが・・・。 (1)データ <?xml version="1.0" encoding="Shift_JIS"?> <color_pencil> <price>1300</price> <color><en>white</en><jp>白</jp> <color><en>yellow</en><jp>黄色</jp> <color><en>red</en><jp>赤</jp> <color><en>blue</en><jp>青</jp> <color><en>black</en><jp>黒</jp> </color_pencil> (2)XSLT <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <answer> <for-each select="color_pencil/color"> <xsl:choose> <xsl:when test="position() mod 2=0"> <xsl:apply-templates select="." /> </xsl:when> <xsl:otherwise> <xsl:call-template name="color" /> </xsl:otherwise> </xsl:choose> </xsl:for-each> </answer> </xsl:template> <xsl:template match="color"> <色><xsl:value-of select="jp" /></色> </xsl:template> <xsl:template name="color"> <色><xsl:value-of select="en" /></色> <xsl:template> </xsl:stylesheet> (3)結果xml <answer> <色>white</色> <色>黄色</色> <色>red</色> <色>青</色> <色>black</色> </answer>
- XPathGraphでノードの値を取得できない
IT戦記経由で知った http://d.hatena.ne.jp/amachang/20080425/1209098271 XPathGraph http://xpath.kayac.com/ なるサービスがあります。 テストのために, Windows Live SkyDriveにアップロードした http://qfrfbw.bay.livefilestore.com/y1pR1j83PrREpBohBHZsCgD8GDU8FdFa4EArE7o6flrxaCyM3pSbtxD69QyPvue3X2p2-97-V9oNadelUXUfaHXaA/20080430-2.xml のtest要素のテキストノードを数値として扱った時の値55を取得しようと URLを打ち込み XPathを number(/test/text()) としたのですが, 値が取得できませんでした とされてしまいました。 何か条件が足りないのでしょうか?
- 締切済み
- XML
- himajin100000
- 回答数1
- XMLファイルを生成するには
XMLの勉強をしています。 XMLに、データをある程度の量を入れたいのですが、いちいち同じタグを何度も書いたりするのが面倒です…。 普通は何かツールを使ってXMLファイルを作るのでしょうか? よろしくお願いします。
- xmlstarletで他ファイルからエレメントをコピーしたい
Linux上で、 xmlstarletを使って、2つのxmlファイルを合成しようとしています。 一つ目のファイル、"list.xml"の内容は以下です。 --- <?xml version="1.0"?> <x> <e a="1">value1</e> <e a="2">value2</e> </x> --- エレメントのリストです。 二つ目のファイル、"elem.xml"の内容は以下です。 --- <?xml version="1.0"?> <x> <e a="3">value3</e> </x> --- このファイルのエレメントを、list.xmlに付け加えようとしています。 最終的に、以下の内容のファイルを合成しようとしています。 --- <?xml version="1.0"?> <x> <e a="1">value1</e> <e a="2">value2</e> <e a="3">value3</e> </x> --- xmlstarletを使って、 $ xml ed -s "/x" -t elem -n e -v value3 -s "/x/e[last()]" -t attr -n a -v 3 list.xml とすれば、目的の合成された内容が得られるんですが、あくまで、他のファイルからエレメントを コピーしたいんです。 例えば、↓のコマンドは間違ってるんですが、イメージに一番近いものです。 $ xml ed -m "document('elem.xml')/x/e" "/x" list.xml 現状は、sedでlist.xmlの行末を削り、elem.xmlの内容をリダイレクトで追記し(>> list.xml)、 その後、削ったlist.xmlの行末を再び追記してますが、エレガントに解決できないでしょうか。
- GNU VCDImager WHITEBOOK規格外用VCDのXMLを教えてください
VCD内にMpeg TVを同梱したいと思いますがVCDに再生プレイヤーを同梱するとWHITEBOOK規格外になってしまうために再生できません。 LinuxでMpeg TVを使用します。 XMLで書く方法をお願いします。 現在の構成です <videocd xmlns="http://www.gnu.org/software/vcdimager/1.0/" class="vcd" version="2.0"> <option name="relaxed aps" value="false"/> <option name="track pregap" value="150"/> <option name="track front margin" value="30"/> <option name="track rear margin" value="45"/> <option name="leadout pregap" value="0"/> <info> <album-id>VIDEOCD1</album-id> <volume-count>1</volume-count> <volume-number>1</volume-number> <restriction>0</restriction> </info> <pvd> <volume-id></volume-id> <system-id></system-id> <application-id></application-id> <preparer-id>VCDImager</preparer-id> <publisher-id></publisher-id> </pvd> <segment-items> <segment-item src="path\memu.mpg" id="memu.mpg"/> </segment-items> <sequence-items> <sequence-item src="path\f01.mpg" id="f01.mpg"> <default-entry id="default-entry-00"/> </sequence-item> <sequence-item src="path\f02.mpg" id="f02.mpg"> <default-entry id="default-entry-01"/> </sequence-item> </sequence-items> <pbc> <selection id="ChapterMenu-00" rejected="false"> <bsn>1</bsn> <next ref="playlist-00"/> <default ref="playlist-00"/> <wait>-1</wait> <loop jump-timing="immediate">0</loop> <play-item ref="memu.mpg"/> <select ref="Chapter-00"/> <select ref="Chapter-01"/> </selection> <playlist id="Chapter-00" rejected="true"> <next ref="ChapterMenu-00"/> <play-item ref="f01.mpg"/> </playlist> <playlist id="Chapter-01" rejected="true"> <next ref="ChapterMenu-00"/> <play-item ref="f02.mpg"/> </playlist> <playlist id="playlist-00" rejected="false"> <play-item ref="f01.mpg"/> <play-item ref="f02.mpg"/> </playlist> </pbc> </videocd> <videocd xmlns="http://www.gnu.org/software/vcdimager/1.0/" class="vcd" version="2.0"> <option name="relaxed aps" value="false"/> <option name="track pregap" value="150"/> <option name="track front margin" value="30"/> <option name="track rear margin" value="45"/> <option name="leadout pregap" value="0"/> <info> <album-id>VIDEOCD1</album-id> <volume-count>1</volume-count> <volume-number>1</volume-number> <restriction>0</restriction> </info> <pvd> <volume-id></volume-id> <system-id></system-id> <application-id></application-id> <preparer-id>VCDImager</preparer-id> <publisher-id></publisher-id> </pvd> <segment-items> <segment-item src="path\memu.mpg" id="memu.mpg"/> </segment-items> <sequence-items> <sequence-item src="path\f01.mpg" id="f01.mpg"> <default-entry id="default-entry-00"/> </sequence-item> <sequence-item src="path\f02.mpg" id="f02.mpg"> <default-entry id="default-entry-01"/> </sequence-item> </sequence-items> <pbc> <selection id="ChapterMenu-00" rejected="false"> <bsn>1</bsn> <next ref="playlist-00"/> <default ref="playlist-00"/> <wait>-1</wait> <loop jump-timing="immediate">0</loop> <play-item ref="memu.mpg"/> <select ref="Chapter-00"/> <select ref="Chapter-01"/> </selection> <playlist id="Chapter-00" rejected="true"> <next ref="ChapterMenu-00"/> <play-item ref="f01.mpg"/> </playlist> <playlist id="Chapter-01" rejected="true"> <next ref="ChapterMenu-00"/> <play-item ref="f02.mpg"/> </playlist> <playlist id="playlist-00" rejected="false"> <play-item ref="f01.mpg"/> <play-item ref="f02.mpg"/> </playlist> </pbc> </videocd>
- ベストアンサー
- XML
- masanori85
- 回答数1
- XSLTの処理について
いつもお世話になっております。 XMLの動作についての質問です。以下のようなXMLファイルがあったとします。それに対して、その下のようなXSLファイルがあり、変換させると、結果XMLができます。 そこでわからないのは、test.xslの中ほどで、<xsl:template match="book/title/price">という風にXPath式でbook/title/priceと指定しているのに、結果には<title>の値も出力されます。なぜでしょうか。 自分のイメージとしては、<title>の値は出力されず<price>の値だけが出力されるのじゃないのかなっていう感じです。さらに<newTag>に<title>の値が挟まれていないのもなぜなのかわかりません。 お分かりになる方よろしくお願いします。もし参考文献に良いサイトや本がありましたらそちらも紹介をお願いします。 <<<test.xml>>> <?xml version="1.0" encoding="Shift_JIS"?> <books> <book> <title> XMLとは <price>2000</price> </title> </book> <book> <title> XML概論 <price>1800</price> </title> </book> <book> <title> XMLマスター <price>4000</price> </title> </book> </books> <<<test.xsl>>> <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <answer> <xsl:apply-templates select="books/book"/> </answer> </xsl:template> <xsl:template match="book/title/price"> <newTag> <xsl:value-of select="."/> </newTag> </xsl:template> </xsl:stylesheet> <<<結果.xml>>> <?xml version="1.0" encoding="utf-8" ?> <answer> XMLとは <newTag>2000</newTag> XML概論 <newTag>1800</newTag> XMLマスター <newTag>4000</newTag> </answer>
- XSLTでの変換後のソース
いつもお世話になっております。 先日、http://okwave.jp/qa3940547.html においてXMLをXSLTで変換する環境を教えていただいたのですが、現状XML Editer(IEのアドイン?)で結果を見ているのですが、ソースを見てみても変換前のXMLの内容しか見れず、変換後のタグとかがきちんとなっているのか確認できません。 EXCELで開くとそれらしく見れる方法があるのですが、希望する程のものではありません。 何かよいツール(できたらフリーのもの)とかありませんでしょうか。もしくは変換したものがファイルとして吐き出されるものでもよいです。 こちらは、オフィス2007やVS2005やVS2008は所有しております。これらでできる場合もお願いします。 よろしくお願いします。
- ブログのテンプレート(XML→HTML?)
海外のサイトでブログのテンプレートを検索して、 使いたい物を探しファイルをDLしたのですが、 ファイルの中身がxmlが1つとpsdが3つ入ってました。 ファイル元はこちらです。 (http://bloggertemplates.itmag.org/2007/11/blogger-template-celebrit...) 今自分が使っているブログにテンプレートのインポート機能があるようなのですが、 HTMLとCSSしかできないようです。 このXMLを使うにはどの様にしたら良いでしょうか? XML初心者ですので、質問の意味がちゃんと伝わっているか不安ですが、よろしくお願いします。 因みにブログは忍者ブログです。
- ベストアンサー
- XML
- rookrookrook
- 回答数1
- XSLT変換した際、必要のないxmlns宣言が入ってしまう
標準JavaAPIのXSLT(Transformerクラス)(実体はXerces)を使用して、 複数のXML文書からXHTMLを作成していますが、 作成されたXHTMLに、必要のないxmlns宣言が含まれてしまいます。 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:hoge="http://hogehoge" xmlns:hage="http://hagehage"> ...いろいろ... </html> のような感じです。 このXHTMLの中に、もはやhogeやhageの名前空間の要素は存在していないのに書き込まれてしまいます(そしていらないです)。 おかげでxhtml1.0の妥当性が損なわれてしまっています。 どうやらXSLTのtemplateでmatchした時に挿入する要素に、matchした名前空間接頭辞宣言が付いてしまうようなのですが、これを回避する方法はありませんでしょうか。 質問内容が分かりにくそうなので、補足要求もどんどんお願いします。
- 自作したRSSファイルがIEなどでエラーになる
RSSを出力するCGIを自作で作ったのですが、 その出来上がったRSS(RDFファイル)を、IEで開くと セミコロン ( ; ) が必要です。 行: 7 文字: 76 ?<channel rdf:about="*ttp://**.******.***/***/index.ms?mode=showvote&voteid=8549924"> などというエラーが出ます。 ちなみに上記の*は、文字数そのまま伏字にしております。 *ttpは、もちろんhttpです。 あるどうやら、全てのエラーは、 URLが記述されたところに発生しているようです・・・ リンク先は、CGIなので、?***=***などは何個も使っています。 もしかして、RSSでは、URLの?、=とかは使ってはいけないんですか? 問題のRSSについては、 ちょっとURLなどがあるので、アップ出来ません どうしても必要なら、アップさせていただきます。
- ベストアンサー
- XML
- masapiyochan
- 回答数1
- IEが表示できないXML
以下のようなXML <?xml version="1.0" encoding="Shift_JIS"?> <aaa> <■漢字/> </aaa> IEで表示しようとするとエラーになります。 encoding が間違っているのでしょうか。 よろしくお願いします。 ----- XML ページを表示できません XSL スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。 -------------------------------------------------------------------------------- 無効な文字で名前が始まりました。リソース 'file:///sample.xml' の実行エラーです。ライン 3、位置 3 <■漢字/> --^
- xml→htmlへの変換&ページ分割したい
まず、下記のxml、xslによりhtmlページを出力しています。 ■test.xml <?xml version="1.0" encoding="UTF-8"?> <all> <index file_id="a"> <product file_id="a-01"> <yoso>ああああああああああああああああ</yoso> </product> <product file_id="a-02"> <yoso>いいいいいいいいいいいいいいいい</yoso> </product> <product file_id="a-03"> <yoso>うううううううううううううううう</yoso> </product> <product file_id="a-04"> <yoso>ああああああああああああああああ</yoso> </product> <product file_id="a-05"> <yoso>いいいいいいいいいいいいいいいい</yoso> </product> <product file_id="a-06"> <yoso>うううううううううううううううう</yoso> </product> </index> <index file_id="b"> <product file_id="b-01"> <yoso>ああああああああああああああああ</yoso> </product> <product file_id="b-02"> <yoso>いいいいいいいいいいいいいいいい</yoso> </product> <product file_id="b-03"> <yoso>うううううううううううううううう</yoso> </product> <product file_id="b-04"> <yoso>うううううううううううううううう</yoso> </product> </index> <index file_id="c"> <product file_id="c-01"> <yoso>ああああああああああああああああ</yoso> </product> <product file_id="c-02"> <yoso>いいいいいいいいいいいいいいいい</yoso> </product> <product file_id="c-03"> <yoso>うううううううううううううううう</yoso> </product> </index> </all> ■ind.xsl <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0" xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect" extension-element-prefixes="redirect"> <xsl:output method="html" encoding="UTF-8"/> <xsl:template match="index"> <!-- 出力ファイル名 --> <xsl:variable name="filename" select="concat('html/',@file_id, '/index.html')"/> <!-- 出力開始 --> <redirect:open select="$filename"/> <redirect:write select="$filename"> <html> <head> <title><xsl:value-of select="@file_id"/></title> </head> <body> <h1><xsl:value-of select="@file_id"/></h1> <xsl:apply-templates /> </body> </html> </redirect:write> <redirect:close select="$filename"/> <!-- 変換報告 --> <xsl:value-of select="concat('『',$filename,'』変換完了')"/> </xsl:template> <xsl:template match="product"> <a> <xsl:attribute name="href"> <xsl:value-of select="concat(@file_id,'.html')" /> </xsl:attribute> <xsl:value-of select="@file_id" /> </a><br /> </xsl:template> </xsl:stylesheet> ■環境 ・xalan-j_2_7_1 ・j2sdk1.4.2_16 ・windowsxp コマンドプロンプトにより下記を実行すると java org.apache.xalan.xslt.Process -in test.xml -xsl ind.xsl html/a/index.html html/b/index.html html/c/index.html が出力されます。 つまりは各カテゴリ(a,b,c)のproduct要素をまとめた インデックスページが出力されます。 ここまでが現状です。 やりたいのは以下です。 上記だとproductの数にかかわらず1ページのindex.htmlに 出力されます。 test.xmlは数が少ないのでいいですが、 仮に1000個あった場合、どんでもないことになってしまうので、 ページ分割をしたいと思っています。(< 1 2 3 4 > みたいな!) ですが、何をどうしたらよいのか皆目見当が付きません。 1ページを10個までとしてそれ以上は次ページに出力みたいなことはできるのでしょうか。 html/a/index.html html/a/index2.html html/a/index3.htmlみたいにです。。。 上記のxslだとmatchするtemplates(index)は3つだけなので、 xalanが書き出すのは3ぺーじだけです。 この書き出す回数をたとえばcount(product div 10)とかにできれば、 なにかみえてきそうなきもするんですが、、、、 長々と申し訳ありませんが、 ご協力お願いします。