手机开发实战86——XML介绍2

简明语法     

  SGML常用来定义针对HTML的文档类型定义(DTD),同时它也常用于编写XMLDTDSGML的问题就在于,它允许出现一些奇怪的语法,这让创建HTML的解析器成为一个大难题:

  某些起始标签不允许出现结束标签,例如HTML<img>标签。包含了结束标签就会出现错误。

  某些起始标签可以选择性出现结束标签或者隐含了结束标签

  某些起始标签要求必须出现结束标签,例如HTML<script>标签。

  标签可以以任何顺序嵌套。即使结束标签不按照起始标签的逆序出现也是允许的,例如,This is a sample string是正确的。

  某些特性要求必须包含值,例如<img src="picture.jpg">中的src特性。

  某些特性不要求一定有值,例如中的nowrap特性。

  定义特性的两边有没有加上双引号都是可以的,所以<img src="picture.jpg"><img src=picture.jpg>都是允许的。

  这些问题使建立一个SGML语言的解析器变成了一项艰巨的任务。判断何时应用以上规则的困难导致了SGML语言的定义一直停滞不前。以这些问题作为出发点,XML逐渐步入我们的视野。

  XML去掉了之前令许多开发人员头疼的SGML的随意语法。在XML中,采用了如下的语法:

  任何的起始标签都必须有一个结束标签。

  可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如<tag />XML解析器会将其翻译成<tag></tag>

  标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如this is a samplestring。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。

  所有的特性都必须有值。

  所有的特性都必须在值的周围加上双引号。

  这些规则使得开发一个XML解析器要简便得多,而且也除去了解析SGML中花在判断何时何地应用那些奇怪语法规则上的工作。仅仅在XML出现后的前六年就衍生出多种不同的语言,包括MathMLSVGRDFRSSSOAPXSLTXSL-FO,而同时也将HTML改进为XHTML

  如果需要关于SGMLXML具体技术上的对比,请查看W3C的注解,位于:http:///TR/NOTE-sgml-xml.html

  如今,XML已经是世界上发展最快的技术之一。它的主要目的是使用文本以结构化的方式来表示数据。在某些方面,XML文件也类似于数据库,提供数据的结构化视图。

文档结构

   每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言,<?xml version="1.0"?>。这一行代码会告诉解析器和浏览器,这个文件应该按照前面讨论过的XML规则进行解析。第二行代码,< books>,则是文档元素(document element),它是文件中最外面的标签(我们认为元素(element)是起始标签和结束标签之间的内容)。所有其他的标签必须包含在这个标签之内来组成一个有效的XML文件。XML文件的第二行并不一定要包含文档元素;如果有注释或者其他内容,文档元素可以迟些出现。

  范例文件中的第三行代码是注释,你会发现它与HTML中使用的注释风格是一样的。这是XMLSGML中继承的语法元素之一。

  页面再往下的一些地方,可以发现<desc>标签里有一些特殊的语法。<! [CDATA[ ]]>代码用于表示无需进行解析的文本,允许诸如大于号和小于号之类的特殊字符包含在文本中,而无需担心破坏XML的语法。文本必须出现<![CDATA[]]>之间才能合适地避免被解析。这样的文本称为Character Data Section,简称CData Section

下面的一行就是在第二本书的定义之前的:

  <?page render multiple authors ?>

  虽然它看上去很像XML序言,但实际上是一种称为处理指令(processing instruction)的不同类型的语法。处理指令(以下简称PI)的目的是为了给处理页面的程序(例如XML解析器)提供额外的信息。PI通常情况下是没有固定格式的,唯一的要求是紧随第一个问号必须至少有一个字母。在此之后,PI可以包含除了小于号和大于号之外的任何字符串序列。

 

  结构良好的XML文档

  如果某个文档符合XML语法规范,那么我们就说这个文档是结构良好的文档。使用本书讲到的XMLSpy 2006工具就可以测试某文档是否为结构良好的XML文档。

  有效的XML文档

所谓有效的XML文档是指通过了DTD的验证的,具有良好结构的XML文档,在此大家要明白XML文档可分为结构良好的XML文档和有效的XML文档,以及他们之间的关系。即具有结构良好的XML文档并不一定就是有效的XML文档,反之一个有效XML文档必定是一个结构良好的XML文档。

 

  XML文档的解析方式

当前有两种解析方式: dtd (文档类型定义)和schema  XML 模式)

 

  有些时候,希望在XML文档中加入一些用做解释的字符数据,并且希望XML处理器不对他们进行任何处理。这种类型的文本称作注释文本。在XML中,注释的方法与HTML完全相同,使用"<!--""-->"将注释文本括起来,注释还有以下规定:

  ·注释不能被嵌套;

  ·在注释文本中不能出现字符"-""—";

·不要把注释文本放在标记之中,同样不要把注释文本放在实体声明之前或实体声明中。

示例:

  <?xml version="1.0" encoding="ISO-8859-1"?>

  <bookstore>

  <book catalog="Programming">

  <title lang="en">C++ Programming Language</title>

  <author>Bjarne Stroustrup</author>

  <year>1998</year>

  <price>98.0</price>

  </book>

  <book catalog="Networking">

  <title lang="en">TCP/IP Illustrated</title>

  <author>Richard Stevens</author>

  <year>1996</year>

  <price>56.0</price>

  </book>

  </bookstore>

 

处理指令PI

  处理指令是用来给处理XML文档的应用程序提供信息的,XML解析器把这些信息原封不动地传给应用程序,由应用程序来解释这个指令,遵照它所提供的信息进行处理。处理指令应该遵循下面的格式:

  <? 处理指令名处理指令信息?>

  下面是一个例子,它是描述辞典信息的XML文档:

  <?xml version="1.0"encoding="UTF-8" standalone="no"?>

  <?xml-stylesheet type="text/xsl"href="mystyle.xsl"?>

  <辞典>

  <词条>

  <词目>XML</词目>

  <解释>XML是一种可扩标记语言,它可用以规定新的标记规则,并根据这个规则组织数据。</解释>

  <示例>

  <!--XML示例>

  <![CDATA[

  <商品>

  <类型>食品类</类型>

  <价格>80</价格>

  </商品>

  ]]>

  </示例>

  </词条>

  </辞典>

  其中的内容,

  <!--XML示例>

  <![CDATA[

  <商品>

  <类型>食品类</类型>

  <价格>80</价格>

  </商品>

  ]]>

  即为PI部分。

 

XML文档对网站的重要性

  互联网论坛收录开放协议是搜索引擎制定的网站内容收录标准,可在网站根目录制作成遵循此开放协议的XML格式的网页供搜索引擎索引,将网页信息主动、及时地告知各大搜索引擎。采用了《互联网论坛收录开放协议》,就相当于网页被搜索引擎订阅,通过搜索引擎平台,网民将有可能在更大范围内更高频率地访问到您的网站,进而为您的网站带来潜在的流量。

  以百度搜索引擎为例,将制作好的XML文件命名为sitemap_baidu.xml上传到您网站根目录下,并保证文件所在的url地址能够被百度spider正常访问。例如,网站为post.baidu.com,则将xml文件上传至post.baidu.com/sitemap_baidu.xml

  当百度spider发现了xml文件后,会根据上面提供的参数自动对xml文件进行更新,并抓取高质量的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值