XML(简介)

XML(可扩展标记语言)在 20 世纪 90 年代后期登上舞台后,就一直是众多活动和狂热思索的焦点。XML 只是基于普通文本,但却提供了几乎可以在任何两个应用程序间共享数据的方式。
虽然 XML 在概念上很简单,但对 XML 的处理却通常很烦琐(需要编写大量重复性的代码)和复杂(很多容易被忽视的细节导致错误)。
什么时候使用 XML?
什么时候在Web 应用程序中使用 XML?
XML 是格式的选择而不是存储的选择。也就是说,即使你决定用 XML 保存数据,你还要决定是保存到数据库字段里,还是要插入到一个文件里,或者只是以字符串或其他对象的形式保存在内存中。
XML 简介
XML 规范是由 W3C(World Wide Web Consortium)定义的一组指南,用于以纯文本的形式描述结构化数据,一种基于尖括号间标签的标记语言。
XML 没有一组固定的标签。相反,XML 是一种可用于创建其他标记语言的元语言。
下面的文档显示一个保存产品类别的自定义 XML 格式:
<?xml version="1.0" encoding="utf-8" ?> <productCatalog> <catalogName>Acme Fall 2015 Catalog</catalogName> <expiryDate>2015-01-01</expiryDate> <products> <product id="1001"> <productName>Magic Ring</productName> <productPrice>342.10</productPrice> <inStock>true</inStock> </product> <product id="1002"> <productName>Flying Carpet</productName> <productPrice>982.99</productPrice> <inStock>true</inStock> </product> </products> </productCatalog>
标签可以自由使用最能描述你的数据的任意名称,正是这种灵活性使得 XML 非常成功。当然,灵活性也会有缺点。不同公司完全可用不同的标签名来描述相似的数据,尽管所有应用程序都能够解析 XML 数据,但数据的写入者和读取者需要对标签和结构达成共识,才能使读取者可用解释数据并抽取有意义的信息。
XML 的优点
今天,XML 比过去任何一天都更为有用。现代应用程序使用 XML 的好处有以下几点:
格式良好的 XML
XML 是一个非常严格的标准,这种严格性是用于保留广泛的兼容性的。(臭名昭著的 HTML 语言就是在没有这种严格性标准下的产物)
所有的 XML 解析器都会执行一些基本的质量检查。如果一个 XML 文档不能满足所有标准,它就会被彻底拒绝。否则,它就被认为是格式良好的。格式良好的 XML 未必就是正确的 XML ,例如含有错误数据,但 XML 解析器能够解析它。
XML 文档必须满足下面这些条件才能被认为是格式良好的:
XML 命名空间
随着 XML 标准的成长,已创建了数十种 XML 标记语言(通常叫做 XML 语法)。其中很多属于特定的行业、流程和信息类型。如果你需要同时组合两个具有相同名称元素的 XML 语法,会发生什么呢?另一个更典型的问题是如何区分它们?
解决办法在于 XML 命名空间标准。这个标准的核心思想是所有的 XML 标记语言都拥有能够唯一区分相关元素的命名空间。简单的说,命名空间可以在整合时消除同名元素的歧义。
所有的 XML 命名空间都使用 URI(Universal Resource Identifiers,统一资源标识符),一般看起来和网页的 URL 相似。例如,http://www.mycompany.com/mystandard 是一种典型的命名空间,但这不是必要的(也不应该被假设),命名空间可以是任意文本序列,标准是为了确保它的唯一性。
要指定某个元素属于特定的命名空间,只需在开始标签中加入 xmlns(XML Name Space)特性表明要使用的命名空间即可。例如,下面这个元素是http://mycompany/OrderML 命名空间的一部分。
<order xmlns="http://mycompany/OrderML"></order>
你一定会厌倦在所有元素上加入这个特性的烦琐操作,幸好,如果像下面这样加入命名空间,它会成为所有子元素默认的命名空间:
<product xmlns="http://mycompany/OrderML">
<productName>Flying Carpet</productName>
<productPrice>982.99</productPrice>
<inStock>true</inStock>
</product>
你还可以自定义命名空间前缀,在 xmlns 特性中插入一个冒号和一个你想用作前缀的字符:
<ord:order xmlns:ord="http://mycompany/OrderML"
xmlns:cli="http://mycompany/ClientML">
<cli:client>
<cli:firstName>...</cli:firstName>
<cli:lastName>...</cli:lastName>
</cli:client>
<ord:orderItem>...</ord:orderItem>
<ord:orderItem>...</ord:orderItem>
</ord:order>
XML 架构
XML 的灵活性也带来了一些问题。世界各地的开发人员都使用你的 XML 格式,怎样才能保证所有人都遵守规则?
解决办法是创建一个格式文档,它定义你的自定义标记语言的规则,它被称为架构。这些规则不会包括语法细节(那是 XML 标准所要规定的),架构文档需要定义的是符合你的数据类型的逻辑规则,它包括以下几项:
下面的这个 XML 架构定义了前面所示的产品类别规则:
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="productCatalog">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CatalogName" type="xsd:string" />
<xsd:element name="expiryDate" type="xsd:date" />
<xsd:element name="products">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="product" type="productType" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="productType">
<xsd:sequence>
<xsd:element name="productName" type="xsd:string" />
<xsd:element name="productPrice" type="xsd:decimal" />
<xsd:element name ="inStock" type="xsd:boolean" />
</xsd:sequence>
<xsd:attribute name="id" type="xsd:integer" use="required" />
</xsd:complexType>
</xsd:schema>
在这个示例中,<element>标签确定产品类别必须以一个叫做<productCatalog>的根元素开始。<productCatalog>元素内部是一个由3个元素组成的序列。第一个是<catalogName>,它包含普通文本;第二个是<expiryDate>,它包含符合日期呈现规则的文本;第三个是<products>,它包含<product>元素的列表。
每个<product>元素都是一个复杂的类型,因此文档后面又使用<complexType>进行了定义。这个复杂类型(名为<productType>)由含有产品信息的 3 个元素所组成的序列构成。这些元素分别保存文本(<productName>)、十进制数(<productPrice>)、布尔值(<inStock>)。这个复杂类型还包括一个必须的特性 id。
# xml
# 简介
# 简介Objective-C解析XML与JSON数据格式的方法
# 简介C#读取XML的两种方式
# XMLHTTPRequest的属性和方法简介
# [转]XMLHTTPRequest的属性和方法简介
# 气象 XML 数据源应用程序开发指南-简介
# XML简介
# 文档
# 自定义
# 应用程序
# 什么时候
# 是一种
# 解决办法
# 有一个
# 结构化
# 的是
# 都是
# 是一个
# 就会
# 如果你
# 也不
# 都有
# 放在
# 也会
# 在这个
# 还可以
# 第一个
相关文章:
如何用西部建站助手快速创建专业网站?
MySQL查询结果复制到新表的方法(更新、插入)
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
如何在云指建站中生成FTP站点?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
详解jQuery停止动画——stop()方法的使用
网页设计网站制作软件,microsoft office哪个可以创建网页?
如何快速查询网址的建站时间与历史轨迹?
如何用wdcp快速搭建高效网站?
三星网站视频制作教程下载,三星w23网页如何全屏?
如何高效搭建专业期货交易平台网站?
网站制作公司排行榜,抖音怎样做个人官方网站
如何撰写建站申请书?关键要点有哪些?
官网网站制作腾讯审核要多久,联想路由器newifi官网
PHP 500报错的快速解决方法
建站之星安装提示数据库无法连接如何解决?
湖北网站制作公司有哪些,湖北清能集团官网?
制作销售网站教学视频,销售网站有哪些?
已有域名如何免费搭建网站?
如何快速配置高效服务器建站软件?
建站之星在线版空间:自助建站+智能模板一键生成方案
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
如何快速启动建站代理加盟业务?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
外贸公司网站制作哪家好,maersk船公司官网?
孙琪峥织梦建站教程如何优化数据库安全?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
linux top下的 minerd 木马清除方法
建站中国官网:模板定制+SEO优化+建站流程一站式指南
如何选择高效稳定的ISP建站解决方案?
如何快速生成橙子建站落地页链接?
如何零成本快速生成个人自助网站?
如何获取开源自助建站系统免费下载链接?
制作网站的基本流程,设计网站的软件是什么?
宁波自助建站系统如何快速打造专业企业网站?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
c# await 一个已经完成的Task会发生什么
南宁网站建设制作定制,南宁网站建设可以定制吗?
如何安全更换建站之星模板并保留数据?
如何在阿里云虚拟主机上快速搭建个人网站?
建站之星如何助力企业快速打造五合一网站?
定制建站流程解析:需求评估与SEO优化功能开发指南
建站之星如何快速更换网站模板?
c# 在ASP.NET Core中管理和取消后台任务
如何高效生成建站之星成品网站源码?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
Python文件管理规范_工程实践说明【指导】
*请认真填写需求信息,我们会在24小时内与您取得联系。