Domanda

Ho bisogno di un caso stringa insensibile tipo di censimento nel file di mio schema XML (XSD). Posso ottenere case insensitive facendo quanto segue.

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

L'unico problema è che non ottengo valori di enumerazione. Non voglio entrare la bella intellesense quando si utilizza Visual Studio per scrivere il mio XML. Di seguito mi darà enumerazioni ma è case sensitive.

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

Questo mi darà i miei enumerazioni ma se mai ricevere un valore di "On", "ON", o "on" fallirà verifica.

Voglio enumerazione di "on", "off" e consentire l'ingresso di casi versioni insensibili.

È stato utile?

Soluzione

IBM developerWorks ha un articolo su come utilizzare XSLT per effettuare la costruzione del set completo di alternative enumerazione in modo automatico. Si presenta come una soluzione alla mancanza di enumerazioni case-insensitive.

Altri suggerimenti

Se si vuole mantenere la validazione sia maiuscole e minuscole, mentre ancora ottenere IntelliSense in Visual Studio 2010, è possibile utilizzare un sindacato:

<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>

Questo funziona perché sfrutta il fatto che Visual Studio 2010 elabora solo il primo tipo semplice in un'unione quando si costruisce è dati Intellisense. Tuttavia quando si convalida un documento, elabora entrambi, che significa "On" è ancora determinato a essere valida anche se non è nella lista dei valori di enumerazione.

Bene, si può solo elencare tutte le permutazioni come modelli:)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top