요소의 값을 설정하는 데 제약이 있습니다. 내가 설정하고 싶은 규칙에 따라, 다음 요소들의 값 집합이 가능합니다.XML 스키마를 통해 요소 그룹의 값 제한
<tags>
<tag>One of Audio, Video, Others.</tag>
<tag>For Audio, either Label or Record, For Video, either Studio or Producer, For Others this tag will be empty.</tag>
<tag>One of English, Spanish, French</tag>
</tags>
지금은 (,)가 일반 텍스트 구분 기호 인 경우 하나의 태그 요소에 대한 내 XSD에서 정규식 패턴 제한을 설정
<element name="tags">
<simpleType>
<restriction base="string">
<pattern value="(Audio, (Label|Record)|Video, (Studio|Producer)|Others), (English|Spanish|French)" />
</restriction>
</simpleType>
</element>
수 있습니다 값을 분리하지만 나는이 있기 때문에 수 있었다 동일한 이름의 tag
요소 시퀀스, 나는 XSD를 통해 그런 식으로 제한하는 것이 가능 할지도 모르겠다. enumeration
을 통해 값을 제한 할 수 있다는 것을 알고 있지만 그 값을 그룹화 할 수는 없습니다. 나는 XML은
<tags>
<tag>Audio</tag>
<tag>Record</tag>
<tag>English</tag>
</tags>
을 검증하기 위해 다음과 검증을 실패 다음 원하는
<tags>
<tag>Others</tag>
<tag>Record</tag>
<tag>English</tag>
</tags>
내 실제 사건은 훨씬 더 복잡 중첩 제한,하지만 난 누군가가 위의 조건에서 도움이 될 수 있습니다, 나는 내가 할 수있는 생각 참조로 받아들이고 내 문제를 해결하십시오.
좋은 답변 - 문제는 언어의 디자인이 스키마 구현이 아니라는 것입니다. 만약 이것이 정말로 필요하다면, schematron이 유일한 해결책 일 것입니다. –
이것은 정말 좋은 대답이었고 나는 똑같이 할 수 있었지만 슬프게도 다른 요소에의 구조를 바꿀 수는 없습니다. XSD를 통해서만 공급 업체로부터 들어오는 XML의 유효성을 검사해야합니다. 그리고 유일한 해결책은 정규식 패턴으로 제한된 구분 된 문자열 요소를 선택하는 것 같습니다 ( 시퀀스가 그런 식으로 제한 될 수없는 경우). –