RELAX Namespaceと併用するためには,RELAX Coreに次に示す変更が必要になる。
hedgeExportは,label属性をもつ。
label NMTOKEN #REQUIRED
label属性の値は,hedgeRuleで記述されたラベルとする。このhedgeRuleが記述する要素生け垣モデルに,複数の要素を含む列がマッチしてはならない。
備考 分割検証を容易にするためにこの制限を導入する。
exportのlabel属性及びrole属性のどちらか一方は必須とする。両方を指定してはならない。
label NMTOKEN #IMPLIED role NMTOKEN #IMPLIED
label属性の場合は,elementRuleで記述されたラベルを参照する。role属性の場合はattPoolで記述された役割を参照する。tagで記述された役割を指定してはならない。
次のnamespace属性をhedgeRef, ref要素に追加する。
namespace CDATA #IMPLIED
namespace属性によって名前空間を指定したときは,その名前空間を記述するモジュールがexportするhedgeRule, elementRuleを参照する。
moduleのtargetNamespace属性が省略されているときの解釈を変更する。他のmoduleのinclude要素から参照されてはいないが,あるframeworkの namespace 要素から参照されているとき,このnamespace要素のname属性の値をtargetNamespace属性の値として用いる。frameworkからも参照されていないときは,""を用いる。
*** ../../TR_Core/iso/relaxCore.dtd Tue Sep 11 01:04:15 2001 --- relaxCore.dtd Tue Sep 11 01:02:08 2001 *************** *** 11,16 **** --- 11,17 ---- <!ENTITY % corePrefix ""> <!ENTITY % interface "%corePrefix;interface"> <!ENTITY % export "%corePrefix;export"> + <!ENTITY % hedgeExport "%corePrefix;hedgeExport"> <!ENTITY % div "%corePrefix;div"> <!ENTITY % tag "%corePrefix;tag"> <!ENTITY % elementRule "%corePrefix;elementRule"> *************** *** 53,59 **** <!-- --> <!--*******************************************************--> ! <!ELEMENT %interface; ((%annotation;)?, (%export; | %div;)*)> <!ENTITY % clause "%tag;|%attPool;"> --- 54,60 ---- <!-- --> <!--*******************************************************--> ! <!ELEMENT %interface; ((%annotation;)?, (%export; | %hedgeExport; | %div;)*)> <!ENTITY % clause "%tag;|%attPool;"> *************** *** 81,93 **** (((%rule; |%clause; | %include; ), (%rule; |%clause; | %include; | %div;)*) | ! (%export;, (%export; | %div;)*))?)> <!-- (%rule; |%clause; | %include; | %div;)* is used when a div appears in ! a module body, while (%export; | %div;)* is used when it appears in an ! interface element. --> --- 82,95 ---- (((%rule; |%clause; | %include; ), (%rule; |%clause; | %include; | %div;)*) | ! ((%export; | %hedgeExport;), ! (%export; | %hedgeExport; | %div;)*))?)> <!-- (%rule; |%clause; | %include; | %div;)* is used when a div appears in ! a module body, while (%export; | %hedgeExport; | %div;)* is used when ! it appears in an interface element. --> *************** *** 98,104 **** <!--*******************************************************--> <!ELEMENT %export; ((%annotationCore;)?)> ! <!ATTLIST %export; label NMTOKEN #REQUIRED> <!--*******************************************************--> <!-- --> --- 100,114 ---- <!--*******************************************************--> <!ELEMENT %export; ((%annotationCore;)?)> ! <!ATTLIST %export; ! label NMTOKEN #IMPLIED ! role NMTOKEN #IMPLIED ! > ! ! <!ELEMENT %hedgeExport; ((%annotationCore;)?)> ! <!ATTLIST %hedgeExport; ! label NMTOKEN #IMPLIED ! > <!--*******************************************************--> <!-- --> *************** *** 137,142 **** --- 147,153 ---- <!ELEMENT %hedgeRef; EMPTY > <!ATTLIST %hedgeRef; label NMTOKEN #REQUIRED + namespace CDATA #IMPLIED %repeatable; > *************** *** 144,149 **** --- 155,161 ---- <!ATTLIST %ref; label NMTOKEN #IMPLIED role NMTOKEN #IMPLIED + namespace CDATA #IMPLIED %repeatable; >
*** ../../TR_Core/iso/relaxCore.rxm Sun Sep 9 19:35:39 2001 --- relaxCore.rxm Sun Sep 9 19:31:51 2001 *************** *** 13,18 **** --- 13,20 ---- <interface> <export label="module"/> + <export label="refWithLabel"/> + <export label="hedgeRef"/> </interface> <include moduleLocation="datatypes.rxm"/> *************** *** 49,54 **** --- 51,57 ---- <ref label="annotation" occurs="?"/> <choice occurs="*"> <ref label="export"/> + <ref label="hedgeExport"/> <ref label="divInInterface"/> </choice> </sequence> *************** *** 93,105 **** <documentation>Interface</documentation> </annotation> ! <elementRule role="export"> <ref label="annotation" occurs="?"/> </elementRule> - - <tag name="export"> - <attribute name="label" required="true" type="NCName"/> - </tag> <elementRule label="divInInterface"> <annotation> --- 96,121 ---- <documentation>Interface</documentation> </annotation> ! <elementRule label="export"> ! <tag name="export"> ! <attribute name="label" required="true" type="NCName"/> ! </tag> ! <ref label="annotation" occurs="?"/> ! </elementRule> ! ! <elementRule label="export"> ! <tag name="export"> ! <attribute name="role" required="true" type="NCName"/> ! </tag> ! <ref label="annotation" occurs="?"/> ! </elementRule> ! ! <elementRule label="hedgeExport"> ! <tag name="hedgeExport"> ! <attribute name="label" required="true" type="NCName"/> ! </tag> <ref label="annotation" occurs="?"/> </elementRule> <elementRule label="divInInterface"> <annotation> *************** *** 110,115 **** --- 126,132 ---- <ref label="annotation" occurs="?"/> <choice occurs="*"> <ref label="export"/> + <ref label="hedgeExport"/> <ref label="divInInterface"/> </choice> </sequence> *************** *** 178,183 **** --- 195,201 ---- <tag name="hedgeRef"> <ref role="repeatable"/> <attribute name="label" required="true" type="NCName"/> + <attribute name="namespace" type="anyURI"/> </tag> <elementRule label="refWithLabel" type="emptyString"> *************** *** 187,192 **** --- 205,211 ---- <tag name="ref"> <ref role="repeatable"/> <attribute name="label" required="true" type="NCName"/> + <attribute name="namespace" type="anyURI"/> <attribute name="role" type="none"/> </tag> </elementRule> *************** *** 372,377 **** --- 391,397 ---- </annotation> <tag name="ref"> <attribute name="role" required="true" type="NCName"/> + <attribute name="namespace" type="anyURI"/> <attribute name="label" type="none"/> </tag> </elementRule>
RELAX Core及びRELAX Namespaceを記述するDTDに関する公開識別子及びURIを次のとおり定める