XML和Schema命名空间的具体实例代码分享
上文把XML和Schema的命名空间的一些相关内容进行了详细介绍,下面通过例子来具体了解:
例一:重点理解名称空间的相关概念。
下面的例子是一个XML Schema文件,名为"note.xsd"
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns="http://www.w3schools.com" elementFormDefault="qualified"> <xsd:element name="note"> <xsd:complexType> <xsd:sequence> <xsd:element name="to" type="xs:string"/> <xsd:element name="from" type="xs:string"/> <xsd:element name="heading" type="xs:string"/> <xsd:element name="body" type="xs:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
下面的XML文档和上文给出的XML Schema相关联,名为"note.xml"。并且下文的讨论将围绕这两个文档展开。
<?xml version="1.0"?> <note xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com note.xsd"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
此片段:xmlns:xsd="www.w3.org/2001/XMLSchema",表明此schema中使用的元素和数据类型来自于"www.w3.org/2001/XMLSchema"名称空间(namespace)。它同样指出来自于"www.w3.org/2001/XMLSchema"名称空间的元素和数据类型必须使用带"xsd:
"前缀。作为名称空间的标识符(在声明中作为元素或属性的前缀),你也可以不使用xsd或xsi。这个 xmlns属性包含了基本的XML schema元素,比如element, attribute, complexType, group, simpleType等。
对于任何一个XML Schema定义文档(XSD)都有一个最顶层的schema (XSD)元素。而且该schema (XSD)元素定义必须包含这个名称空间:www.w3.org/2001/XMLSchema。即此名称空间是由XML模式规范定义的标准名称空间-所有XML模式元素必须属于该名称空间。
此片段:targetNamespace="www.w3schools.com",表明此schema
(note, to, from, heading, body)定义的元素来自于"www.w3schools.com"名称空间。这个targetNamespace属性表示了该schema所对应的名称空间的URI。也就是说在引用该Schema的其它文档(包括自身文档)中要声明名称空间,其URI应该是targetNamespace的属性值。例如在这里因为要用到note.xsd自己定义的扩展数据类型(note,
to, from, heading, body),所以也声明了名称空间xmlns="www.w3schools.com"。而且该名称空间是默认名称空间(没有前缀)。targetNamespace属性为在模式中显式创建的所有新类型均声明了XML名称空间。
我们再来看由该schema规定的XML文档note.xml的开头将是什么样子:
<note xmlns="http://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com note.xsd">
其中缺省名称空间声明xmlns="www.w3schools.com"就是和刚刚声明的XML Schema的名称空间相结合来规定该XML文档。(即该文档用到了此名称空间中定义的数据) xmlns:xsi="www.w3.org/2001/XMLSchema-instance" 是任何XML实例文档固有的XML模式实例名称空间,它由XML模式规范定义。而xsi:schemaLocation="www.w3schools.com note.xsd"则规定了该名称空间所对应的schema的位置,即在相同路径的note.xsd文件。
例二:重点理解Schema文档使用自身定义类型
xsd文件中定义了一个targetNameSpace后,其内部定义的元素,属性,类型等都属于该targetNameSpace,其自身或外部xsd文件使用这些元素,属性等都必须从定义的targetNameSpace中找。修改一下note.xsd,去除默认名称空间的声明,并添加一个复杂类型:
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" elementFormDefault="qualified"> <xsd:element name="note"> <xsd:complexType> <xsd:sequence> <xsd:element name="to" type="xs:string"/> <xsd:element name="from" type="xs:string"/> <xsd:element name="heading" type="xs:string"/> <xsd:element name="body" type="xs:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Student" type="stu"/> <xsd:complexType name="stu"> <xsd:sequence> <xsd:element name="Name" type="xs:string"/> <xsd:element name="Class" type="xs:string"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
上述代码中,复杂类型stu是找不到的,因为你定义了一个名称空间"www.w3schools.com",该复杂类型存在于"www.w3schools.com"中,因此应该修改代码如下:
<?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3schools.com" xmlns:student="http://www.w3schools.com" elementFormDefault="qualified"> <xsd:element name="note"> <xsd:complexType> <xsd:sequence> <xsd:element name="to" type="xs:string"/> <xsd:element name="from" type="xs:string"/> <xsd:element name="heading" type="xs:string"/> <xsd:element name="body" type="xs:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Student" type="student:stu"/> <xsd:complexType name="stu"> <xsd:sequence> <xsd:element name="Name" type="xs:string"/> <xsd:element name="Class" type="xs:string"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
若自身并不使用重用组件,仅供外部使用的话,则只定义targetNameSpace就可以,不用指定别名。
通过上面的例子,我们可以很深刻的理解targetNameSpace。targetNamespace定义了Schema定义的新元素与属性的名称空间。而"www.w3.org/2001/XMLSchema"名称空间则定义了element,
attribute, complexType, group, simpleType等元素。
理解了上面的两个例子,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

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

