xs:integer
콘텐츠를 포함하는 하나의 <rate>
요소와 콘텐츠가없는 또 다른 요소 하나만 입력하면됩니다. <rate>
요소는 정수 값을 허용하거나 아무 것도 내용을 허용하지 않습니다.
실제로이는 <xs:union>
요소와 수행 할 수 있습니다
<xs:simpleType name="emptyString">
<xs:restriction base="xs:string">
<xs:maxLength value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="rate">
<xs:simpleType>
<xs:union memberTypes="xs:integer emptyString"/>
</xs:simpleType>
</xs:element>
이 <rate/>
, <rate></rate>
, <rate>42</rate>
(또는 다른 xs:integer
값),하지만 <rate>Hello, World!</rate>
을 받아 들일 것입니다.
이 작업을 수행하려면 스키마의 접두사없는 네임 스페이스를 대상 네임 스페이스와 같게 설정해야합니다. 그렇지 않으면 memberTypes
특성이 발견되지 않습니다. (물론, 대신에 대상 네임 스페이스의 접두어를 정의하여 사용할 수도 있습니다.
maxOccurs
등의 전체 스키마를 작성하는 방법에 대한 설명이 생략되었으므로 당신은 이미 그것을하는 방법을 알고 있습니다. 더 자세한 정보가 필요하면 알려주십시오.
감사합니다. 내가 그것에 대해 생각했지만 더 아름다운 해결책을 찾고 싶다. 스키마로 C++ 코드를 생성 할 것이기 때문이다. – dizel3d
@ dizel3d : 아, 알겠습니다.그렇다면 C++ 코드 생성기가 스키마/유니온을 만드는 데 많이 의존합니다. 이 부분을 직접 작성하면 nullable int와 같은 것으로 표현할 수 있습니다. –