Pregunta

Estoy en la necesidad de un caso de cadena insensible tipo de enumeración en el archivo de mi esquema XML (.xsd). Puedo conseguir entre mayúsculas y minúsculas mediante el procedimiento siguiente.

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

El único problema es que tengo no hay valores de la enumeración. No voy a conseguir el buen intellesense cuando se utiliza Visual Studio para escribir mi XML. El siguiente me dará enumeraciones pero es sensible a mayúsculas.

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

Esto me dará mis enumeraciones pero si alguna vez recibir un valor de "A", "ON", o "sobre" se producirá un error de verificación.

Quiero enumeración de "on", "off" y permitir la entrada de versiones mayúsculas y minúsculas.

¿Fue útil?

Solución

IBM developerWorks tiene un artículo sobre cómo usar XSLT para realizar la construcción de todo el conjunto de alternativas de enumeración de forma automatizada. Se presenta como una solución a la falta de enumeraciones mayúsculas y minúsculas.

Otros consejos

Si desea mantener tanto la validación de mayúsculas y minúsculas, mientras que sigue recibiendo Intellisense en Visual Studio 2010, puede utilizar una unión:

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

Esto funciona porque explota el hecho de que Visual Studio 2010 sólo procesa el primer tipo simple en una unión cuando se acumula es Intellisense de datos. Sin embargo cuando se valida un documento, que procesa tanto, lo que significa "On" todavía está determinado para ser válida a pesar de que no está en la lista de valores de la enumeración.

Bueno, usted podría enumerar todas las permutaciones como patrones:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top