XML의 스키마 코드에 대한 자세한 소개(그림)

黄舟
풀어 주다: 2017-03-10 19:19:22
원래의
1607명이 탐색했습니다.

XML에는 DTD보다 더 강력하게 요소 구조를 도입할 수 있는 Schema 기능이 있습니다. XML에서 스키마의 개념과 기능, 사용법을 자세히 설명하려면

문서 정의를 참조하세요. 모델은 XML 문서에 대한 사양을 제공하지만 DTD의 도입으로 XML 문서의 표준화 문제가 해결되었음에도 불구하고 해당 파일 형식은 XML 파일 형식 형식과 일치하지 않습니다. 동시에 DTD에서 제공하는 데이터 형식은 제한되어 있으며 때로는 충족할 수 없습니다. 업계의 요구에 맞춰 스키마를 도입합니다. 스키마 모드는 범위, 열거 및 스타일 일치에 따라 XML 문서의 요소 및 속성 구조, 요소 순서, 요소 및 속성의 데이터 값을 결정할 수 있습니다.
XML의 스키마 코드에 대한 자세한 소개(그림)

1. 스키마 첫 소개

XML 스키마 언어는 XML 스키마 정의(XSD)라고도 합니다. DTD와 마찬가지로 XML 문서(XML 문서의 구조)의 법적 구성 요소 그룹입니다. XML 스키마는 XML 언어를 기반으로 하며 XML 스키마 자체가 XML의 응용이라고 할 수도 있습니다.

1. 스키마의 역할

XML 스키마는 DTD와 동일한 역할을 하는데 둘 다 XML 문서의 구조를 정의하는 데 사용됩니다. DTD가 필요합니까? XML 스키마는 어떻습니까? XML 스키마가 DTD보다 강력하기 때문입니다.

DTD에 비해 Xml 스키마의 장점:
(1) 스키마는 확장 가능합니다.
(2) 스키마는 DTD보다 풍부하고 유용합니다.
(3) 스키마는 XML Written을 사용합니다.
(4) 스키마는 데이터 유형을 지원합니다
(5) 스키마는 네임스페이스를 지원합니다
(6) 다른 언어를 배울 필요가 없습니다.
(7) XML 편집기를 사용하여 XML 스키마를 직접 작성할 수 있습니다
(8) XML 파서를 사용하여 XML 스키마를 직접 구문 분석할 수 있습니다
(9) XML DOM을 사용하여 XML 스키마를 유연하게 운영할 수 있습니다
(10) XSLT 기술을 사용하여 XML 스키마를 변환할 수 있습니다

2. 비교 학습

1.1 기능적으로

은 동일하며 둘 다 XML 문서의 구조를 정의하는 패턴입니다.

1.2 사용법

둘 다 동일한 기능을 갖고 있지만 구문에 약간의 차이가 있습니다. 스키마는 DTD의 확장이며 정의 구문도 유사합니다. 그러나 스키마는 요소 및 속성에 해당 데이터 유형을 추가할 수도 있습니다. 또한 요소와 속성에 따라 데이터 내용에는 단순 유형과 복합 유형이 소개됩니다.
소위 단순 유형(SimpleType)과 복합 유형(ComplexType)은 그 자체로 특정 데이터 유형이 아니며 노드 유형이나 사용자 정의 유형에 대한 추상적인 설명일 뿐입니다.

즉, 스키마의 도입으로 패턴 선언이 우리가 사용하는 프로그래밍 언어와 더욱 유사해졌습니다.

2. 예제에 대한 자세한 설명

2.1 스키마 예제

목록 1: User.xml 문서 구조

XML/HTML Code复制内容到剪贴板
<?xml version="1.0"?>
<用户列表>
    <用户>
         <用户名>xx</用户名>
         <密码>123456</密码>
         <用户类型>1</用户类型>
   </用户>
</用户列表>
로그인 후 복사


목록 2: 전역 구성 요소 형식 사용 스키마 정의, User.xsd

XML/HTML Code复制内容到剪贴板
<!-- 使用全局组件形式定义 -->
<?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?>
<xs:schema xmlns:xs=&#39;http://www.w3.org/2001/XMLSchema&#39; elementFormDefault=&#39;qualified&#39; attributeFormDefualt=&#39;unqualified&#39;>
 <xs:element name=&#39;用户列表&#39; type=&#39;userlist&#39;/>
 <xs:complexType name=&#39;userlist&#39;><!-- 使用complexType声明该类型为复合类型的元素 -->
  <xs:sequence><!-- 使用sequence说明下面的元素必须按顺序在XML文档中显示 -->
   <xs:element name=&#39;用户&#39; type=&#39;user&#39;/>
  </xs:sequence>
 </xs:complexType>
 <xs:complexType name=&#39;user&#39;>
  <xs:sequence>
   <xs:element name=&#39;用户名&#39; type=&#39;user&#39;/>
   <xs:element name=&#39;密码&#39; type=&#39;user&#39;/>
   <xs:element name=&#39;用户类型&#39; type=&#39;user&#39;/>
  </xs:sequence>
 </xs:complexType>
