cari
Rumahpembangunan bahagian belakangTutorial XML/RSS详细介绍soap相关的xml知识

一、 xml概述 
在为soap寻找表述方法时,这个标准的制定者们其实有很多种选择。但他们最终选择了尽可能利用现有的技术,把必要的新术语数量压缩到最少。为了描述soap信息的内容,这些作者们选择了xml语言。它的全称是“extensible Markup Language”,可扩展标记语言。 
xml语言包含的功能非常多,比soap用到或者需要用到的要多的多。比如说,在soap 标准v1.1的第三节“与xml语言的关系”部分有说“在soap消息中不得包含文档类型说明(Document Type Declaration, DTD)”。在soap消息中不得包含处理指令(Processing Instructions)。就soap采纳的xml语言标准的有关内容来看,它定义的是soap功能的使用方法。我们很快就能体会到这一决定的英明之处:因为开发人员在使用soap的时候不需要拥有全功能的xml语法分析器,所以用soap来实现某个解决方案的工作很容易进行。为了理解soap,我们先要弄懂以下几个概念: 
1.统一资源标识符(Uniform Resource Identifiers, 简称URI)。 
2.xml语言基础。 
3.xml格式定义。 
4.xml名字空间。 
5.xml属性。 

1.1 统一资源标识符 
为了访问因特网上某个独一无二的资源项目,必须知道如何从众多的对象中把它标识出来。统一资源描述符(URI)就是给各个资源起的名字。URI的格式: 
b7b165c079dc80a737996dfae2b9c338:3c04e486a534fd93ee12acd6ebc823fc 
schema-specific-part部分往往还包含一些斜线字符(/),这些斜线字符表示的是路径中的层次结构。 

1.1.1 统一资源定位器(URL) 
大家最为熟悉的URI要算是统一资源定位器(Uniform Resource Locator, URL)了,他就是我么通常所说的URL地址。URL地址也要遵守URI标识符的地址表示方法。 
URL地址中的schema-specific-part部分格式是这样的: 

//<user>:<password>@<host>:<port>/<url-path>

上述语法中各组成元素的含义如下所示: 
1.user:目标地址处的用户名(可选项)。 
2.password:分配给用户user的密码(可选项)。 
3.host:某个网络主机的因特网协议地址或完整域名(必选项)。 
4.port:用来建立连接时使用的端口号。大部分协议都有默认的端口号,比如http在缺省时将使用80端口进行通信(可选项)。 
5.url-path:访问某个特定资源的详细路径。紧跟在主机名或端口号后面的斜线字符(/)不是url-path的组成部分。 

1.1.2 统一资源名字(URN) 
与无处不在的url地址相比,大多数web用户对统一资源名字(Uniform Resource Name, URN)的熟悉程度要差很多。URN与URL的不同之处在于前者不会被解析成一个独一无二的物理地点。URN是一种永久性的资源标识符(不像URL地址那样会有一些动态的路径信息),他们允许来自某个名字空间的其他类型标识符被映射到URN空间里来。因此,URN的语法提供了利用现有的各种协议对字符数据进行分析和编码的能力。URN的构成规则也遵守URI的通用性规定,它的常见格式如下: 
a404ff79e93321af3aeb791bc06eb0cf::=”urn:”f10a90ea561b0f3bc47d7214d7f51ab5”:”04beb0a7cef0daf422314621928b7277 

在URN名字里要用字符串”urn:”来表示这是一个URN名字。NID是”Namespace ID”的缩写,NSS是”Namespace-Specific String”的缩写,给出的是与NID代表的名字空间有关的字符串。在遇到URN名字的时候,我们要根据NID的值来决定如何解释NSS字符串。在读取或使用URN名字的时候,要记住前导字符串”urn:”以及f10a90ea561b0f3bc47d7214d7f51ab5内容里的字母是分大小写的。 
URL和URN是URI两种最常见的用法。后面我们还会看到URI的另外一种用法:xml Namespace(xml命名空间)。 

1.2 xml基础 
xml语言是在1996-1997年间进入人们视线的。下面是xml代码示例: 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <parent>
        <artifactId>framework</artifactId>
        <groupId>com.**.framework</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <packaging>war</packaging>
</project>

