附属書E. RELAX Namespaceと併用するためのRELAX Coreへの変更

RELAX Namespaceと併用するためには,RELAX Coreに次に示す変更が必要になる。

a) interface要素にhedgeExport要素を追加

hedgeExportは,label属性をもつ。

	    label   NMTOKEN     #REQUIRED

label属性の値は,hedgeRuleで記述されたラベルとする。このhedgeRuleが記述する要素生け垣モデルに,複数の要素を含む列がマッチしてはならない。

備考 分割検証を容易にするためにこの制限を導入する。

b) export要素にrole属性を追加

exportのlabel属性及びrole属性のどちらか一方は必須とする。両方を指定してはならない。

	    label   NMTOKEN     #IMPLIED
	    role    NMTOKEN     #IMPLIED

label属性の場合は,elementRuleで記述されたラベルを参照する。role属性の場合はattPoolで記述された役割を参照する。tagで記述された役割を指定してはならない。

c) hedgeRef, ref要素にnamespace属性を追加

次のnamespace属性をhedgeRef, ref要素に追加する。

	 namespace CDATA #IMPLIED

namespace属性によって名前空間を指定したときは,その名前空間を記述するモジュールがexportするhedgeRule, elementRuleを参照する。

d) moduleのtargetNamespace属性

moduleのtargetNamespace属性が省略されているときの解釈を変更する。他のmoduleのinclude要素から参照されてはいないが,あるframeworkの namespace 要素から参照されているとき,このnamespace要素のname属性の値をtargetNamespace属性の値として用いる。frameworkからも参照されていないときは,""を用いる。

e) RELAX Coreを記述するDTD(ISO/IEC TR 22250-1のAnnex A)への変更

*** ../../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;
  >

f) RELAX Coreを記述するモジュール(ISO/IEC TR 22250-1のAnnex B)への変更

*** ../../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>

g) DTDのための公開識別子及びURI

RELAX Core及びRELAX Namespaceを記述するDTDに関する公開識別子及びURIを次のとおり定める