DTD - EXPRESS スキーマ変換
このセクションでは、DTD と EXPRESS スキーマの相違点について説明します。
エレメントの仕様
DTD のエレメントは次のように指定されます。
-- <!ELEMENT part (name, (number | ufid)*, item, (sun | mon | tue)+)>
同じエレメントが、EXPRESS スキーマ表現では次のように表されます。
ENTITY e_part;
name : STRING;
r_number : OPTIONAL LIST OF STRING;
ufid : OPTIONAL LIST OF STRING;
item : e_item;
sun : OPTIONAL LIST [1:?] OF STRING;
mon : OPTIONAL LIST [1:?] OF STRING;
tue : OPTIONAL LIST [1:?] OF STRING;
WHERE
wr1: (EXISTS ( sun ) OR EXISTS ( mon ) OR EXISTS ( tue ));
END_ENTITY;
|
前記の例では、番号に r_ というプレフィックスが付いています。これは、number が EXPRESS スキーマ言語の予約語だからです。EXPRESS 言語の予約語と一致するすべての DTD の属性には、r_ というプレフィックスが付きます。
|
EXPRESS の列挙リスト仕様
DTD では、列挙リストは次の定義を使用して指定されます。
<!ELEMENT permissionKey EMPTY>
<!ATTLIST permissionKey value (-1|0|1|2|3|4|5|6|7) #REQUIRED>
EXPRESS スキーマ表現では、列挙リストは次の定義を使用して指定されます。
ENTITY e_permissionKey;
attr_value : STRING;
WHERE
check_attr_value: SELF.attr_value IN ['-1','0','1','2','3','4','5','6','7'];
END_ENTITY;