</xs:schema>
로그인 후 복사


목록 3: 부분 형식인 사용자를 사용하여 스키마 정의

    목록 2와 목록 3 모두 구성 요소의 형식 정의와 목록 3에 사용된 부분 형식 정의를 정의합니다. 구체적인 차이점은 아래를 참조하세요.
  • 2.2 기본 사용법


  • 이상에서는 Schema와 DTD의 기능 및 사용법에 대한 비교 분석을 진행했습니다. DTD는 Schema Data 유형이 도입된 것이며 요소 및 속성의 선언과 같은 기타 요소는 DTD와 유사하므로 아래에서는 자세히 설명하지 않습니다.

스키마 기본 콘텐츠 맵:

2.2.1 참조 구문
스키마 파일이 생성된 후 이를 확인하는 데 사용할 수 있습니다. XML 문서의 유효성, 즉 XML 문서가 스키마 파일의 정의를 따르는지 확인합니다. 그렇다면 XML 문서는 스키마 문서를 어떻게 참조합니까? 스키마 모델의 참조는 위에서 언급한 네임스페이스의 적용 방법과 더 유사합니다. 구체적인 예는 다음과 같습니다.

XML/HTML Code复制内容到剪贴板
<!-- 使用局部形式定义 -->
<?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?>
<xs:schema xmlns:xs=&#39;http://www.nishishui.org/2000/XML Schema&#39; elementFormDefault=&#39;qualified&#39; attributeFormDefualt=&#39;unqualified&#39;>
 <xs:element name=&#39;用户列表&#39;>
  <xs:complexType>
   <xs:sequence>
    <xs:element name=&#39;用户&#39;>
     <xs:complexType>
      <xs:sequence>
       <xs:element name=&#39;用户名&#39; type=&#39;xs:string&#39;/>
       <xs:element name=&#39;密码&#39; type=&#39;xs:string&#39;/>
       <xs:element name=&#39;用户类型&#39; type=&#39;xs:integer&#39;/>
      </xs:sequence>
     </xs:complexType>
    </xs:element>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
</xs:schema>
로그인 후 복사


XML의 스키마 코드에 대한 자세한 소개(그림)



  • 2.2.2 요소 종류

    (1) 내용에 따라 단순하게 나누어진다. simpleType 및 complexType 레이블을 각각 사용하는 복합 요소입니다. 단순 요소: 요소의 콘텐츠는 텍스트만 가능하며 다른 요소와 속성은 포함할 수 없습니다.

    XML/HTML Code复制内容到剪贴板
    <?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?>
    <用户列表 xmlns:xsi=http://www.nishishui.org/2000/XMLSchema xsi:noNamespaceSchemaLocation=&#39;user.xsd&#39;><!-- 引用user.xsd -->
     <用户>
      <用户名>我是谁</用户名>
      <密码>123456</密码>
      <用户类型>1</用户类型>
     </用户>
    </用户列表>
    로그인 후 복사



    복합 요소: 요소 다른 요소와 속성을 포함합니다. 여기에는 네 가지 유형, 즉 다른 요소만 포함하는 빈 요소, 텍스트만 포함하는 요소, 텍스트와 기타 요소를 포함하는 요소가 있습니다.
  • 아아아앙


(2)按照定义位置可分为局部和全局元素。
全局元素:元素的父元素必须是
局部元素:局部元素声明只能出现在复杂类型(元素)定义内部。即元素的父元素只能是元素。

XML/HTML Code复制内容到剪贴板
<?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?>
<xs:schema xmlns:xs=&#39;http://www.nishishui.org/2000/XML Schema&#39; elementFormDefault=&#39;qualified&#39; attributeFormDefualt=&#39;unqualified&#39;>
    <xs:element name=&#39;用户&#39; type=&#39;user&#39;/><!-- 全局元素 -->
    <xs:element name=&#39;用户名&#39; type=&#39;xs:string&#39;/><!-- 全局元素 -->
    <xs:element name=&#39;密码&#39; type=&#39;xs:string&#39;><!-- 全局元素 -->
        <xs:complexType name=&#39;user&#39;>
            <!--sequence控制XML内容中元素出现的顺序-->
            <xs:sequence>
                <!-- 定义具体的元素,这些都是简单元素-->
                <!-- 定义局部元素,使用ref关键字引用,并使用minOccurs和maxOccurs制定元素出现的最少和最多的次数-->
                <xs:element ref=&#39;用户名&#39; minOccurs=&#39;0&#39; maxOccurs=&#39;1&#39;/><!-- 局部元素-->
                <xs:element ref=&#39;密码&#39; minOccurs=&#39;0&#39; maxOccurs=&#39;1&#39;/><!-- 局部元素-->
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
로그인 후 복사


위 내용은 XML의 스키마 코드에 대한 자세한 소개(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
xml
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