• 技术文章 >后端开发 >XML/RSS教程

    除Web程序员所关注的XML的详细基础介绍

    黄舟黄舟2017-04-21 17:17:53原创615

    XML与HTML

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

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

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

    HTML可以有什么标签,不能有什么标签,是被一系列规范约束的;
    但在XML中,可以定义自己的标签。

    XML有什么用

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

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

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

    语法规则

    元素命名规则

    属性

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

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

    XML验证

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

    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的详细基础介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:xml,Web开发者
    上一篇:lxml处理xml时的字符编码问题 下一篇:用Shell脚本生成XML文件实例详解
    Web大前端开发直播班

    相关文章推荐

    • 详解如何使用XMLHTTP发送超长XML表单数据• 用XsltArgumentList实现xsl的参数调用• XML编程-DOM• 浅谈WEB页面工具语言XML(六)展望

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网