即使你从没度过xml程序代码,这个例子也不是很难懂。我们可以通过这段代码看出xml文档的一些编写规则。 
(1)第一行是一条处理指令,作用是声明这份文档使用的xml版本和编码格式,文档中的这条语句并非不可或缺,但最好还是把它加载里面。 
(2)xml文档必须有一个封闭元素(版本信息不能算作是一个封闭元素)。在例子中project把整个文档包括在了它的起始标记和结束标记之间。它还有几个子元素,子元素又可以嵌套定义。 
(3)这段代码中的所有单词都不是xml的关键字。 
(4)注意文档里标记不要拼错了。即使拼错了,xml语法分析器也会接受这份文档,但它不会正确解析你的意图了。如果我们想让xml语法分析器为我们做一些检查工作,并且只读取正确的数据结构,那可以加上一个文档类型说明(Document Type Declaration, DTD)或者一个xml大纲(xml schema)。这里不就DTD进行讨论了,soap技术规范的第三小节也已经明确规定“在soap信息中不得包含文档类型声明”。 

1.3 xml大纲 
xml大纲(xml schema)比DTD的描述能力更强。这两种事物都提供了对一个xml元素的结构进行定义的方法。虽然格式定义和DTD都允许对元素进行定义,但只有格式定义允许给出数据的类型信息。xml数据是基于文本的,它会用字符”4”而不是”0100”这样的二进制形式来表示数字4(xml允许在信息中对二进制数据进行编码,这样使我们能够把图像数据等内容夹在一条xml信息里发送出去)。 

下面给出实例,感受下大纲优于DTD的事实。 
一个简单的DTD有一些包含其他元素或字符数据的元素。最简单的元素声明是这样的:给出元素的名字,再把元素的内容定义为字符数据。如下所示: 

