XML 스키마 케이스 간단한 유형 문자열의 무감각 열거
-
21-08-2019 - |
문제
XML 스키마 (.xsd) 파일에 케이스 insensitive String 열거 형식이 필요합니다. 다음을 수행하여 사례를 무의미하게 할 수 있습니다.
<xs:simpleType name="setDigitalPointType">
<xs:restriction base="xs:string">
<xs:pattern value="[Oo][Nn]" />
<xs:pattern value="[Oo][Ff][Ff]" />
</xs:restriction>
</xs:simpleType>
유일한 문제는 열거 값을 얻지 못한다는 것입니다. Visual Studio를 사용하여 XML을 작성할 때 멋진 Intellesense를 얻지 못할 것입니다. 다음은 나에게 열거를 줄 것이지만 사례에 민감하다.
<xs:simpleType name="setDigitalPointType">
<xs:restriction base="xs:string">
<xs:enumeration value="on" />
<xs:enumeration value="off" />
</xs:restriction>
</xs:simpleType>
이것은 나에게 열거를 줄 것이지만 "on", "on"또는 "on"의 값을 받으면 검증이 실패합니다.
나는 "on", "off"의 열거를 원하고 케이스 무감각 버전의 입력을 허용합니다.
해결책
IBM DeveloperWorks가 있습니다 기사 XSLT를 사용하여 자동화 된 방식으로 전체 열거 대안의 구성을 수행하는 방법에 대해. 그것은 사례 감수성 열거의 부족에 대한 해결 방법으로 제시됩니다.
다른 팁
Visual Studio 2010에서 여전히 Intellisense를 얻는 동안 사례에 민감한 검증을 유지하려면 Union을 사용할 수 있습니다.
<xs:simpleType name="setDigitalPointType">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="on" />
<xs:enumeration value="off" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[Oo][Nn]" />
<xs:pattern value="[Oo][Ff][Ff]" />
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
이것은 Visual Studio 2010이 Intellisense 데이터를 구축 할 때 Union에서 첫 번째 간단한 유형 만 처리한다는 사실을 악용하기 때문에 작동합니다. 그러나 문서를 검증하면 두 가지를 처리합니다. 즉, "ON"이 열거 값 목록에 없더라도 여전히 유효한 것으로 결정됩니다.
글쎄, 당신은 모든 순열을 패턴으로 나열 할 수 있습니다 :)
제휴하지 않습니다 StackOverflow