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


109

짧은 질문

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

더 긴 질문

예를 들면 :

<Shirt color="Red"/>

속성은 컬러 타입 인 string유효한 색 (의 세트가 포함될 수 Red, Blue및 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에 대해 가장 먼저 배운 것 중 하나입니다.
— 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.