2012-08-07 2 views
0

나는 문서를 다음과 같이 있습니다스키마가 네임 스페이스에 대한 유효성 검사를 완료하는 데 완료되지 않았습니까?

<grammar xmlns="http://relaxng.org/ns/structure/1.0"> 
    <start> 
     <element name="block" ns="D"> 
      <attribute name="name"/> 
      <element name="description"> 
       <text/> 
      </element> 
      <element name="sample"> 
       <ref name="anything"/> 
      </element> 
     </element> 
    </start> 
    <define name="anything"> 
     <element> 
      <anyName> 
       <except> 
        <nsName ns="D"/> 
       </except> 
      </anyName> 
      <zeroOrMore> 
       <choice> 
        <attribute> 
         <anyName/> 
        </attribute> 
        <text/> 
        <ref name="anything"/> 
       </choice> 
      </zeroOrMore> 
     </element> 
    </define> 
</grammar> 

"뭐든지"문자 그대로 D-네임 스페이스하지만 아무것도 의미 :이 문서

<d:block xmlns:d="D" xmlns:b="B" xmlns="default" name="popover"> 
    <d:description>...</d:description> 
    <d:sample> 
    <b:popover> 
     ...some b:stuff... 
    </b:popover> 
    </d:sample> 
</d:block> 

스키마처럼 보인다.

그리고 B : namespace를 포함하는 임의의 XML에 대해 사용하기 위해 B 네임 스페이스에 대한 다른 스키마를 만들고 싶습니다.

전체 문서가 아닌 네임 스페이스에 대한 스키마를 만드는 방법은 무엇입니까?

얻을 수 없습니다.

답변

0

그런 종류의 스키마가 작동해야합니다. BElements이라는 define 요소에 B 네임 스페이스의 요소를 정의하기 만하면됩니다.

<grammar xmlns="http://relaxng.org/ns/structure/1.0"> 
    <start> 
     <ref name="anythingOrB"/> 
    </start> 
    <define name="anythingOrB"> 
     <choice> 
      <ref name="BElements"/> 
      <ref name="anythingExceptB"/> 
     </choice> 
    </define> 
    <define name="anythingExceptB"> 
     <element> 
      <anyName> 
       <except> 
        <nsName ns="B"/> 
       </except> 
      </anyName> 
      <zeroOrMore> 
       <choice> 
        <attribute> 
         <anyName/> 
        </attribute> 
        <text/> 
        <ref name="anythingOrB"/> 
       </choice> 
      </zeroOrMore> 
     </element>  
    </define> 
    <define name="BElements"> 
     <choice> 
      <element name="elt1" ns="B"> 
       <empty/> 
      </element> 
      <element name="elt2" ns="B"> 
       <empty/> 
      </element> 
     </choice> 
    </define> 
</grammar>