街中で見かけて「グッときた人」の思い出

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>

A 回答 (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/tu …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報