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を次のとおり定める