linkdeveloperxmlxpriorisolutionxmldbdownloadtop
トップページ ご利用ガイド サイトマップ


↑Get! NeoCore!


↑ITスキルを
のばすなら


↑XMLのことなら

↑セミナー開催
NeoCoreXMS/Xpriori


TOP  >>  XML解説  >>  探検 XMLボキャブラリの世界



2008年5月26日 更新


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

著者:岸 和孝(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 NGDTD
表記法の種類XML構文独自の構文
データ型の種類多い少ない
属性の宣言内容モデルの内側内容モデルの外側
名前空間の指定×
順序のない内容モデルの指定×
文脈に応じた内容モデルの指定×
省略時属性値の指定×(拡張によって可能)
実体の指定×
記法宣言の指定×
空白文字の処理方法の種類×

社団法人日本印刷技術協会(JAGAT) PrintersCircle 2008年1月号より転載

社団法人日本印刷技術協会(JAGAT) 探検 XMLボキャブラリの世界




  探検 XMLボキャブラリの世界
  第1回  ホームページのボキャブラリ − XHTML
  第2回  印刷のボキャブラリ − JDF,JMF,PrintTalk
  第3回  書誌情報のボキャブラリ − RDF,RSS,Atom
  第4回  新聞記事のボキャブラリ − NewsML
  第5回  電子商取引のボキャブラリ − PrintTalk
  第6回  ビジネス・グラフのボキャブラリ − ODF,xChart,JMSL chart,ChartSVG,XML/SWF Charts,xfy
  第7回  化学のボキャブラリ − CML
  第8回  文書型定義のボキャブラリ − XML Schema,RELAX NG
  第9回  地理情報のボキャブラリ − GML,G-XML
  第10回  楽譜のボキャブラリ − MusicXML
  第11回  数式のボキャブラリ − MathML
  第12回  オフィス文書のボキャブラリ − ODF(その1)
  第13回  オフィス文書のボキャブラリ − ODF(その2)
  第14回  オフィス文書のボキャブラリ − ODF(その3)
  第15回  オフィス文書のボキャブラリ − ODF(その4)
  第16回  オフィス文書のボキャブラリ − ODF(その5)
  第17回  ユーザー・インターフェースのボキャブラリ − XUL
  第18回  音声対話のボキャブラリ − VoiceXML,CCXML,SCXML
  第19回  文書型定義のボキャブラリ − RELAX NG Compact Syntax
  第20回  ボキャブラリ変換のボキャブラリ − XSLT

  関連記事
  XPathを使ってみよう
  属性を記述してみよう

^ ページのトップへ

Copyright(c)2004 Nihon Unitec Co., Ltd. All right reserved.