基本的 XML 文件及XML的节点类型

XML 文件的基本组成部分包括:

  • XML 声明:基本的声明 <?xml version"1.0"?> 将这个文件定义为 XML 文档。在声明中指定一种字符编码的情况并不鲜见,如下所示。通过这种方式,不管该 XML 文件使用的语言或字符编码是什么,只要解析器理解特定的编码,它就能够正确地读取该 XML 文件。
  • DOCTYPE 声明:XML 是人机之间交换信息的便利手段,但是要使它能够顺利地工作,必须要有一个公共的词汇表。可选的 DOCTYPE 声明可用于指定一个应该用来与此文件做比较的文档(在本例中为 orders.dtd),以确保不会产生任何混淆或丢失信息(例如,丢失一个 userid 或错误拼写某个元素名称)。以这种方式处理过的文档称为有效的文档。成功的有效性检查并不是 XML 所必需的,后面的例子实际上从文档中省略了 DOCTYPE 声明。
  • 数据本身:XML 文档中的数据必须包含在单个根元素内,比如下面的 orders 元素。要使 XML 文档得到处理,它必须是格式良好的(well-formed)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ORDERS SYSTEM "orders.dtd">

    <orders>

       <order>
          <customerid limit="1000">12341</customerid>
          <status>pending</status>
          <item instock="Y" itemid="SA15">
             <name>Silver Show Saddle, 16 inch</name>
             <price>825.00</price>
             <qty>1</qty>
          </item>
          <item instock="N" itemid="C49">
             <name>Premium Cinch</name>
             <price>49.00</price>
             <qty>1</qty>
          </item>
       </order>
       <order>
          <customerid limit="150">251222</customerid>
          <status>pending</status>
          <item instock="Y" itemid="WB78">
             <name>Winter Blanket (78 inch)</name>
             <price>20</price>
             <qty>10</qty>
          </item>
       </order>

    </orders>
     

    DOM 本质上是节点的集合。 由于一个文档中可能包含不同类型的信息,因此要定义不同类型的节点。

    在创建 XML 文件的层次时,产生某些在概念上类似如下结构的内容是很自然的。 虽然它是对所包括的数据的精确描述,但它不是对 DOM 所表示的数据的精确描述。这是因为它表示了 元素,但是没有表示 节点

    DOM 的初步层次图

    元素和节点的区别

    元素只是节点的一种类型,它们甚至不表示上图似乎要揭示的内容。 元素节点是信息的容器。该信息可能是其他元素节点、文本节点、属性节点或其他类型的信息。对该文档的更精确描绘如下:

    正确的 DOM

    矩形框表示元素节点,椭圆表示文本节点。 当一个节点包含在另一个节点之内时,它就被认为是后一个节点的孩子

    注意 orders 元素节点不是只有两个子节点,而是有五个子节点:两个 order 元素,以及它们之间后周围的文本节点。即使没有内容,order 元素之间的空白也会构成一个文本节点。类似地, item 具有七个子节点:namepriceqty,以及它们周围的四个文本节点。

    还要注意,可能被认为是某个元素的内容的东西,比如“Premium Cinch”,实际上却是作为 name 元素的子节点的文本节点的内容。

    基本的节点类型:文档、原始、属性和文本

  • 元素:元素是 XML 的基本构造模块。通常,元素拥有子元素、文本节点,或两者的组合。元素节点也是能够拥有属性的唯一节点类型。
  • 属性:属性节点包含关于元素节点的信息,但是并不实际认为是元素的孩子,比如在下面的例子中:
    <customerid limit="1000">12341</customerid>
    
  • 文本:文本节点就是名副其实的文本。它可以由更多信息组成,也可以只包含空白。
  • 文档:文档节点是文档中其他所有节点的父亲。

    不太常见的节点类型:CDATA、注释、处理指令,以及文档片断

    CDATA:字符数据(Character Data)的缩写,这是一个特殊的节点,它包含不应该被解析器分析的信息。相反,它包含的信息应该以纯文本传递。例如,可能会为了特殊目的而存储 HTML 标签。在通常情形下,处理器可能尝试为所存储的每个标签创建元素,而这样可能导致文档不是格式良好的。这些问题可用通过使用 CDATA 节(section)来避免。这些节使用特殊的符号来编写:

    <[CDATA[Important:  Please keep head and hands inside ride at all times.]]>

    注释:注释包括关于数据的信息,通常被应用程序忽略。它们写为如下形式:

    <!--  This is a comment. -->

    处理指令:处理指令是专门针对应用程序的信息。其中一些例子包括要执行的代码或者关于从何处寻找样式表的信息。例如:

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

  • 文档片断:要使文档成为格式良好的,它必须仅有一个根元素。有时在使用 XML 的时候,必须临时创建多组元素,这些元素不一定满足这个要求。文档片断看起来类似如下:
          <item instock="Y" itemid="SA15">
             <name>Silver Show Saddle, 16 inch</name>
             <price>825.00</price>
             <qty>1</qty>
          </item>
          <item instock="N" itemid="C49">
             <name>Premium Cinch</name>
             <price>49.00</price>
             <qty>1</qty>
          </item>
    

    其他类型的节点包括实体、实体引用节点,以及注解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值