XML 스키마(W3C)

XML Schema (W3C)
XML 스키마(W3C)
파일 이름 확장명
.xsd
인터넷 미디어 유형
application/xml, text/xml
개발자월드 와이드 웹 컨소시엄
형식 유형XML 스키마 언어
연장 위치XML
표준1.0, Part 1 Structures(권장)

1.0, Part 2 데이터 유형(권장)
1.1, Part 1 Structures(권장)

1.1, Part 2 데이터 유형(권장)

월드 와이드 웹 컨소시엄(W3C)의 권고사항인 XSD(XML Schema Definition)는 XML(Extensible Markup Language) 문서에 요소를 공식적으로 설명하는 방법을 명시한다.그것은 프로그래머에 의해 문서의 각 항목 내용을 검증하고, 그것이 배치되는 요소의 설명을 준수하도록 하기 위해 사용될 수 있다.[1]

모든 XML 스키마 언어와 마찬가지로, XSD는 XML 문서가 해당 스키마에 따라 "유효한" 것으로 간주되어야 하는 규칙 집합을 표현하는 데 사용될 수 있다.그러나, 대부분의 다른 스키마 언어와 달리, XSD는 문서의 유효성을 판단하면 특정 데이터 유형에 따르는 정보의 컬렉션을 생성한다는 목적으로 설계되었다.그러한 사후 검증 인포셋은 XML 문서 처리 소프트웨어 개발에 유용할 수 있다.

역사

2001년 5월에 W3C 권장사항으로 출판된 XML 스키마는 여러 XML 스키마 언어 중 하나이다.[2]XML이 W3C에 의해 추천 지위를 획득한 최초의 별개의 스키마 언어였다.특정 W3C 규격으로서의 XML 스키마와의 혼동, 스키마 언어를 일반적으로 기술하기 위한 동일 용어의 사용으로 인해 사용자 커뮤니티의 일부에서는 이 언어를 W3C XML 스키마의 초기설인 WXS라고 지칭했고, 다른 일부는 XML 스키마 정의의 초기설인 XSD라고 지칭했다.[3][4]버전 1.1에서 W3C는 XSD를 선호하는 이름으로 채택하기로 선택했으며, 그것이 이 문서에서 사용된 이름이다.

참고문헌 부록에서 XSD 규격은 DTDDDML, SOX, XML-Data, XDR과 같은 다른 초기 XML 스키마 노력의 영향을 인정한다.그것은 각각의 제안에서 특징을 채택했지만 그것들 사이의 타협이기도 하다.이 중 XDR과 SOX는 XML 스키마가 발행된 후 한동안 계속 사용 및 지원되었다.2006년 12월 MSXML 6.0(XDR을 XML 스키마에 유리하게 떨어뜨린 것)이 출시될 때까지 다수의 마이크로소프트 제품이 XDR을 지원했다.[5]커머스원은 2004년 말 파산 선언을 하기 전까지 SOX 스키마 언어를 지원했다.

XML의 기본 DTD(Document Type Definitions)에서는 사용할 수 없는 XSD에서 제공하는 가장 분명한 특징은 네임스페이스 인식 및 데이터 유형, 즉 요소와 속성 콘텐츠를 임의 텍스트가 아닌 정수 및 날짜와 같은 값을 포함하는 것으로 정의하는 기능이다.

XSD 1.0 사양은 원래 2001년에 발표되었으며, 2004년에 이어 2판이 발표되어 많은 오류를 수정하였다.XSD 1.1은 2012년 4월W3C 권고안이 되었다.

스키마 및 스키마 문서

기술적으로 스키마는 주로 요소와 속성 선언, 복잡하고 단순한 유형 정의 등 스키마 구성요소의 집합으로 구성된 메타데이터의 추상적인 집합이다.이러한 구성요소는 일반적으로 스키마 문서의 모음을 처리하여 생성되는데, 여기에는 이러한 구성요소의 소스 언어 정의가 포함되어 있다.그러나 일반적으로 사용되는 스키마 문서에서는 스키마 문서를 스키마라고 부르기도 한다.

스키마 문서는 네임스페이스별로 구성된다. 명명된 스키마 구성요소는 모두 대상 네임스페이스에 속하며, 대상 네임스페이스는 스키마 문서 전체의 속성이다.스키마 문서는 동일한 네임스페이스에 대한 다른 스키마 문서를 포함할 수 있으며, 다른 네임스페이스에 대한 스키마 문서를 가져올 수 있다.

