XML fa distinzione tra maiuscole e minuscole?


109

Domanda breve

XML fa distinzione tra maiuscole e minuscole?

Domanda più lunga

Per esempio:

<Shirt color="Red"/>

Il colore attributo è di tipo stringche può contenere un insieme di colori validi ( Red, Bluee Green).

Per convalidare l'XML, ho utilizzato 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 mi aspettavo di accettare diverse varianti di casi di rosso, blu e verde? O XML è ampiamente accettato come case-sensitive?


4
Sì. Una delle prime cose che si impara su XML.
Oded

Risposte:


81

Risposta breve:

Sì, XML fa distinzione tra maiuscole e minuscole.

Risposta più lunga:

È ampiamente accettato come distinzione tra maiuscole e minuscole, tuttavia se si desidera accettare in modo più flessibile, dare un'occhiata alla domanda seguente, che discute di enumerazioni senza distinzione tra maiuscole e minuscole:

Enumerazione senza distinzione tra maiuscole e minuscole dello schema XML di String di tipo semplice


6
Risposta più lunga: non c'è nulla che ti impedisca di scrivere un'applicazione XML che non fa distinzione tra maiuscole e minuscole. Ma non sarebbe previsto o usuale.
Matthew Wilson

17

Con XSD 1.1 è possibile ottenere un'enumerazione senza distinzione tra maiuscole e minuscole utilizzando un'asserzione:

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


Basta essere consapevoli dell'utilizzo di XSD 1.1, al momento è solo una raccomandazione del W3C: Xerces con convalida XSD 1.1 è un artefatto autonomo in stato beta e XSD 1.1 non è supportato da JDK, nemmeno dal più recente 1.8 . Non è nemmeno previsto per JDK 1.9 per quanto ne so. In questo modo non è possibile utilizzare tecnologie XML avanzate come JAXB basato su XSD 1.1 integrato da JDK.
René

Sì, devi essere cauto, ma la risposta di @ René deve essere qualificata. In primo luogo, "solo una raccomandazione del W3C": beh, lo è anche XSD 1.0. "Raccomandazione" è ciò che il W3C chiama una specifica definitiva, definitiva e ratificata. Sì, è vero che attualmente ci sono solo tre implementazioni di XSD 1.1 (Saxon, Xerces e Altova), e questo è un fattore da tenere in considerazione. Ma non lasciarti trattenere da cosa c'è nel JDK - il JDK ha da tempo abbandonato il supporto per gli ultimi standard W3C (ad esempio, non supporta nemmeno XPath 2.0) ma ci sono molte librerie di terze parti per colmare il divario.
Michael Kay

Ovviamente dipende dalla tecnologia utilizzata. Se si implementa l'analisi e il codice di basso livello, è possibile utilizzare una libreria 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: conosci un'implementazione o derivata JAXB di terze parti che utilizza XSD 1.1, generando così classi, ad esempio, utilizzando "alternative"? Comunque, sta a Ian scegliere in base alle sue esigenze.
René
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.