mb_language("uni"); mb_internal_encoding("utf-8"); mb_http_input("auto"); mb_http_output("utf-8"); ?>
全文については,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構文 | 独自の構文 |
データ型の種類 | 多い | 少ない |
属性の宣言 | 内容モデルの内側 | 内容モデルの外側 |
名前空間の指定 | ○ | × |
順序のない内容モデルの指定 | ○ | × |
文脈に応じた内容モデルの指定 | ○ | × |
省略時属性値の指定 | ×(拡張によって可能) | ○ |
実体の指定 | × | ○ |
記法宣言の指定 | × | ○ |
空白文字の処理方法の種類 | × | ○ |
▲このページのTOPへ