인스턴스 문서가 스키마(평가라고 하는 프로세스)에 대해 검증될 때, 유효성 검사에 사용되는 스키마는 유효성 검사 엔진에 매개 변수로 제공되거나, 두 가지 특수 속성을 사용하여 인스턴스 문서에서 직접 참조될 수 있다.xsi:schemaLocation그리고xsi:noNamespaceSchemaLocation(후자 메커니즘은 클라이언트가 문서를 충분히 신뢰할 수 있도록 유효성 검사를 호출하여 올바른 스키마에 대해 유효성 검사를 수행 중임을 알도록 요구한다."xsi"는 네임스페이스 "http://www.w3.org/2001/XMLSchema-instance"의 일반적인 접두사 입니다.

XML 스키마 문서에는 일반적으로 파일 이름 확장명이 ".xsd"로 되어 있다.고유한 인터넷 미디어 유형은 아직 XSD에 등록되지 않았으므로 RFC 3023에 따라 "응용프로그램/xml" 또는 "text/xml"을 사용해야 한다.

스키마 구성요소

스키마의 주요 구성요소는 다음과 같다.

  • 요소의 속성을 정의하는 요소 선언.여기에는 요소 이름과 대상 네임스페이스가 포함된다.중요한 속성은 원소의 유형으로, 원소가 가질 수 있는 속성과 자식을 구속한다.XSD 1.1에서 요소의 유형은 해당 속성의 값에 따라 달라질 수 있다.요소는 대체 그룹에 속할 수 있다. 요소 E가 요소 H의 대체 그룹에 속할 경우 스키마가 H의 출현을 허용하는 경우, E는 그 위치에 나타날 수 있다.요소에는 무결성 제약조건이 있을 수 있다. 특정 값이 요소에 뿌리를 둔 하위 트리 내에서 고유해야 한다는 고유성 제약조건과 값이 다른 요소의 식별자와 일치해야 한다는 참조 제약조건이 있다.요소 선언은 전역 또는 로컬일 수 있으며, 인스턴스 문서의 다른 부분에 있는 관련 없는 요소에 동일한 이름을 사용할 수 있다.
  • 속성의 속성을 정의하는 속성 선언.다시 속성에는 속성 이름과 대상 네임스페이스가 포함된다.속성 유형은 속성이 취할 수 있는 값을 구속한다.속성 선언에는 기본값 또는 고정 값(이 경우 속성이 취할 수 있는 유일한 값)도 포함될 수 있다.
  • 단순하고 복잡한 유형.이것들은 다음 절에 설명되어 있다.
  • 모델 그룹특성 그룹 정의.이것들은 본질적으로 매크로(macro)이다: 많은 다른 유형의 정의에서 재사용될 수 있는 요소와 속성의 명명된 그룹이다.
  • 속성 사용은 복합 유형과 속성 선언의 관계를 나타내며, 속성이 해당 유형에서 사용될 때 필수인지 또는 선택적인지 여부를 나타낸다.
  • 원소 입자는 유사하게 복합형식과 원소선언의 관계를 나타내며, 원소가 내용에 나타날 수 있는 최소 횟수와 최대 횟수를 나타낸다.요소 입자뿐만 아니라, 내용 모델도 모델 그룹 입자를 포함할 수 있는데, 이것은 문법에서 비단어처럼 작용한다: 그들은 허용된 요소의 순서 내에서 선택과 반복 단위를 정의한다.또한 와일드카드 입자가 허용되며, 이는 다른 요소 집합(아마도 특정 네임스페이스에 있는 경우 어떤 요소라도 가능)을 허용한다.

그 외 보다 전문화된 요소로는 주석, 주장, 표기, 스키마 전체에 대한 정보를 포함하는 스키마 구성요소가 있다.

종류들

단순 유형(데이터 유형이라고도 함)은 요소 또는 속성에 나타날 수 있는 텍스트 값을 제한한다.이는 XML 스키마가 DTD와 다른 중요한 방법 중 하나이다.예를 들어, 속성은 유효한 날짜 또는 소수만 보유하도록 제한될 수 있다.

XSD는 19가지 원시 데이터 유형을 제공한다.anyURI,base64Binary,boolean,date,dateTime,decimal,double,duration,float,hexBinary,gDay,gMonth,gMonthDay,gYear,gYearMonth,NOTATION,QName,string그리고time). 다음과 같은 세 가지 메커니즘에 의해 이러한 원시 요소로부터 새로운 데이터 유형을 구성할 수 있다.

  • 제한(허용된 값 집합 제한)
  • (값의 시퀀스를 나열함) 및
  • 결합(여러 유형의 값 선택 가능).

