0

0

详细介绍soap相关的xml知识

黄舟

黄舟

发布时间:2017-04-01 13:47:12

|

2438人浏览过

|

来源于php中文网

原创

一、 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的格式: 
: 
schema-specific-part部分往往还包含一些斜线字符(/),这些斜线字符表示的是路径中的层次结构。 

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

//:@:/

上述语法中各组成元素的含义如下所示: 
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的通用性规定,它的常见格式如下: 
::=”urn:””:” 

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

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



    
        framework
        com.**.framework
        1.0-SNAPSHOT
    
    4.0.0
    war

即使你从没度过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有一些包含其他元素或字符数据的元素。最简单的元素声明是这样的:给出元素的名字,再把元素的内容定义为字符数据。如下所示: 

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

 

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

 

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



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





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

凡客系统
凡客系统

使用:1.上传到服务器或空间2.运行http://域名/install.php栏目介绍:1.网站常规设置用于设置网站的相关参数,还淘宝app2.用户信息管理用于管理用户的,浏览添加删除等3.商品汇采集用于采集商品的,我将淘宝上的商品分为普通商品和秒杀商品,还有的秒杀商品采集4淘宝链接生成用于生成淘宝商品推广链接,这个是根据app生成的,所以要填写app5.商品详细设置这个模块主要是用于管理商品的,

下载




    Green Eggs
    Dr.Seuss
    1957


    Windows
    Scott
    2000

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


    
        
        
        
    
    
    
    

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


    
        Green Eggs
        Dr.seuss
        < myLibrary:Copyright>1957
    

大纲和文档都使用了文本“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进行描述,相应的大纲应该是下面这个样子: 

  
      
      
      
          
          
      

attributeType的完整语法如下: 

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

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
苹果官方查询网站 苹果手机正品激活查询入口
苹果官方查询网站 苹果手机正品激活查询入口

苹果官方查询网站主要通过 checkcoverage.apple.com/cn/zh/ 进行,可用于查询序列号(SN)对应的保修状态、激活日期及技术支持服务。此外,查找丢失设备请使用 iCloud.com/find,购买信息与物流可访问 Apple (中国大陆) 订单状态页面。

0

2026.01.26

npd人格什么意思 npd人格有什么特征
npd人格什么意思 npd人格有什么特征

NPD(Narcissistic Personality Disorder)即自恋型人格障碍,是一种心理健康问题,特点是极度夸大自我重要性、需要过度赞美与关注,同时极度缺乏共情能力,背后常掩藏着低自尊和不安全感,影响人际关系、工作和生活,通常在青少年时期开始显现,需由专业人士诊断。

1

2026.01.26

windows安全中心怎么关闭 windows安全中心怎么执行操作
windows安全中心怎么关闭 windows安全中心怎么执行操作

关闭Windows安全中心(Windows Defender)可通过系统设置暂时关闭,或使用组策略/注册表永久关闭。最简单的方法是:进入设置 > 隐私和安全性 > Windows安全中心 > 病毒和威胁防护 > 管理设置,将实时保护等选项关闭。

0

2026.01.26

2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】
2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】

铁路12306提供起售时间查询、起售提醒、购票预填、候补购票及误购限时免费退票五项服务,并强调官方渠道唯一性与信息安全。

3

2026.01.26

个人所得税税率表2026 个人所得税率最新税率表
个人所得税税率表2026 个人所得税率最新税率表

以工资薪金所得为例,应纳税额 = 应纳税所得额 × 税率 - 速算扣除数。应纳税所得额 = 月度收入 - 5000 元 - 专项扣除 - 专项附加扣除 - 依法确定的其他扣除。假设某员工月工资 10000 元,专项扣除 1000 元,专项附加扣除 2000 元,当月应纳税所得额为 10000 - 5000 - 1000 - 2000 = 2000 元,对应税率为 3%,速算扣除数为 0,则当月应纳税额为 2000×3% = 60 元。

1

2026.01.26

oppo云服务官网登录入口 oppo云服务登录手机版
oppo云服务官网登录入口 oppo云服务登录手机版

oppo云服务https://cloud.oppo.com/可以在云端安全存储您的照片、视频、联系人、便签等重要数据。当您的手机数据意外丢失或者需要更换手机时,可以随时将这些存储在云端的数据快速恢复到手机中。

1

2026.01.26

抖币充值官方网站 抖币性价比充值链接地址
抖币充值官方网站 抖币性价比充值链接地址

网页端充值步骤:打开浏览器,输入https://www.douyin.com,登录账号;点击右上角头像,选择“钱包”;进入“充值中心”,操作和APP端一致。注意:切勿通过第三方链接、二维码充值,谨防受骗

3

2026.01.26

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

25

2026.01.26

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

76

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
SOAP入门教程
SOAP入门教程

共10课时 | 5.3万人学习

XML教程
XML教程

共142课时 | 5.8万人学习

XQuery 教程
XQuery 教程

共12课时 | 3.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号