XML은 대소 문자를 구분합니까?


109

짧은 질문

XML은 대소 문자를 구분합니까?

더 긴 질문

예를 들면 :

<Shirt color="Red"/>

속성은 컬러 타입 인 string유효한 색 (의 세트가 포함될 수 Red, BlueGreen).

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에 대해 가장 먼저 배운 것 중 하나입니다.
Oded

답변:


81

짧은 답변:

예-XML은 대소 문자를 구분합니다.

더 긴 답변 :

대소 문자를 구분하는 것으로 널리 받아 들여지지 만 더 유연하게 받아들이고 싶다면 대소 문자를 구분하지 않는 열거 형에 대해 논의하는 아래 질문을 살펴보십시오.

XML 스키마 대소 문자를 구분하지 않는 단순 유형 문자열 열거


6
더 긴 대답 : 대소 문자를 구분하지 않는 XML 응용 프로그램 작성을 막을 수있는 것은 없습니다. 그러나 그것은 예상되거나 평범하지 않을 것입니다.
Matthew Wilson

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é

예, 조심해야하지만 @ René의 답변에는 자격이 필요합니다. 첫째, "W3C 권장 사항"입니다. 음, XSD 1.0도 마찬가지입니다. "Recommendation"은 W3C가 최종 승인 된 최종 사양이라고 부르는 것입니다. 예, 현재 XSD 1.1 구현은 세 가지 (Saxon, Xerces 및 Altova) 뿐이며 이는 고려해야 할 요소입니다. 그러나 JDK에 포함 된 내용에 얽매이지 마십시오. JDK는 오랫동안 최신 W3C 표준에 대한 지원을 포기했습니다 (예 : XPath 2.0도 지원하지 않음). 그러나 그 격차를 채우기위한 타사 라이브러리가 많이 있습니다.
Michael Kay

물론 사용되는 기술에 따라 다릅니다. 저수준 파싱 및 코드를 구현하는 경우 타사 파서 라이브러리를 사용할 수 있습니다 (XSD 1.1 용 Xerces는 아직 베타 버전이며 동일한 Xerces 버전의 두 가지 아티팩트가 있습니다!). JAXB-@Michael의 예 : 타사 JAXB 구현을 알고 있거나 XSD 1.1을 사용하여 "대안"을 사용하여 클래스를 생성하는 방법을 알고 있습니까? 어쨌든, 그의 필요에 따라 선택하는 것은 Ian에게 있습니다.
René
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.