25개의 파생형은 규격 자체 내에서 정의되며, 추가 파생형은 사용자가 자신의 스키마에서 정의할 수 있다.

데이터 유형을 제한하는 데 사용할 수 있는 메커니즘에는 최소값과 최대값을 지정할 수 있는 기능, 정규식, 문자열 길이에 대한 제약, 소수값의 자릿수 제약 등이 있다.XSD 1.1은 XPath 2.0 식을 통해 임의의 제약조건을 지정할 수 있는 기능인 주장을 다시 추가한다.

복합형식은 요소와 텍스트 하위 요소 및 속성을 포함하여 요소의 허용되는 내용을 설명한다.복합형 정의는 속성 사용 집합과 내용 모델로 구성된다.다양한 콘텐츠 모델:

  • 텍스트가 나타나지 않는 요소 전용 내용(공백 또는 하위 요소로 둘러싸인 텍스트 제외)
  • 텍스트는 허용되지만 하위 요소는 허용되지 않는 단순 내용
  • 텍스트나 하위 요소가 모두 허용되지 않는 빈 내용
  • 요소와 텍스트를 모두 표시할 수 있는 혼합 내용

복합형태는 제한(기본형에서 허용하는 일부 요소, 속성 또는 값을 허용하지 않음) 또는 확장(추가 속성 및 요소 표시 허용)에 의해 다른 복합형에서 파생될 수 있다.XSD 1.1에서 복잡한 형식은 주장—참으로 평가해야 하는 내용에 대해 평가된 XPath 2.0 표현에 의해 제약될 수 있다.

사후 Schema-Validation Infoset

XML 스키마 기반 유효성 검사 후 유효성 검사 중 암시적이었던 데이터 모델 측면에서 XML 문서의 구조와 내용을 표현할 수 있다.XML 스키마 데이터 모델에는 다음이 포함된다.

  • 어휘(요소 및 속성 이름)
  • 내용 모델(관계 및 구조)
  • 데이터 유형

이러한 정보 모음을 PSVI(Post-Schema-Validation Infoset)라고 한다.PSVI는 유효한 XML 문서에 "유형"을 부여하고, 객체 지향 프로그래밍(OOP) 패러다임을 사용하여 문서를 객체로서 취급하는 것을 용이하게 한다.

XML 스키마에 대한 보조 용도

XML 스키마를 정의하는 주된 이유는 XML 문서를 공식적으로 설명하기 위함이다. 그러나 결과 스키마는 단순한 유효성 검사를 넘어서는 많은 다른 용도를 가지고 있다.

코드 생성

스키마는 XML 데이터 바인딩이라고 하는 코드를 생성하는 데 사용될 수 있다.이 코드는 XML 문서의 내용을 프로그래밍 환경 내에서 객체로 취급할 수 있도록 한다.

XML 파일 구조 문서 생성

스키마는 XML 파일 구조의 사람이 읽을 수 있는 문서를 생성하는 데 사용될 수 있다. 이는 특히 저자가 주석 요소를 사용한 경우에 유용하다.문서 생성에 대한 공식적인 표준은 존재하지 않지만, Xs3p 스타일시트와 같이 고품질의 읽기 가능한 HTML과 인쇄 재료를 생산하는 많은 도구를 사용할 수 있다.

비판

XML 스키마는 널리 채택되어 왔고, 그것이 시작했던 것을 대부분 달성했다는 점에서 성공적이기는 하지만, 아마도 다른 어떤 W3C 권고안보다 훨씬 더 심한 혹평의 대상이 되어 왔다.비판의 좋은 요약은 제임스 클라크,[6] 앤더스 뮐러, 마이클 [7]슈워츠바흐[8], 릭 젤리프, 데이비드 웨버에 의해 제공된다.[9]

일반적인 문제:

  • 너무 복잡해서(규격은 매우 기술적인 언어로 수백 페이지) 비전문가가 사용하기 어렵지만, 많은 비전문가들은 데이터 형식을 설명하는 스키마가 필요하다.W3C 권고안 자체는 읽기 매우 어렵다.대부분의 사용자는 W3Cs XML 스키마 프라이머를 훨씬 쉽게 이해할 수 있다.
  • XSD는 어떤 형식적인 수학적 명세서가 결여되어 있다.(이러므로 스키마 수정이 역호환성이라는 것을 증명하기 위해 스키마에 대한 추론을 하기가 어렵다.)
  • 예를 들어 요소 제한은 속성의 제한과 다르게 작용한다는 점에서 언어에는 많은 놀라운 점이 있다.

