Bei XML wird zwischen Groß- und Kleinschreibung unterschieden?

109

Kurze Frage

Bei XML wird zwischen Groß- und Kleinschreibung unterschieden?

Längere Frage

Beispielsweise:

<Shirt color="Red"/>

Die Attributfarbe ist vom Typ string, der eine Reihe gültiger Farben ( Red, Blueund Green) enthalten kann.

Zur Validierung des XML habe ich die folgende XSD verwendet:

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

Bin ich erwartete verschiedene Gehäusevarianten von Rot, Blau und Grün zu akzeptieren? Oder wird XML weithin als Groß- und Kleinschreibung akzeptiert?

Ian
quelle
4
Ja, so ist es. Eines der ersten Dinge, die man über XML lernt.
Oded

Antworten:

81

Kurze Antwort:

Ja - XML ​​unterscheidet zwischen Groß- und Kleinschreibung.

Längere Antwort:

Es wird allgemein als Groß- und Kleinschreibung akzeptiert. Wenn Sie jedoch flexibler akzeptieren möchten, werfen Sie einen Blick auf die folgende Frage, in der die Aufzählung ohne Berücksichtigung der Groß- und Kleinschreibung erläutert wird:

XML-Schema Groß- und Kleinschreibung beachten Aufzählung von einfachen Typzeichenfolgen

Jon Egerton
quelle
6
Längere Antwort: Nichts hindert Sie daran, eine XML-Anwendung zu schreiben, bei der die Groß- und Kleinschreibung nicht berücksichtigt wird. Aber es wäre nicht zu erwarten oder üblich.
Matthew Wilson
17

Mit XSD 1.1 können Sie mithilfe einer Behauptung eine Aufzählung ohne Berücksichtigung der Groß- und Kleinschreibung erreichen:

<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 wird in neueren Versionen von Saxon und Xerces unterstützt.

Michael Kay
quelle
Beachten Sie jedoch, dass XSD 1.1 derzeit nur eine W3C-Empfehlung ist. Xerces mit XSD 1.1-Validierung ist ein eigenständiges Artefakt im Beta-Status, und XSD 1.1 wird vom JDK nicht unterstützt, auch nicht von der neuesten Version 1.8 . Soweit ich weiß, ist es nicht einmal für JDK 1.9 geplant. Auf diese Weise können Sie keine fortschrittlichen XML-Technologien wie JAXB verwenden, die auf XSD 1.1 basieren, das vom JDK integriert wurde.
René
Ja, Sie müssen vorsichtig sein, aber die Antwort von @ René muss qualifiziert werden. Erstens "nur eine W3C-Empfehlung": Nun, XSD 1.0 auch. "Empfehlung" nennt W3C eine fertige, endgültige, ratifizierte Spezifikation. Ja, es gibt derzeit nur drei Implementierungen von XSD 1.1 (Saxon, Xerces und Altova), und dies ist ein Faktor, den Sie berücksichtigen sollten. Aber lassen Sie sich nicht von den Inhalten des JDK zurückhalten - das JDK hat die Unterstützung für die neuesten W3C-Standards lange aufgegeben (z. B. unterstützt es nicht einmal XPath 2.0), aber es gibt viele Bibliotheken von Drittanbietern, um diese Lücke zu schließen.
Michael Kay
Das hängt natürlich von der verwendeten Technologie ab. Wenn Sie Parsing und Code auf niedriger Ebene implementieren, können Sie eine Parser-Bibliothek eines Drittanbieters verwenden (Xerces für XSD 1.1 ist noch Beta-Version, es gibt zwei verschiedene Artefakte derselben Xerces-Version!). Für das Beispiel von JAXB - @Michael: Kennen Sie eine JAXB-Implementierung oder ein Derivat eines Drittanbieters, das XSD 1.1 verwendet, um Klassen beispielsweise mithilfe von "Alternativen" zu generieren? Wie auch immer, es liegt an Ian, je nach seinen Bedürfnissen zu wählen.
René