Selesaikan ralat PHP: Kelas ruang nama yang ditentukan tidak ditemui Semasa membangunkan menggunakan PHP, kami sering menghadapi pelbagai mesej ralat. Salah satu ralat biasa ialah "Kelas ruang nama yang ditentukan tidak dijumpai". Ralat ini biasanya disebabkan oleh fail kelas yang diimport tidak dirujuk dengan betul ruang nama. Artikel ini menerangkan cara menyelesaikan masalah ini dan menyediakan beberapa contoh kod. Mula-mula, mari kita lihat contoh mesej ralat biasa: Fatalerror:UncaughtError:C

Cara mengendalikan format data XML dan JSON dalam pembangunan C# memerlukan contoh kod khusus Dalam pembangunan perisian moden, XML dan JSON ialah dua format data yang digunakan secara meluas. XML (Extensible Markup Language) ialah bahasa penanda yang digunakan untuk menyimpan dan menghantar data, manakala JSON (JavaScript Object Notation) ialah format pertukaran data yang ringan. Dalam pembangunan C#, kami selalunya perlu memproses dan mengendalikan data XML dan JSON Artikel ini akan memfokuskan pada cara menggunakan C# untuk memproses kedua-dua format data ini dan melampirkan

Menggunakan Python untuk melaksanakan pengesahan data dalam XML Pengenalan: Dalam kehidupan sebenar, kita sering berurusan dengan pelbagai data, antaranya XML (Extensible Markup Language) ialah format data yang biasa digunakan. XML mempunyai kebolehbacaan dan kebolehskalaan yang baik, dan digunakan secara meluas dalam pelbagai bidang, seperti pertukaran data, fail konfigurasi, dsb. Semasa memproses data XML, kami selalunya perlu mengesahkan data untuk memastikan integriti dan ketepatan data. Artikel ini akan memperkenalkan cara menggunakan Python untuk melaksanakan pengesahan data dalam XML dan memberikan yang sepadan

Jackson ialah perpustakaan berasaskan Java yang berguna untuk menukar objek Java kepada JSON dan JSON kepada objek Java. JacksonAPI lebih pantas daripada API lain, memerlukan kawasan memori yang kurang dan sesuai untuk objek besar. Kami menggunakan kaedah writeValueAsString() kelas XmlMapper untuk menukar POJO kepada format XML, dan tika POJO yang sepadan perlu dihantar sebagai parameter kepada kaedah ini. Sintaks publicStringwriteValueAsString(Objectvalue)throwsJsonProcessingExceptionExampleimp

C++ ialah bahasa pengaturcaraan peringkat tinggi yang digunakan secara meluas Ia mempunyai fleksibiliti dan skalabiliti yang tinggi, tetapi ia juga memerlukan pembangun untuk menguasai peraturan tatabahasanya dengan ketat untuk mengelakkan ralat. Salah satu ralat biasa ialah "penggunaan ruang nama yang tidak ditentukan". Artikel ini menerangkan maksud ralat ini, sebab ia berlaku dan cara membetulkannya. 1. Apakah kegunaan ruang nama yang tidak ditentukan? Dalam C++, ruang nama ialah cara mengatur kod yang boleh diguna semula untuk memastikan ia modular dan boleh dibaca. Fungsi dengan nama yang sama boleh dibuat menggunakan ruang nama

Gunakan fungsi PHPXML untuk memproses data XML: Menghuraikan data XML: simplexml_load_file() dan simplexml_load_string() memuatkan fail XML atau rentetan. Akses data XML: Gunakan sifat dan kaedah objek SimpleXML untuk mendapatkan nama elemen, nilai atribut dan subelemen. Ubah suai data XML: tambah elemen dan atribut baharu menggunakan kaedah addChild() dan addAttribute(). Data XML bersiri: Kaedah asXML() menukar objek SimpleXML kepada rentetan XML. Contoh praktikal: menghuraikan XML suapan produk, mengekstrak maklumat produk, mengubah dan menyimpannya ke dalam pangkalan data.
