문제

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"이 열거 값 목록에 없더라도 여전히 유효한 것으로 결정됩니다.

글쎄, 당신은 모든 순열을 패턴으로 나열 할 수 있습니다 :)

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