不是Web开发者所关注的XML基础具体分析

互联网 17-3-17

XML与HTML

首先,XML与HTML类似的,都是一种标记语言。

当初在设计XML时,并非为了将HTML赶下神坛,实际上,XML是为了另外一种目的设计的。

XML旨在传输信息,HTML旨在显示信息

XML有什么用

由于XML是纯文本格式的,因此独立于任何硬件和软件,是一种真正的跨平台数据传输格式。

在XML的基础上,许多其它的技术也得以诞生,比如我们最熟悉的web service,WSDL机制便是基于XML来实现的(也有基于JSON实现的)。

这都得益于XML是一种扩展性非常高的数据传输格式。

语法规则

  • 大小写敏感

  • XML文档必须有根元素

  • 属性值必须加引号

  • 特殊字符的转义

    &lt;   -  <  &gt;   -  >  &amp;  -  &  &apos; -  '  &quot; -  "

元素命名规则

  • 名称可以含字母、数字以及其他的字符

  • 名称不能以数字或者标点符号开始

  • 名称不能以字符 “xml”(或者 XML、Xml)开始

  • 名称不能包含空格

属性

属性必须加引号,如果属性本身有双引号,就用单引号包围它

<a name='steve "aplple" Jobs' />

XML验证

有许多验证方式来验证XML格式是否良好。常用的有以下两种:

  • XML DTD

  • XML Schema

XML DTD

合法的 XML 文档是“形式良好”的 XML 文档,同样遵守文档类型定义 (DTD) 的语法规则:

<?xml version="1.0" encoding="ISO-8859-1"?>  <!DOCTYPE note SYSTEM "Note.dtd">  <note>  <to>George</to>  <from>John</from>  <heading>Reminder</heading>  <body>Don't forget the meeting!</body>  </note>

在上例中,DOCTYPE 声明是对外部 DTD 文件的引用。下面的段落展示了这个文件的内容。

<!DOCTYPE note [    <!ELEMENT note (to,from,heading,body)>    <!ELEMENT to      (#PCDATA)>    <!ELEMENT from    (#PCDATA)>    <!ELEMENT heading (#PCDATA)>    <!ELEMENT body    (#PCDATA)>  ]>

XML Schema

W3C 支持一种基于 XML 的 DTD 代替者,它名为 XML Schema:

<xs:element name="note">    <xs:complexType>    <xs:sequence>      <xs:element name="to"      type="xs:string"/>      <xs:element name="from"    type="xs:string"/>      <xs:element name="heading" type="xs:string"/>      <xs:element name="body"    type="xs:string"/>    </xs:sequence>  </xs:complexType>    </xs:element>

XML命名空间

命名空间的主要目的是解决元素命名冲突的问题。以下两份XML配置文件有命名冲突的问题:

<table>     <tr>     <td>Apples</td>     <td>Bananas</td>     </tr>  </table>
<table>     <name>African Coffee Table</name>     <width>80</width>     <length>120</length>  </table>

使用命名空间来解决冲突后:

<table xmlns="http://www.w3.org/TR/html4/">     <tr>     <td>Apples</td>     <td>Bananas</td>     </tr>  </table>
<table xmlns="http://www.w3school.com.cn/furniture">     <name>African Coffee Table</name>     <width>80</width>     <length>120</length>  </table>

命名空间xmlns属性值本身并没有多大含义,只是为了区分命名空间的不同,但实际上xmlns会被开发者用来标识某些资源。

XML CDATA

所有 XML 文档中的文本均会被解析器解析。

只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。

PCDATA

PCDATA 指的是被解析的字符数据(Parsed Character Data)。XML 解析器通常会解析 XML 文档中所有的文本。当某个 XML 元素被解析时,其标签之间的文本也会被解析:

<message>此文本也会被解析</message>

解析器之所以这么做是因为 XML 元素可包含其他元素,就像这个例子中,其中的 <name> 元素包含着另外的两个元素(first 和 last):

<name><first>Bill</first><last>Gates</last></name>

而解析器会把它分解为像这样的子元素:

<name>      <first>Bill</first>      <last>Gates</last>  </name>

CDATA

术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。

在 XML 元素中,"<" 和 "&" 是非法的。

"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。

"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。

某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代码定义为 CDATA。

CDATA 部分中的所有内容都会被解析器忽略。

CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:

<script>  <![CDATA[  function matchwo(a,b)  {  if (a < b && a < 0) then    {    return 1;    }  else    {    return 0;    }  }  ]]>  </script>

在上面的例子中,解析器会忽略 CDATA 部分中的所有内容。

关于 CDATA 部分的注释:

CDATA 部分不能包含字符串 "]]>"。也不允许嵌套的 CDATA 部分。

标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。

以上就是不是Web开发者所关注的XML基础具体分析的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: Web,XML
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Parse XML Tree 解析XML文件的代码实例

相关资讯