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"/>