2011-09-14 14 views
86

breve domandaXML è sensibile al maiuscolo/minuscolo?

è XML maiuscole e minuscole?

Longer domanda

Ad esempio:

<Shirt color="Red"/> 

Il colore attributo è di tipo string che può contenere una serie di colori validi (Red, Blue e Green).

Per convalidare il XML, ho usato il seguente XSD:

<xs:simpleType name="ColorType"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="Red"/> 
     <xs:enumeration value="Blue"/> 
     <xs:enumeration value="Green"/> 
    </xs:restriction> 
    </xs:simpleType> 

Am I prevede di accettare diverse varianti di casi di rosso, blu e verde? Oppure XML è ampiamente accettato come sensibile alle maiuscole e minuscole?

+3

Sì, lo è. Una delle prime cose che si impara su XML. – Oded

risposta

67

Risposta breve:

Sì - XML ​​è case sensitive. Risposta

più lunga:

È ampiamente accettato come maiuscole e minuscole, se si desidera accettare in modo più flessibile, dare un'occhiata alla domanda qui sotto, che discute con enumerazioni case-insensitive:

XML Schema Case Insensitive Enumeration of Simple Type String

+5

Risposta più lunga: non c'è niente che impedisca di scrivere un'applicazione XML che non fa distinzione tra maiuscole e minuscole. Ma non sarebbe previsto o al solito. –

13

Con XSD 1.1 è possibile ottenere un'enumerazione case-insensitive con un'affermazione:

<xs:simpleType name="RGB"> 
    <xs:restriction base="xs:string"> 
    <xs:assert test="lower-case($value) = ('red', 'green', 'blue')"/> 
    </xs:restriction> 
</xs:simpleType> 

XSD 1.1 è supportato nelle versioni recenti di Saxon e Xerces.

+0

Basta essere consapevoli dell'utilizzo di XSD 1.1, al momento attuale è solo una raccomandazione W3C - Xerces con XSD 1.1 convalida è un artefatto autonomo in stato beta e XSD 1.1 non è supportato da JDK, nemmeno da quello più recente 1.8. Non è nemmeno pianificato per JDK 1.9 per quanto ne so. Non è possibile utilizzare tecnologie XML avanzate come JAXB basate su XSD 1.1 integrato da JDK in questo modo. –

+0

Sì, devi essere cauto, ma la risposta di @René richiede una qualifica. In primo luogo, "solo una raccomandazione W3C": bene, così è XSD 1.0. "Raccomandazione" è ciò che W3C definisce una specifica finale, ratificata e ratificata. Sì, è vero che ci sono solo tre implementazioni di XSD 1.1 attualmente (Saxon, Xerces e Altova), e questo è un fattore da tenere in considerazione. Ma non essere trattenuto da ciò che c'è nel JDK - il JDK ha abbandonato da tempo il supporto per gli ultimi standard W3C (per esempio non supporta nemmeno XPath 2.0) ma ci sono un sacco di librerie di terze parti per colmare il divario. –

+0

Ovviamente dipende dalla tecnologia utilizzata. Se si implementa l'analisi e il codice di basso livello, è possibile utilizzare una libreria di parser di terze parti (Xerces per XSD 1.1 è ancora beta, ci sono due diversi artefatti della stessa versione di Xerces!). Per l'esempio di JAXB - @ Michael: Conoscete un'implementazione JAXB di terze parti o derivate facendo uso di XSD 1.1, quindi, generando classi ad esempio usando "alternative"? Comunque, è su Ian scegliere in base alle sue esigenze. –

Problemi correlati