표현성의 실질적인 한계:

  • XSD는 주문되지 않은 콘텐츠에 대해 매우 약한 지원을 제공한다.
  • XSD는 특정 루트 요소를 요구할 수 없다(그래서 가장 간단한 문서라도 검증하려면 추가 정보가 필요하다).
  • 혼합된 내용을 설명할 때 문자 데이터는 어떤 식으로든 제약될 수 없다(유효한 문자 집합도 지정할 수 없다).
  • 내용속성 선언은 속성이나 요소 컨텍스트에 의존할 수 없다(이 또한 DTD의 중심 문제로 나열되었다).
  • 초기 설계 요건이었음에도 불구하고 100% 자기 설명(사소한 예로서, 이전 점을 참조)은 아니다.
  • 기본값은 선언과 별도로 지정할 수 없으며(이 때문에 기본값이 다를 뿐 스키마의 패밀리를 만들기 어렵다), 요소 기본값은 문자 데이터(마크업을 포함하지 않음)만 될 수 있다.

기술적 문제:

  • 기술적으로는 네임스페이스에 부합하지만 네임스페이스 정신(예: "자격 없는 현지인")을 따르지 않는 것 같다.
  • XSD 1.0은 한 속성의 값이나 존재가 다른 속성의 값이나 존재에 의존한다고 명시할 수 있는 어떤 기능도 제공하지 않았다.이것은 XSD 1.1에서 고쳐졌다.
  • 제공되는 XSD 데이터 유형 집합은 매우 임의적이다.[10]
  • 유효성 확인과 확대(유형 정보와 기본값 추가)의 두 가지 작업은 별도로 유지해야 한다.

버전 1.1

XSD 1.1은 2012년 4월W3C 권장사항이 되었으며 이는 승인된 W3C 규격임을 의미한다.

XSD 1.1의 새로운 주요 기능은 다음과 같다.

  • XPath 2.0 표현식(Schematron에서 차용한 아이디어)을 통해 문서 내용에 대한 주장을 정의할 수 있는 능력.
  • 요소의 속성 값("조건 유형 할당")에 따라 요소의 유효성을 확인할 유형을 선택하는 기능.
  • 내용 모델의 명시적 요소가 모델에서 허용하는 와일드카드와 일치하지 않아야 하는 규칙을 완화한다.
  • 스키마의 모든 유형에 적용되는 와일드카드(요소와 속성 모두에 대해)를 지정하여 모두 동일한 확장성 정책을 구현하는 기능.

제안된 권고안 초안까지, XSD 1.1은 새로운 숫자 데이터 유형인 정밀도Decimal의 추가를 제안하였다.이것은 논란이 되었고, 따라서 개발 후기의 규격에서 삭제되었다.

참고 항목

참조

  1. ^ "Definition XSD(XML 스키마 정의)"TechTarget, 2014년 6월 10일 검색
  2. ^ "XML and Semantic Web W3C Standards Timeline" (PDF). 2012-02-04.
  3. ^ 스키마 - W3C 참조
  4. ^ W3C XML XSD(Schema Definition Language) 1.1 Part 1: Structures 참조
  5. ^ "Removal of XDR Schema Support in MSXML 6.0". Retrieved 2010-09-19.
  6. ^ James Clark 요약 XML 스키마 비판 및 REACE NG의 대안으로 홍보 https://web.archive.org/web/20150316212413/http://www.imc.org/ietf-xml-use/mail-archive/msg00217.html
  7. ^ 안데르스 뮐러와 마이클 1세.슈워츠바흐는 "XML 스키마가 있는 문제", http://cs.au.dk/~amoeller/XML/schemas/xmlschema-problems.html을 제시한다.
  8. ^ 2009년 5월 릭 젤리프 비평 broadcast.oreilly.com/2009/05/w3c-please-put-xsd-11-on-hold.html://broadcast.oreilly.com/2009/05/w3c-please-put-xsd-11-on-hold.html
  9. ^ 2008년 8월의 David Webber OASIS 비교 및 통찰력 백서, http://www.oasis-open.org/committees/download.php/29164/White%20Paper%20on%20CAM%20and%20XSD.pdf
  10. ^ 이 점은 우슈 오그부지 모어가 XML 계급전쟁에 대해 증폭시킨 것이다 - 오라일리 ONLAMP 블로그

추가 읽기

외부 링크

W3C XML 스키마 1.0 규격

W3C XML 스키마 1.1 규격

기타