• 締切済み

RELAX NGについて

RELAX NGについて、教えていただきたいことがあります。 以下のXML文書のスキーマをRELAX NGで作成したいのですが、 うまくいかないので、どなたか教えて下さい。お願いします。 <?xml version="1.0" encoding="Shift_JIS"?> <data> <!-- 1か2のみ選択可能 --> <choice>1</choice> <dataname cd="01"> <!-- 要素choiceの値が1のときのみ記述(2のときは省略!) --> <data_a>111</data_a> <!-- 要素choiceの値が1でも2でも記述 --> <data_b>222</data_b> </dataname> </data>

みんなの回答

  • jo-ji
  • ベストアンサー率72% (26/36)
回答No.1

まず、こういった類の質問をする場合は、XML文書だけでなく、自分で記述してみたスキーマを書くのが礼儀だと思いますよ。 自分でどこまで努力してみたかを書かないと、自分で十分な努力をせずに「学校の課題の解き方を教えて下さい」と全部人に頼ってしまう輩と同類に見られてしまって、皆さんに答えてもらえない可能性もあります。答える人に義務はありませんので。 さて、RELAX NGについては、"RELAX NG Tutorial"を読んだ程度なのですが、以下のスキーマ(インデントのために全角スペースを使っています)でうまくvalidationできるようでした。 validationに使用したツールはJingです。 もしうまくいかないようでしたら、validationに使用しているツールを書いていただかないと、何とも答えようがありません。 <element name="data" xmlns="http://relaxng.org/ns/structure/1.0">   <choice>     <group>       <element name="choice">         <choice>           <value>1</value>         </choice>       </element>       <element name="dataname">         <element name="data_a">           <text/>         </element>         <element name="data_b">           <text/>         </element>         <attribute name="cd">           <text/>         </attribute>       </element>     </group>     <group>       <element name="choice">         <choice>           <value>2</value>         </choice>       </element>       <element name="dataname">         <optional>           <element name="data_a">             <text/>           </element>         </optional>         <element name="data_b">           <text/>         </element>         <attribute name="cd">           <text/>         </attribute>       </element>     </group>   </choice> </element>

