2012-11-16 1 views
0

Relax NG의 요소 내용에 전혀 제한이 없다는 것을 쓸 수있는 방법이 있습니까? 이 같은Relax NG에서 "anything goes"을 쓰려면?

XML 스키마에서

어떤이의의 상당 NG를 진정 내가 할 수있는

<xs:sequence> 
    <xs:any namespace="##targetNamespace" processContents="lax" 
     minOccurs="0" maxOccurs="unbounded"/> 
</xs:sequence> 

와 분명히 가능하다?

답변

1

나는 특성 및 요소 선언을 분할하고 혼합 콘텐츠를 허용 mixed 요소를 사용하여,이 용액을 제안한다. 징 파서에 의해 밝혀 솔루션에 문제가있다

<?xml version="1.0" encoding="UTF-8"?> 
<grammar xmlns="http://relaxng.org/ns/structure/1.0"> 
    <start> 
     <ref name="anyElement"/> 
    </start> 
    <define name="anyElement"> 
     <element> 
      <anyName/> 
      <ref name="anyAttributes"/> 
      <mixed> 
       <zeroOrMore> 
        <ref name="anyElement"/> 
       </zeroOrMore> 
      </mixed> 
     </element> 
    </define> 
    <define name="anyAttributes"> 
     <zeroOrMore> 
      <attribute> 
       <anyName/> 
      </attribute> 
     </zeroOrMore> 
    </define> 
</grammar> 
0

그래,이게 최선의 방법인지는 모르겠지만 Relax NG 사양의 "any"정의에서 이것을 적용했다.

<?xml version="1.0" encoding="UTF-8"?> 
<grammar xmlns="http://relaxng.org/ns/structure/1.0" 
    xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" 
    datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> 
    <start> 
     <ref name="Anything"/> 
    </start> 
    <define name="Anything"> 
     <zeroOrMore> 
      <choice> 
       <element> 
        <anyName/> 
        <ref name="Anything"/> 
       </element> 
       <attribute> 
        <anyName/> 
       </attribute> 
       <text/> 
      </choice> 
     </zeroOrMore> 
    </define> 
</grammar> 
+1

: "발견 요소 // oneOrMore 스키마의 단순화 된 XML 형태를합니다 (RELAX NG 사양의 7.1 절 참조)을 시작 금지 된 경로를 일치가" –

관련 문제