<! ELEMENT element-name (#PCDATA)>

一个元素可以由其他元素组合而成。如果一个元素不多不少只包含有某个给定元素的一个实例,我们就这样定义:

<! ELEMENT parentElement (childElement)> 
<! ELEMENT childElement (#PCDATA)>

如果parentElement元素中可能包含零个或多个childElement元素,我们就用一个星号(*)来定义,如下: 

<! ELEMENT parentElement (childElement *)> 
<! ELEMENT childElement (#PCDATA)>

另外,还可以在一个DTD里指示出元素的组合情况,比如parentElement元素里包含有两种不同数据片段的情况,如下所示: 

<! ELEMENT parentElement (childElement1, childElement2)>
<! ELEMENT childElement1 (#PCDATA)>
<! ELEMENT childElement2 (#PCDATA)>

具体示例,比如图书馆里有很多书,书又有书名,作者,版权等属性,那定义的DTD文件Library.dtd可以是: 

<! ELEMENT Library (Book*)>
<! ELEMENT Book (Title, Author*, Copyright)>
<! ELEMENT Title (#PCDATA)>
<! ELEMENT Author (#PCDATA)>
<! ELEMENT Copyright (#PCDATA)>

Library是由零个或多个Book类型的元素组成的。每个Book又是由一个Title元素,零个或多个Author类型的元素和一个Copyright元素组成。Title,Author和Copyright这三种元素都包含着字符数据。我们使用这个DTD来检查xml内容,可以定义xml文档: 

<?xml version=”1.0”?>
<!DOCTYPE Library PUBLIC “.” “Library.dtd”>
<Library>
<Book>
    <Title>Green Eggs</Title>
    <Author>Dr.Seuss</Author>
    <Copyright>1957</Copyright>
</Book>
<Book>
    <Title>Windows</Title>
    <Author>Scott</Author>
    <Copyright>2000</Copyright>
</Book>
</Library>

语法分析器在需要对数据的类型进行检查时会自动加载Library.dtd,并根据它对文档的内容进行检查。这样做的好处是显而易见的,但如果我们还能在“这个元素包含着字符数据”以外给出更多的信息岂不是更好?因为各种理由,W3C最终发布了关于xml大纲的建议稿。下面用xml大纲重写刚才的DTD文档: 

<Schema xmlns:xsd =”http://www.w3.org/2001/XMLSchema”
    xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”>
    <complexType name=”Book” content=”mixed”>
        <element type=”Title”></element>
        <element type=”Author”></element>
        <element type=”Copyright”></element>
    </complexType>
    <simpleType name=”Title” content=”textOnly” xsi:type=”string”></simpleType>
    <simpleType name=”Author” content=”textOnly” xsi:type=”string”></simpleType>
    <simpleType name=”Copyright” content=”textOnly” xsi:type=”integer”></simpleType>
</Schema>

把上面这段代码存为一个xml文件(一般是xsd后缀)。在使用大纲的时候,只需简单地在文档里引用就行了,像下面: 

<myLibrary:Library xmlns:myLibrary=”x-schema:http://www.scottseely.com/LibrarySchema.xml”>
    <myLibrary:Book>
        <myLibrary:Title>Green Eggs</ myLibrary:Title >
        <myLibrary:Author>Dr.seuss</ myLibrary:Author >
        < myLibrary:Copyright>1957</ myLibrary:Copyright>
    </myLibrary:Book>
    …
</myLibrary:Library>

大纲和文档都使用了文本“text”。这个字符串的作用是通知语法分析器此文档里使用的变量名属于给定URI指定的名字空间。如果URI以x-schema打头,语法分析器就必须从指定地址加载相应的大纲文件。如果没有其他说明,带有xmlns声明的起始标记及对应的结束标记之间的所有元素都是指定的名字空间的一部分。 

1.3.1 数据特征 
为了更好地对数据进行定义和类型校验,xml大纲使用了“数据特征(facets)”来定义某个特定的数据类型的特性。一个数据值域空间的每个特性都必须用一个数据特征来定义。而一个“数据值域空间”就是一个给定的数据类型的全体有效数据值的集合。不同的数据类型是通过他们各自的数据特征来区分的。xml大纲文档定义的数据特征又分为两大类:基本特征和非基本特征。 
一个基本特征就是某个数据值域空间里的数据值的一个抽象特性,他给出了这类数据值的一个基本特点。数据值的基本特征包括: 
1.相等 
2.顺序 
3.边界 
4.势。这是一个集合论的概念。有些值域空间里的值在数量上是有限的,而一些则是无限的。 
5.数值 
6.长度,最小长度,最大长度 
7.式样 
8.枚举 
9.最大内边界,最大外边界,最小内边界,最大内边界 
10.经度 
11.数值范围 
12.编码方式 
13.持续时间 
14.周期 

1.3.2 数据类型 
xml格式定义把数据类型和数据特征结合起来,这就使在格式定义中定义的数据项有了准确的含义。www.w3.org/2001/XMLSchema中定义了许多数据类型。 

1.4 xml命名空间 
在上面已经见过xml命名空间(xml namespaces)的用法了。命名空间的作用简单说来就是对用在一段上下文里的一组变量名进行定义和声明。名字空间可以使用任意URN,但前提条件是这个URN必须是独一无二的。 

1.5 xml属性 
出现在这本书里的所有xml文档都使用了元素来表示数据。但大家应该知道xml也支持属性概念。元素必须有起始标记和结束标记,属性则不同,他们不需要标记,只要把他们放到元素的起始标记里就行了。 
对属性进行声明有三种不同的办法: 
1.精心编写的xml,但不包含任何DTD或大纲 
2.精心编写的xml,使用一个DTD 
3.精心编写的xml,使用一个或者多个大纲。 
第一种办法能正常运行,但实用环境中效果并不好,而soap又禁止使用DTD,所以我们就说下第三种方法吧。在xml大纲创建属性的时候,需要使用attributeType和attribute这两个关键字。这两个关键字只在大纲所属的名字空间里有意义。attributeType用来定义某个类型的特性,而attribute则指出该元素类型定义所针对的对象。 
为了使用属性对book进行描述,相应的大纲应该是下面这个样子: 

<Schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”   
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”>  
    <attributeType name=”title” xsi:type=”string” />  
    <attributeType name=”name” xsi:type=”string” />  
    <complexType name=”Author” content=”empty”>  
        <attribute type=”name” />  
        <element type=”Author”>  
    </complexType>  
</Schema>

attributeType的完整语法如下: 

<attributeType default=”default value”
xsi:type=”type”
xsi:values=”enumerated values”
name=”idref”
required=”{yes|no}” >

default:属性的默认值。 
xsi:type:该属性的数据类型。如果选择的是枚举类型,还要天上xsi:value。 
name:属性类型的名字。为了对attributeType进行类型检查,必须有一个名字。 
required:表明一个包含有attributeType的元素是否必须带有此处定义的属性。 

Atas ialah kandungan terperinci 详细介绍soap相关的xml知识. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
RSS dan XML: asas sindikasi webRSS dan XML: asas sindikasi webApr 29, 2025 am 12:22 AM

RSS dan XML adalah teknologi teras dalam pengedaran kandungan rangkaian dan pertukaran data. RSS digunakan untuk menerbitkan kandungan yang sering dikemas kini, dan XML digunakan untuk menyimpan dan memindahkan data. Kecekapan dan prestasi pembangunan dapat ditingkatkan melalui contoh penggunaan dan amalan terbaik dalam projek sebenar.

Suapan RSS: Meneroka Peranan dan Tujuan XMLSuapan RSS: Meneroka Peranan dan Tujuan XMLApr 28, 2025 am 12:06 AM

Peranan XML dalam RSSFEED adalah untuk menyusun data, menyeragamkan dan menyediakan skalabilitas. 1.xml menjadikan data RSSFeed berstruktur, menjadikannya mudah untuk menghuraikan dan memproses. 2.xml menyediakan cara yang standard untuk menentukan format RSSFEED. Skalabiliti 3.xml membolehkan RSSFeed menambah tag dan atribut baru seperti yang diperlukan.

Pemprosesan XML/RSS Skala: Teknik Pengoptimuman PrestasiPemprosesan XML/RSS Skala: Teknik Pengoptimuman PrestasiApr 27, 2025 am 12:28 AM

Apabila memproses data XML dan RSS, anda boleh mengoptimumkan prestasi melalui langkah -langkah berikut: 1) Gunakan parser yang cekap seperti LXML untuk meningkatkan kelajuan parsing; 2) Gunakan parser sax untuk mengurangkan penggunaan memori; 3) Gunakan ekspresi XPath untuk meningkatkan kecekapan pengekstrakan data; 4) Melaksanakan pemprosesan selari pelbagai proses untuk meningkatkan kelajuan pemprosesan.

Format Dokumen RSS: Meneroka RSS 2.0 dan seterusnyaFormat Dokumen RSS: Meneroka RSS 2.0 dan seterusnyaApr 26, 2025 am 12:22 AM

RSS2.0 adalah standard terbuka yang membolehkan penerbit kandungan mengedarkan kandungan dengan cara berstruktur. Ia mengandungi metadata yang kaya seperti tajuk, pautan, penerangan, tarikh pelepasan, dan lain -lain, yang membolehkan pelanggan dengan cepat melayari dan mengakses kandungan. Kelebihan RSS2.0 adalah kesederhanaan dan skalabilitasnya. Sebagai contoh, ia membolehkan unsur -unsur tersuai, yang bermaksud pemaju boleh menambah maklumat tambahan berdasarkan keperluan mereka, seperti penulis, kategori, dll.

Memahami RSS: Perspektif XMLMemahami RSS: Perspektif XMLApr 25, 2025 am 12:14 AM

RSS adalah format berasaskan XML yang digunakan untuk menerbitkan kandungan yang sering dikemas kini. 1. RSSFEED menganjurkan maklumat melalui struktur XML, termasuk tajuk, pautan, keterangan, dan lain -lain. 3. Penggunaan lanjutan boleh termasuk fail multimedia dan maklumat dikelaskan. 4. Gunakan alat pengesahan XML semasa debugging untuk memastikan bahawa unsur -unsur yang diperlukan wujud dan dikodkan dengan betul. 5. Mengoptimumkan RSSFEED boleh dicapai dengan paging, caching dan menjaga struktur mudah. Dengan memahami dan menggunakan pengetahuan ini, kandungan dapat diuruskan dan diedarkan dengan berkesan.

RSS dalam XML: Tag penyahkodan, atribut, dan strukturRSS dalam XML: Tag penyahkodan, atribut, dan strukturApr 24, 2025 am 12:09 AM

RSS adalah format berasaskan XML yang digunakan untuk menerbitkan dan melanggan kandungan. Struktur XML fail RSS termasuk elemen akar, elemen, dan pelbagai elemen, masing -masing mewakili entri kandungan. Baca dan menghuraikan fail RSS melalui Parser XML, dan pengguna boleh melanggan dan mendapatkan kandungan terkini.

Kelebihan XML dalam RSS: menyelam dalam teknikalKelebihan XML dalam RSS: menyelam dalam teknikalApr 23, 2025 am 12:02 AM

XML mempunyai kelebihan data berstruktur, skalabilitas, keserasian silang platform dan pengesahan parsing dalam RSS. 1) data berstruktur memastikan konsistensi dan kebolehpercayaan kandungan; 2) Skalabiliti membolehkan penambahan tag tersuai untuk memenuhi keperluan kandungan; 3) keserasian silang platform menjadikannya berfungsi dengan lancar pada peranti yang berbeza; 4) Alat analisis dan pengesahan memastikan kualiti dan integriti makanan.

RSS dalam XML: Membentangkan teras sindikasi kandunganRSS dalam XML: Membentangkan teras sindikasi kandunganApr 22, 2025 am 12:08 AM

Pelaksanaan RSS dalam XML adalah untuk mengatur kandungan melalui format XML berstruktur. 1) RSS menggunakan XML sebagai format pertukaran data, termasuk elemen seperti maklumat saluran dan senarai projek. 2) Apabila menghasilkan fail RSS, kandungan mesti dianjurkan mengikut spesifikasi dan diterbitkan ke pelayan untuk langganan. 3) Fail RSS boleh dilanggan melalui pembaca atau pemalam untuk mengemas kini kandungan secara automatik.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).