그것은 W3C 의 XML 스키마어(XSD)을 허용하는 일련의 요소를 어떤 순서로 하지만 여전히 제한이 발생?

StackOverflow https://stackoverflow.com/questions/104248

  •  01-07-2019
  •  | 
  •  

문제

나는에 대해 알 allchoice, 지만,그들은 계정을 하지 않는 경우는 내가 원하는 일부 요소가 될 수 있 이상 발생하면,같은:

<Root>
    <ThingA/>
    <ThingB/>
    <ThingC/>
    <ThingC/>
    <ThingC/>
</Root>

sequence, 하지만 내가 선호하는 것을 허용하는 이 아이들을 어떤 순서로 지정해도 됩니다.용 any, 지만,그때 나는 수 없이 둘 이상의 ThingC.용 choice, 하지만 그 수가 없었을 제한 ThingAThingB 0 또는 1.

을 수 있다고 생각 읽기 어딘가에 이하기 어렵거나 불가능에 XSD 지만,가능할 것으로 휴식을 취 NG.기억나지 않아요 내가 읽는 것도해 보시기 바랍니다.

어떤 도움을 주셔서 감사합니다!

도움이 되었습니까?

해결책

맞:할 수 없습니다 당신이 무엇을 하고 싶 XML 스키마,하지만 당신은에서 할 수 있는 휴식을 취 NG 과:

<element name="Root">
  <interleave>
    <element name="ThingA"><empty /></element>
    <element name="ThingB"><empty /></element>
    <oneOrMore><element name="ThingC"><empty /></element></oneOrMore>
  </interleave>
</element>

귀하의 옵션에서는 XML 스키마습니다:

  • 추가 사전 처리 단계는 normalises 입력 XML 으로 특별한 순서,다음 사용 <xs:sequence>
  • <xs:choice>, 며 추가 유효성 검사(예를 들어 사용 Schematron)을 확인하는 것이지 하나 이상의 <ThingA><ThingB>
  • 결정을 수정하기 위해 요소의 마크업 언어

그것은 그 세 번째는 일반적으로 최고의 옵션;일반적으로있다지 많은 비용 발전기를 위한 XML 을 출력하는 요소에서 특별한 순서,뿐만 아니라 그것이 도움이 되는 유효성 검사하지만 그것은 또한 에이즈의 소비 XML 는 경우가 있기 때문에 사전에 알려져 있다는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top