XMLは大文字と小文字を区別しますか?


109

短い質問

XMLは大文字と小文字を区別しますか?

長い質問

例えば:

<Shirt color="Red"/>

属性colorは、string有効な色(RedBlueおよびGreen)のセットを含むことができるタイプです。

XMLを検証するために、次の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>

赤、青、緑のさまざまなケースのバリエーションを受け入れることを期待されていますか?または、XMLは大文字と小文字を区別するものとして広く受け入れられていますか?


4
はい、そうです。XMLについて最初に学ぶことの1つ。
オデット

回答:


81

短い答え:

はい-XMLでは大文字と小文字が区別されます。

より長い答え:

大文字と小文字を区別するものとして広く受け入れられていますが、より柔軟に受け入れる場合は、以下の質問を参照してください。

XMLスキーマの大文字と小文字を区別しない単純型文字列の列挙


6
より長い答え:大文字小文字を区別しないXMLアプリケーションの作成を止めるものは何もありません。しかし、それは期待されていなかったり、通常ではありません。
マシューウィルソン

17

XSD 1.1では、アサーションを使用して大文字と小文字を区別しない列挙を実現できます。

<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は、SaxonおよびXercesの最近のリリースでサポートされています。


XSD 1.1の使用に注意してください。現時点では、これはW3Cの推奨事項にすぎません-XSD 1.1検証付きのXercesは、ベータ状態のスタンドアロンアーティファクトであり、XSD 1.1は、最新のものでもJDKでもサポートされていません1.8 。私の知る限り、JDK 1.9についても計画されていません。この方法では、JDKに組み込まれているXSD 1.1に基づくJAXBなどの高度なXMLテクノロジを使用できません。
ルネ

はい、注意する必要がありますが、@Renéの回答には資格が必要です。まず、「単なるW3Cの推奨事項」:まあ、XSD 1.0も同様です。「推奨」とは、W3Cが完成した最終的な承認済み仕様と呼ぶものです。はい、XSD 1.1の現在の実装は3つしかない(Saxon、Xerces、およびAltova)のは事実であり、これは考慮すべき要素です。しかし、JDKの内容に拘束されることはありません。JDKは、最新のW3C標準のサポートを長い間断念してきました(たとえば、XPath 2.0もサポートしていません)が、ギャップを埋めるサードパーティのライブラリはたくさんあります。
マイケルケイ

もちろん、使用するテクノロジーによって異なります。低レベルの解析とコードを実装する場合は、サードパーティのパーサーライブラリを使用できます(Xerces for XSD 1.1はまだベータ版ですが、同じXercesバージョンの2つの異なるアーティファクトがあります!)。JAXBの例-@Michael:サードパーティのJAXB実装を知っているか、XSD 1.1を使用して派生しているため、たとえば「代替」を使用してクラスを生成していますか?とにかく、彼のニーズに応じて選択するのはイアンの責任です。
ルネ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.