Question

Je suis dans le besoin d'un fichier cas type d'énumération de chaîne insensible dans mon schéma XML (.xsd). Je peux obtenir insensible à la casse en procédant comme suit.

<xs:simpleType name="setDigitalPointType">
    <xs:restriction base="xs:string">
        <xs:pattern value="[Oo][Nn]" />
        <xs:pattern value="[Oo][Ff][Ff]" />
    </xs:restriction>
</xs:simpleType>

Le seul problème est que je reçois pas de valeurs d'énumération. Je ne vais pas la belle intellesense lors de l'utilisation de Visual Studio pour écrire mon XML. Ce qui suit va me donner énumérations mais il est sensible à la casse.

<xs:simpleType name="setDigitalPointType">
    <xs:restriction base="xs:string">
        <xs:enumeration value="on" />
        <xs:enumeration value="off" />
    </xs:restriction>
</xs:simpleType>

Cela me donnera mes énumérations mais si je reçois toujours une valeur de « On », « ON », ou « oN », il échouera vérification.

Je veux énumération « sur », « off » et permettre l'entrée de cas des versions insensibles.

Était-ce utile?

La solution

IBM developerWorks a un article sur la façon d'utiliser XSLT pour effectuer la construction de l'ensemble des alternatives d'énumération de façon automatisée. Il est présenté comme une solution à l'absence de énumérations insensibles à la casse.

Autres conseils

Si vous voulez à la fois garder la validation insensible à la casse, tout en obtenant IntelliSense dans Visual Studio 2010, vous pouvez utiliser une 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>

Cela fonctionne parce qu'il exploite le fait que Visual Studio 2010 ne traite que le premier type simple dans une union quand il construit ses données IntelliSense. Cependant, quand il valide un document, il traite à la fois, ce qui signifie « On » est toujours déterminé à être valide même si elle est pas dans la liste des valeurs d'énumération.

Eh bien, vous pouvez simplement énumérer toutes les permutations comme motifs:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top