XML中的模式Schema代码详细介绍(图)
XML中拥有Schema特性,能够比DTD更加强大地引入元素结构,下面我们就来详解XML中的模式Schema的概念及作用和用法,需要的朋友可以参考下
文档定义模型为XML文档提供了规范,DTD的引入虽然解决了XML文档的规范化问题,但它文件格式类型和XML文件格式类型不一致,同时DTD提供的数据类型有限有时候无法满足行业的需求,所以引入了Schema。Schema模式可以确定XML文档的元素和属性的结构、元素的顺序、元素和属性的数据值,根据范围、枚举以及样式匹配等。
一、Schema初识
XML Schema语言也被称为XML Schema Definition (XSD),它的作用是定义一份XML文档的合法组件群(XML文档的结构),就像DTD的作用一样。 XML Schema以XML语言作为基础,也可以说XML Schema自身就是XML的一种应用。
1、Schema作用
XML Schema和DTD的作用一样,都是用来定义一个XML文档的结构的模式,那么为什么有了DTD还要有XML Schema呢? 因为,XML Schema比DTD作用更加强大。
Xml Schema 比 DTD的优越性:
(1)模式是可扩展的
(2)模式比 DTD 功能更丰富且更有用
(3)模式是用 XML 编写的
(4)模式支持数据类型
(5)模式支持名称空间
(6)不需要在学习其他的语言
(7)可以直接使用XML编辑器来编写XML Schema
(8)可以直接使用XML解析器来解析XML Schema
(9)可以使用XML DOM来灵活的操作XML Schema
(10)可以使用XSLT技术来转换XML Schema
2、对比学习
1.1 作用上
两者相同,都是定义了一个XML文档的结构的模式。
1.2 用法上
两者作用相同,但是语法上有些区别。Schema是DTD的扩展,同样支持元素和属性的定义,并且定义的语法相似,但Schema可以给元素和属性添加相应的数据类型,同时还引入了全局和局部元素声明的语法,另外根据元素和属性的数据内容引入了简单类型和复杂类型。
所谓的简单类型(SimpleType)和复杂类型(ComplexType),它们本身并不是具体的数据类型,它们只是对节点或者自定义类型的类型作一个抽象的说明。
也就是说Schema的引入使得模式的声明更加类似于我们使用的编程语言。
二、实例详解
2.1 Schema实例
清单1:User.xml文档结构
XML/HTML Code复制内容到剪贴板 <?xml version="1.0"?> <用户列表> <用户> <用户名>xx</用户名> <密码>123456</密码> <用户类型>1</用户类型> </用户> </用户列表>
清单2:使用全局组件形式来定义Schema,User.xsd
XML/HTML Code复制内容到剪贴板 <!-- 使用全局组件形式定义 --> <?xml version='1.0' encoding='utf-8'?> <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' elementFormDefault='qualified' attributeFormDefualt='unqualified'> <xs:element name='用户列表' type='userlist'/> <xs:complexType name='userlist'><!-- 使用complexType声明该类型为复合类型的元素 --> <xs:sequence><!-- 使用sequence说明下面的元素必须按顺序在XML文档中显示 --> <xs:element name='用户' type='user'/> </xs:sequence> </xs:complexType> <xs:complexType name='user'> <xs:sequence> <xs:element name='用户名' type='user'/> <xs:element name='密码' type='user'/> <xs:element name='用户类型' type='user'/> </xs:sequence> </xs:complexType> </xs:schema>
清单3:使用局部形式定义Schema,User.xsd
XML/HTML Code复制内容到剪贴板 <!-- 使用局部形式定义 --> <?xml version='1.0' encoding='utf-8'?> <xs:schema xmlns:xs='http://www.nishishui.org/2000/XML Schema' elementFormDefault='qualified' attributeFormDefualt='unqualified'> <xs:element name='用户列表'> <xs:complexType> <xs:sequence> <xs:element name='用户'> <xs:complexType> <xs:sequence> <xs:element name='用户名' type='xs:string'/> <xs:element name='密码' type='xs:string'/> <xs:element name='用户类型' type='xs:integer'/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
清单2和清单3的都定义了User.xsd,它们的作用是相同的,都是为了验证XML文档的合法性,但定义的方法不同,清单2是使用全局组件的形式定义,而清单3使用的局部形式定义,具体的区别请看下文。
2.2 基本用法
上文中我们分别从作用和用法上对Schema和DTD进行了对比分析,Schema和DTD最大的区别在于Schema引入了数据类型,其它的如元素和属性的声明等类似于DTD,在下面讨论时就不再详述。
Schema基本内容导图:
2.2.1 引用语法
当一个模式文件建立好以后,可以用它来验证某一个XML文档的有效性,也就是说检验某个XML文档是否遵循了模式文件的定义。 那么,XML文档怎么来引用一个模式文档呢?
Schema模型的引用更类似于前面所说的命名空间的应用方法,具体实例如下:
XML/HTML Code复制内容到剪贴板 <?xml version='1.0' encoding='utf-8'?> <用户列表 xmlns:xsi=http://www.nishishui.org/2000/XMLSchema xsi:noNamespaceSchemaLocation='user.xsd'><!-- 引用user.xsd --> <用户> <用户名>我是谁</用户名> <密码>123456</密码> <用户类型>1</用户类型> </用户> </用户列表>
2.2.2 元素类型
(1)按照内容的不同分为简单和复杂元素,分别使用simpleType和complexType标示。
简单元素:元素中内容只能是文本,不包含其它的元素和属性。
XML/HTML Code复制内容到剪贴板 <?xml version='1.0' encoding='utf-8'?> <xs:schema xmlns:xs='http://www.nishishui.org/2000/XML Schema' elementFormDefault='qualified' attributeFormDefualt='unqualified'> <xs:element name='age'> <xs:simpleType><!-- 使用关键字simpleType声明简单元素 --> <!--restriction关键字结合minInclusive和maxInclusive控制了XML中元素可接受的值范围为0~100--> <xs:restriction base="xs:integer"> <xs:minInclusive value='0'/> <xs:maxInclusive value='100'/> </xs:restriction> </xs:simpleType> </xs:element> </xs:schema>
复杂元素:元素中包含其它的元素和属性。它有四种类型,分别是空元素、只包含其他元素、只包含正文、包含正文又包含其他元素。
XML/HTML Code复制内容到剪贴板 <?xml version='1.0' encoding='utf-8'?> <xs:schema xmlns:xs='http://www.nishishui.org/2000/XML Schema' elementFormDefault='qualified' attributeFormDefualt='unqualified'> <xs:element name='age'> <xs:complexType><!-- 使用关键字complexType声明复杂元素 --> <!--sequence控制XML内容中元素出现的顺序--> <xs:sequence> <!-- 定义具体的元素,这些都是简单元素--> <xs:element name='firstname' type='xs:string'/> <xs:element name='lastname' type='xs:string'/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
(2)按照定义位置可分为局部和全局元素。
全局元素:
局部元素:局部元素声明只能出现在复杂类型(
XML/HTML Code复制内容到剪贴板 <?xml version='1.0' encoding='utf-8'?> <xs:schema xmlns:xs='http://www.nishishui.org/2000/XML Schema' elementFormDefault='qualified' attributeFormDefualt='unqualified'> <xs:element name='用户' type='user'/><!-- 全局元素 --> <xs:element name='用户名' type='xs:string'/><!-- 全局元素 --> <xs:element name='密码' type='xs:string'><!-- 全局元素 --> <xs:complexType name='user'> <!--sequence控制XML内容中元素出现的顺序--> <xs:sequence> <!-- 定义具体的元素,这些都是简单元素--> <!-- 定义局部元素,使用ref关键字引用,并使用minOccurs和maxOccurs制定元素出现的最少和最多的次数--> <xs:element ref='用户名' minOccurs='0' maxOccurs='1'/><!-- 局部元素--> <xs:element ref='密码' minOccurs='0' maxOccurs='1'/><!-- 局部元素--> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Atas ialah kandungan terperinci XML中的模式Schema代码详细介绍(图). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





Bolehkah fail XML dibuka dengan PPT? XML, Extensible Markup Language (Extensible Markup Language), ialah bahasa markup universal yang digunakan secara meluas dalam pertukaran data dan penyimpanan data. Berbanding dengan HTML, XML lebih fleksibel dan boleh menentukan tag dan struktur datanya sendiri, menjadikan penyimpanan dan pertukaran data lebih mudah dan bersatu. PPT, atau PowerPoint, ialah perisian yang dibangunkan oleh Microsoft untuk membuat pembentangan. Ia menyediakan cara yang komprehensif untuk

Menggunakan Python untuk menggabungkan dan menyahduplikasi data XML XML (eXtensibleMarkupLanguage) ialah bahasa penanda yang digunakan untuk menyimpan dan menghantar data. Apabila memproses data XML, kadangkala kita perlu menggabungkan berbilang fail XML menjadi satu, atau mengalih keluar data pendua. Artikel ini akan memperkenalkan cara menggunakan Python untuk melaksanakan penggabungan dan penyahduplikasian data XML, dan memberikan contoh kod yang sepadan. 1. Penggabungan data XML Apabila kita mempunyai berbilang fail XML, kita perlu menggabungkannya

Tukar data XML dalam Python kepada format CSV XML (ExtensibleMarkupLanguage) ialah bahasa penanda boleh diperluas yang biasa digunakan untuk penyimpanan dan penghantaran data. CSV (CommaSeparatedValues) ialah format fail teks dipisahkan koma yang biasa digunakan untuk import dan eksport data. Semasa memproses data, kadangkala data XML perlu ditukar kepada format CSV untuk analisis dan pemprosesan yang mudah. Python adalah yang kuat

Melaksanakan penapisan dan pengisihan data XML menggunakan Python Pengenalan: XML ialah format pertukaran data yang biasa digunakan yang menyimpan data dalam bentuk teg dan atribut. Apabila memproses data XML, kami selalunya perlu menapis dan mengisih data. Python menyediakan banyak alat dan perpustakaan yang berguna untuk memproses data XML. Artikel ini akan memperkenalkan cara menggunakan Python untuk menapis dan mengisih data XML. Membaca fail XML Sebelum kita mula, kita perlu membaca fail XML. Python mempunyai banyak perpustakaan pemprosesan XML,

Mengimport data XML ke dalam pangkalan data menggunakan PHP Pengenalan: Semasa pembangunan, kita sering perlu mengimport data luaran ke dalam pangkalan data untuk pemprosesan dan analisis selanjutnya. Sebagai format pertukaran data yang biasa digunakan, XML sering digunakan untuk menyimpan dan menghantar data berstruktur. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mengimport data XML ke dalam pangkalan data. Langkah 1: Menghuraikan fail XML Mula-mula, kita perlu menghuraikan fail XML dan mengekstrak data yang diperlukan. PHP menyediakan beberapa cara untuk menghuraikan XML, yang paling biasa digunakan ialah menggunakan Mudah

Python melaksanakan penukaran antara XML dan JSON Pengenalan: Dalam proses pembangunan harian, kita selalunya perlu menukar data antara format yang berbeza. XML dan JSON ialah format pertukaran data biasa Dalam Python, kita boleh menggunakan pelbagai perpustakaan untuk menukar antara XML dan JSON. Artikel ini akan memperkenalkan beberapa kaedah yang biasa digunakan, dengan contoh kod. 1. Untuk menukar XML kepada JSON dalam Python, kita boleh menggunakan modul xml.etree.ElementTree

Mengendalikan Ralat dan Pengecualian dalam XML Menggunakan Python XML ialah format data yang biasa digunakan untuk menyimpan dan mewakili data berstruktur. Apabila kami menggunakan Python untuk memproses XML, kadangkala kami mungkin menghadapi beberapa ralat dan pengecualian. Dalam artikel ini, saya akan memperkenalkan cara menggunakan Python untuk mengendalikan ralat dan pengecualian dalam XML, dan menyediakan beberapa kod sampel untuk rujukan. Gunakan pernyataan cuba-kecuali untuk menangkap ralat penghuraian XML Apabila kami menggunakan Python untuk menghuraikan XML, kadangkala kami mungkin menghadapi beberapa

Python menghuraikan aksara khas dan jujukan melarikan diri dalam XML XML (eXtensibleMarkupLanguage) ialah format pertukaran data yang biasa digunakan untuk memindahkan dan menyimpan data antara sistem yang berbeza. Semasa memproses fail XML, anda sering menghadapi situasi yang mengandungi aksara khas dan urutan melarikan diri, yang boleh menyebabkan ralat penghuraian atau salah tafsiran data. Oleh itu, apabila menghuraikan fail XML menggunakan Python, kita perlu memahami cara mengendalikan aksara khas dan urutan melarikan diri ini. 1. Watak istimewa dan
