XML-스키마
XML 스키마는 일반적으로 다음과 같이 알려져 있습니다. XML Schema Definition (XSD). XML 데이터의 구조와 내용을 설명하고 유효성을 검사하는 데 사용됩니다. XML 스키마는 요소, 속성 및 데이터 유형을 정의합니다. 스키마 요소는 네임 스페이스를 지원합니다. 데이터베이스의 데이터를 설명하는 데이터베이스 스키마와 유사합니다.
통사론
다음과 같이 XML 문서에 스키마를 선언해야합니다.
예
다음 예제는 스키마를 사용하는 방법을 보여줍니다-
<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
<xs:element name = "contact">
<xs:complexType>
<xs:sequence>
<xs:element name = "name" type = "xs:string" />
<xs:element name = "company" type = "xs:string" />
<xs:element name = "phone" type = "xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML 스키마의 기본 개념은 XML 문서가 취할 수있는 합법적 인 형식을 설명한다는 것입니다.
집단
XML-요소 장 에서 보았 듯이 요소는 XML 문서의 구성 요소입니다. 요소는 다음과 같이 XSD 내에서 정의 할 수 있습니다-
<xs:element name = "x" type = "y"/>
정의 유형
다음과 같은 방법으로 XML 스키마 요소를 정의 할 수 있습니다.
간단한 유형
단순 유형 요소는 텍스트 컨텍스트에서만 사용됩니다. 사전 정의 된 단순 유형 중 일부는 xs : integer, xs : boolean, xs : string, xs : date입니다. 예를 들면-
<xs:element name = "phone_number" type = "xs:int" />
복합 형
복합 유형은 다른 요소 정의를위한 컨테이너입니다. 이를 통해 요소에 포함 할 수있는 하위 요소를 지정하고 XML 문서 내에 일부 구조를 제공 할 수 있습니다. 예를 들면-
<xs:element name = "Address">
<xs:complexType>
<xs:sequence>
<xs:element name = "name" type = "xs:string" />
<xs:element name = "company" type = "xs:string" />
<xs:element name = "phone" type = "xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
위의 예에서 Address 요소는 자식 요소로 구성됩니다. 이것은 다른 용기입니다<xs:element> XML 문서에서 요소의 간단한 계층 구조를 구축 할 수 있습니다.
글로벌 유형
전역 유형을 사용하면 다른 모든 참조에서 사용할 수있는 단일 유형을 문서에 정의 할 수 있습니다. 예를 들어, 회사 의 다른 주소에 대해 개인 과 회사 를 일반화한다고 가정하십시오 . 이 경우 다음과 같이 일반 유형을 정의 할 수 있습니다.
<xs:element name = "AddressType">
<xs:complexType>
<xs:sequence>
<xs:element name = "name" type = "xs:string" />
<xs:element name = "company" type = "xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
이제 다음과 같이 예제에서이 유형을 사용하겠습니다.
<xs:element name = "Address1">
<xs:complexType>
<xs:sequence>
<xs:element name = "address" type = "AddressType" />
<xs:element name = "phone1" type = "xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name = "Address2">
<xs:complexType>
<xs:sequence>
<xs:element name = "address" type = "AddressType" />
<xs:element name = "phone2" type = "xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
이름과 회사를 두 번 ( Address1에 대해 한 번, Address2에 대해 한 번) 정의하는 대신 이제 단일 정의를 갖게됩니다. 이렇게하면 유지 관리가 더 간단 해집니다. 즉, 주소에 "우편 번호"요소를 추가하기로 결정한 경우 한 곳에서만 추가해야합니다.
속성
XSD의 속성은 요소 내에서 추가 정보를 제공합니다. 속성은 아래와 같이 이름 과 유형 속성이 있습니다-
<xs:attribute name = "x" type = "y"/>