2017-12-11 5 views
0

XSD 1.0에서는 모든 요소에 대해 maxOccurs를 고정하도록 설정할 수 있습니까? 예 :Xml 유효성 검사 - XSD 1.0

<row> 
    <tile /> 
    <tile /> 
</row> 

그런 다음 새 행을 만들려면 정확하게 2 개의 타일이 있어야합니다. 따라서 다음과 같이 표시되어야합니다.

<row> 
    <tile /> 
    <tile /> 
</row> 
<row> 
    <tile /> 
    <tile /> 
</row> 

그러나 무제한으로 만들 수있는 타일을 원합니다. 그러나 그것은 첫 번째 행의 카운트에 고정되어 있습니다. 따라서 첫 번째 행에 5 개의 타일이있는 경우 다른 모든 행에 정확히 5 개의 타일이 있어야합니다.

답변

0

행의 부모, 그들은 모든 타일 같은 수 있어야합니다 대답 :

<xs:assert test="count(distinct-values(row/count(tile))) = 1"/> 

을하지만 당신은 이런 종류의 작업을 수행 할 수 XSD 1.0에있는 것.

+0

XSD 1.1을 사용할 수없는 이유가 있습니다. 그러나 Schematron을 사용하여 이름을 지은 누군가가 방금 사용했던 것을 적용 할 수 있습니까? – Cows42

+0

예, Schematron을 사용하여이 작업을 수행 할 수는 있지만 그 작업을 도와 줄 사람은 아닙니다. (그리고 여기에 묻기 전에 스스로 답을 찾으려고 시도하십시오!) –

0

아니요, 아는 것은 불가능합니다. XSD (1.1)의 다음 버전에서는 Schematron 규칙을 추가 할 수 있습니다.

두 가지 방법으로 유효성 검사를 수행하는 것이 좋습니다. 먼저 스키마를 통과시킵니다. 그 후 Schematron을 사용하여 두 번째 패스를 수행합니다. Schematron에서는 이러한 종류의 것들을 확인할 수 있습니다. 당신이 어떤 요소에 대한 주장을 넣을 수 있습니다 XSD 1.1

+0

'Schematron'을 사용하여 어떻게하고 싶습니까? – Cows42