参考URL:
http://www.oasis-open.org/committees/relax-ng/tutorial-20011203.html
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • RELAX NG

    RELAX NGについていくつか質問があります。 1)RELAX NGとXMLを関連付けるにはどうしたらいいか。 DTDでいうDOCTYPEは、RELAX NGの場合どうしたらいいのでしょうか? 2)RELAX NGに対応した妥当性検証ソフトはあるのか。 出来たら、ダウンロードできるサイトも教えていただければ幸いです。 3)属性の値に一意性を持たせられるのか。 DTDでいう、IDのような指定は出来ないのでしょうか? 以上です。よろしくお願いします。

    • ベストアンサー
    • XML
  • 妥当なXML文書

    XML文書で、下記のあ)い)で、妥当なXML文書は あ)になります。 では、い)は妥当ではないとしたら、どの部分が妥当ではないでしょうか。 これが理解できずに困っています。 <a/>は親要素にならないのでしょうか。ルートになるからでしょうか。 よろしくお願いします。 あ) <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE a [ <!ELEMENT a (b?)> <!ELEMENT b (#PCDATA)> ]> <a/> い) <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE a [ <!ELEMENT a (b?)> <!ELEMENT b (#PCDATA)> ]> <a/><b/>

    • ベストアンサー
    • XML
  • スマートなxsltの記述方法

    xml→xmlを行うxsltの記述方法で質問があります。 元のxmlの例を下に示します。 <?xml version="1.0" encoding="Shift_JIS" ?> <root> <A1> <B1> <DATA1>aaa</DATA1> <DATA2>bbb</DATA2> </B1> </A1> <A2> <DATA3>ccc</DATA3> <DATA4>ddd</DATA4> <B2> <DATA5>eee</DATA5> <C1> <DATA6>fff</DATA6> </C1> <DATA7>ggg</DATA7> </B2> </A2> <DATA8>hhh</DATA8> </root> (実際はDATA1,DATA2のような規則的な要素名ではありません) 変換後のxmlとしては <root> <DATA1>aaa</DATA1> <DATA2>bbb</DATA2>       ・       ・       ・ <DATA8>hhh</DATA8> </root> のように、値を持っている要素だけを、ルートノードの下に記述したものが欲しいのです。 作った物としては、  <xsl:template match="DATA1" >   <xsl:copy>    <xsl:value-of select="." />  </xsl:copy>  </xsl:template> このようなtemplateをDATA1-8まで記述するものです。 何か簡潔な記述方法はないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • XML
  • XMLファイルからXML Schemaを参照する方法?

    XMLファイルの設計をしています。 今まではDTDを使っていたのですが、 勉強するとXML SchemaのほうがXMLの規則にそっていたり、 データ型が多かったりして都合が良い面があると学びました。 そこでXML Schemaを使いたいと思うのですが、 XML SchemaとメインのXMLのファイルはどのように関係させたら良いのでしょうか? DTDのときは以下のように書いていたと思います。 <!DOCTYPE root SYSTEM "sample.dtd" > このような記述をXML Schemaのときには、どのように記載するのだろうと 疑問に思いました。 私なりに調べてみたのですが、 XML Schemaの記述方法は、大まかに理解したのですが、 関係方法をどうすれば良いかは、見つけられませんでした。 本を読んでも、書かれているように思えません。 以下の2つのファイルがあった場合、 【element1.xml】は妥当なXML文書だそうですが、 どのように関連付いているのでしょうか? 【element.xs】 <?xml version="1.0" encoding="Shift_JIS" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <!-- 要素宣言 --> <xs:element name="売上高" type="xs:integer" /> </xs:schema> 【element1.xml】 <?xml version="1.0" encoding="Shift_JIS" ?> <売上高>1000</売上高> もしよろしければ、教えて頂けませんか? ぜひご教示お願いいたします。

    • ベストアンサー
    • XML
  • 日本語にしたときの読み込みエラーについて

    よろしくお願いします。 当方、xmlについては知識がありませんので、ずれた表現があればご容赦ください; 自作しているホームページにテーブルのサンプルをとあるサイトから拝借いたしまして、実装しました。 そのテーブルの要素を読み込むときに、どうやらxmlから読み込んでいるようです。 もともとその要素には、英字や数字しか記述されていませんでした。 そこで自分で弄ったところ、日本語を追加すると、ホームページを読み込んだときに、 「Error type: LoadXML」 「Description: Incorrect XML」 というエラーがでました。 日本語を扱うにはどうすれば良いでしょうか? よろしくお願いします。 補足: そのxmlの一番上には、 「<?xml version="1.0" encoding="Shift_JIS"?>」 と書いてあります。

    • ベストアンサー
    • XML
  • IE6.0のバグについて

    はじめまして。初めて投稿します。 現在ホームページを運営しているのですが、IE6.0でレイアウトが崩れてしまいます。同じ質問の過去ログを調べたところ、<?xml version="1.0" encoding="Shift_Jis"?>の記述を削除すれば改善されると書いてありました。しかしレイアウトが崩れるページと崩れないページがあります。すべてのページに<?xml version="1.0" encoding="Shift_Jis"?>の記述をしていますが崩れないページもあるので<?xml version="1.0" encoding="Shift_Jis"?>が原因ではないのでしょうか?スタイルシートもチェックしましたが原因がわからない状態です。特にトップページの崩れがひどいです。左側のメニュー部分がトップリンク部分の中に入り込んでしまい、メインのコンテンツ部分は右側に大きくずれ、トップメニュー部分も右にずれてしまいます。数日かけて編集し、調査しましたがもうお手上げ状態です・・・ アドバイスを頂きたいと思い投稿させていただきました。よろしくお願いします。

  • PHPを拡張子 .html で動作させたいときは・・

    PHPを拡張子 .html で動作させたくて .htaccess に AddType application/x-httpd-php .htm .html と 記述して使用しているのですが、そのページのリンク先に <?xml version="1.0" encoding="Shift_JIS"?>が記述してあると リンク先に移動したときに Parse error: syntax error, unexpected T_STRING in /home/sites/lolipop.jp/users/*****/web/uonome/index.html on line 1 と、エラーが表示されてページが表示されません。 <?の部分がエラーになる要因みたいなのですが、 この状態を回避するには<?xml version="1.0" encoding="Shift_JIS"?>を 削除するしかないでしょうか? できれば<?xml version="1.0" encoding="Shift_JIS"?>を 削除しない方法があればと思い、質問させていただきました。

    • ベストアンサー
    • PHP
  • htaccessの記述方法??

    携帯サイトでドコモ対応で <?xml version="1.0" encoding="shift_jis"?> をhtml内で記述しています。 しかし、htmlファイル内でphpを動作させたいのでhtaccessに AddType application/x-httpd-php .html を記述している為 Parse error: syntax error, unexpected T_STRING in ~~~~ エラーが出てしまいます。 ドコモ対応もしたいので<?xml version="1.0" encoding="shift_jis"?>は必須で htmlファイル内でphpを動作もさせたいです。 解決方法はございますでしょうか?

    • ベストアンサー
    • PHP
  • ホームページビルダー encoding

    ホームページビルダーでホームページをW3Cで作っていますが、 どうしても、 <?xml version="1.0" encoding="Shift_JIS"?>のencodingを UTF-8にしたいのに、変わってくれません。 UTF-8にしても、保存すると勝手にShift_JISになってしまいます。 書き換えることはできますか?

  • XSLで、XMLの空タグを制御したい。

    値がないXML文書に、 <exsample /> こう書かれてしまうものを、 <exsample></exsample> このように出力したいのですが、出来ずでした。 以下は、私のやり方です。 ■ XSL <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xslt"> <xsl:output method="xml" encoding="Shift_JIS" indent="yes" xalan:indent-amount="4"/> <xsl:template match="/"> <xsl:copy-of select="."/> </xsl:template> </xsl:stylesheet> ■ XML <?xml version="1.0" encoding="Shift_JIS"?> <root> <section> <category> <exsample1>value</exsample1> <exsample /> </category> </section> </root> ご教授、よろしくお願いいたします。

    • ベストアンサー
    • XML