XML技術
HOME  >  XML技術  >  探検 XMLボキャブラリの世界 第19回

探検 XMLボキャブラリの世界 第19回

第19回:文書型定義のボキャブラリ ~RELAX NG Compact Syntax~

2008年5月26日 更新
著者:岸 和孝(JAGAT客員研究員)

全文については,Printers Circle(2008年 1月号)をご覧ください。

▼図1 DTDによる文書型定義

<!ELEMENT 名簿   (名刺)+>
<!ELEMENT 名刺   (名前,会社名,住所,メール,ロゴ?)>
<!ELEMENT 名前   (姓,名)>
<!ELEMENT 姓     (#PCDATA)>
<!ELEMENT 名     (#PCDATA)>
<!ELEMENT 会社名 (#PCDATA)>
<!ELEMENT 住所   (#PCDATA)>
<!ELEMENT メール (#PCDATA)>
<!ELEMENT ロゴ   EMPTY>
<!ATTLIST ロゴ  画像 CDATA #REQUIRED>

▼図2 RELAX NG Compact Syntaxによる文書型定義

start = 名簿型
名簿型 =
  element 名簿 {
    element 名刺 {
      element 名前 {
        element 姓 { xsd:string },
        element 名 { xsd:string }
      },
      element 会社名 { xsd:string },
      element 住所 { xsd:string },
      element メール { xsd:anyURI },
      (element ロゴ { attribute 画像 { xsd:anyURI } },
       empty)?
    }+
  }

▼図3 RELAX NGによる文書型定義

<grammar xmlns="http://relaxng.org/ns/structure/1.0"
         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  <start>
    <ref name="名簿型"/>
  </start>
  <define name="名簿型">
    <element name="名簿">
      <oneOrMore>
        <element name="名刺">
          <element name="名前">
            <element name="姓"><data type="string"/></element>
            <element name="名"><data type="string"/></element>
          </element>
          <element name="会社名"><data type="string"/></element>
          <element name="住所"><data type="string"/></element>
          <element name="メール"><data type="anyURI"/></element>
          <optional>
            <element name="ロゴ">
              <attribute name="画像"><data type="anyURI"/></attribute>
            </element>
            <empty/>
          </optional>
        </element>
      </oneOrMore>
    </element>
  </define>

</grammar>

▼図4 文書インスタンス

<?xml version="1.0"?>
<名簿>
  <名刺>
    <名前><姓>金</姓><名>太郎</名></名前>
    <会社名>金時茶屋</会社名>
    <住所>箱根足柄山</住所>
    <メール>kintaro@kintoki.com</メール>
    <ロゴ 画像="kintaro.png" />
  </名刺>
  <名刺>
    <名前><姓>桃</姓><名>太郎</名></名前>
    <会社名>鬼が島</会社名>
    <住所>瀬戸内鬼が島</住所>
    <メール>momotaro@onigashima.co.jp</メール>
    <ロゴ 画像="momotaro.png" />
  </名刺>

</名簿>

▼表1 RELAX NGとDTDの違い

  RELAX NG DTD
表記法の種類XML構文独自の構文
データ型の種類多い少ない
属性の宣言内容モデルの内側内容モデルの外側
名前空間の指定×
順序のない内容モデルの指定×
文脈に応じた内容モデルの指定×
省略時属性値の指定×(拡張によって可能)
実体の指定×
記法宣言の指定×
空白文字の処理方法の種類×
社団法人日本印刷技術協会(JAGAT)
PrintersCircle PrintersCircle 2008年1月号より転載
探検 XMLボキャブラリの世界

▲このページのTOPへ

  • XMLとは?IT初心者でもすぐわかるXML超入門
  • 無償で使える!XMLDB「NeoCore」
  • サイバーテック求人情報
  • メールマガジン申し込み
  • TEchScore

  • ▲NeoCoreについて記載されています!

  • ▲XMLマスター教則本です。試験対策はこれでばっちり!
Copyright (c) CyberTech corporation ltd. All ights Reserved. | サイバーテックについて | ご利用ガイド