XML文件结构和基本语法

XML文件结构和基本语法

  • XML文件的结构性内容:节点关系,属性内容等。
  • XML最基本的单位:元素,它由开始标记、属性和结束标记组成。

XML文件示例

例1:使用‘记事本’创建xml文件

在‘记事本’中输入以下内容:


<?xml version="1.0" encoding="gb2312" ?>
  <参考资料>
   <书籍>
     <名称>xml入门精解</名称>
     <作者>张三</作者>
     <价格 货币单位="人民币">20.00</价格>
   </书籍>
   <书籍>
     <名称>xml语法</名称>
     <!--此书即将出版-->
     <作者>李四</作者>
     <价格 货币单位="人民币">18.00</价格>
   </书籍>
  </参考资料>

编辑好后保存以后缀名为’.xml’的文件。此文件可以分为文件序言(prolog)和文件主体两个部分。

  • 文件序言:对应此文件的第一行,该行是一个xml文件必须要声明的内容,并且必须位于xml文件的第一行,它主要是告诉xml解析器如何工作。
    • version表明此xml文件所用的标准的版本号,此内容必须存在
    • encoding表明此xml文件中所使用的字符类型,可以省略。在你省略此声明的时候,后面的字符码必须是unicode字符码(建议不要省略)。
  • 文件主体:除去文件序言,其余部分都属于文件主体,xml文件的内容信息存放在此。文件主体是由开始的**<参考资料>和结束的</参考资料>控制标记组成,这个元素称为xml文件的“根元素”;<书籍>是作为直属于根元素下面的“子元素”;在<书籍>下面又有<名称><作者><价格>等元素。<货币单位><价格>元素中的一个“属性”,“人民币”**则是“属性值”。
    • 注释:<!--此书即将出版-->这一句同html一样,为注释。在xml文件里,注释部分是存放在<!--存放内容-->中。

同html一样,xml文件也是由一系列的标记组成,不过,xml文件中的标记是我们自定义的标记,具有明确的含义,我们可以对标记中的内容的含义作出说明。

XML文件的语法

在讲语法之前,我们必须要了解一个重要的概念,就是xml解析器(xml parse)。

xml解析器

​ 解析器的主要功能就是检查xml文件是否有结构上的错误,剥离xml文件中的标记,读出正确的内容,以交给下一步的应用程序处理。xml是一种用来结构化文件信息的标记语言,xml规范中对于如何标记文件的结构性有一个详细的法则,解析器就是根据这些法则写出来的软件(多用java写成)。

well-formed的xml文件

​ 我们知道,xml必须是well-formed的,才能够被解析器正确地解析出来,显示在浏览器中。那么什么是well-formed的xml文件呢?主要有下面几个准则,我们在创建xml文件的时候,必须满足它们。

  • xml文件的第一行必须是声明该文件是xml文件以及它所使用的xml规范版本。在文件的前面不能够有其它元素或者注释。

  • 在xml文件中有且只能有一个根元素。我们的第一个例子中,<参考资料>… </参考资料>就是此xml文件的根元素。xml文件中,用的大多都是自定义的标记。

  • 在xml文件中的标记必须正确地关闭,也就是说,在xml文件中,控制标记必 须有与之对应的结束标记。如:<名称>标记必须有对应的</名称>结束标记,不像html,某些标记的结束标记可有可无。如果在xml文件中遇到自成一个单元的标记,就是类似于html 中的的这些没有结束标记的时候,xml把它称为“空元素”,必须用这样的写法:<空元素名/>,如果元素中含有属性时写法则为:<空元素 名 属性名=“属性值”/>。

  • 标记之间不得交叉。在以前的html文件中,可以这样写:
    <b><h>xxxxxxx</b></h>,<b>和<h>
      标记之间有相互重叠的区域,而在xml中,是严格禁止这样标记交错的写法,标记必须以规则性的次序来出现。

  • 属性值必须要用“ ”号括起来。如第一个例子中的“1.0”、“gb2312”、“人民币”。都是用“ ”号括起来了的,不能漏掉。

  • 控制标记、指令和属性名称等英文要区分大小写。与html不同的是,在html中, 类似的标记含义是一样的,而在xml中,类似、或这样的标记是不同的。

  • 我们知道,在html文件中,如果我们要浏览器原封不动地将我们所输入的东西显示出来,可以将这些东西放到<pre></pre>或者<xmp> </xmp>标记中间。这对于我们创建html教学的网页是必不可少的,因为网页中要显示html的源代码。而在xml中,要实现这样的功能,就必须使用 cdata标记。在cdata标记中的信息被解析器原封不动地传给应用程序,并且不解析该段信息中的任何控制标记。cdata区域是由:“<! [cdata[”为开始标记,以“]]>”为结束标记。例如:例2中的源码,除了“<![cdata[”和“]]>”符号,其余的内容解析器将原封不动地 交给下游的应用程序,即使cdata区域中的开始和结尾的空白以及换行字符等,都同样会被转交(注意cdata是大写的字符)。

xml具体使用注意事项
  • xml的声明

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

    这是一个XML处理指令。处理指令以 **<?**开始,以**?>结束。<?**后的第一个单词是指令名,如xml, 代表XML声明。
    version, standalone, encoding 是三个特性,特性是由等号分开的名称-数值对,等号左边是特性名称,等号右边是特性的值,用引号引起来。

    几点解释:

    • version: 说明这个文档符合1.0规范
    • standalone: 说明文档在这一个文件里还是需要从外部导入, standalone 的值设为yes 说明所有的文档都在这一文件里完成
    • encoding: 指文档字符编码
  • xml根元素定义

    ​ XML文档的树形结构要求必须有一个根元素。根元素的起始标记要放在所有其它元素起始标记之前,根元素的结束标记根放在其它所有元素的结束标记之后,如

    <?xml version="1.0" standalone="yes" encoding="UTF-8”?> <Settings> <Person>Zhang San</Person> </Settings>

  • xml元素

    元素的基本结构由 开始标记,数据内容,结束标记组成,如

    <Person> <Name>Zhang San</Name> <Sex>Male</Sex> </Person>

    需要注意的是:

    • 元素标记区分大小写, 与 是两个不同的标记
    • 结束标记必须有反斜杠,如

    XML元素标记命名规则如下:

    • 名字中可以包含字母,数字及其它字母
    • 名字不能以数字或下划线开头
    • 名字不能用xml开头
    • 名字中不能包含空格和冒号
  • xml中的注释

    XML中注释如下:

    <!-- this is comment -->
    需要注意的是:

    • 注释中不要出现“–”或“-”
    • 注释不要放在标记中
    • 注释不能嵌套
  • PI (Processing Instruction)

    PI 指 Processing Instruction, 处理指令。PI以“<?”开头,以“?>”结束,用来给下游的文档传递信息。

    <?xml:stylesheet href="core.css" type="text/css" ?>
    例子表明这个XML文档用core.css控制显示。

  • PCDATA

    PCDATA: specifies that an element will contain parsed character data.
    举例说明PCDATA的用法, 其中movies.xml 存储电影内容数据,movies.dtd对movies.xml进行验证。

    示例文件(movies.dtd)

    <?xml version="1.0" encoding="GB2312"?>
    <!ELEMENT movies (id, name, brief, time)>
    <!ATTLIST movies type CDATA #REQUIRED>
    <!ELEMENT id (#PCDATA)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT brief (#PCDATA)>
    <!ELEMENT time (#PCDATA)>
    

    id, name, brief, time只能包含非标记文本(不能有自己的子元素)。

    XML文件如下所示(movies.xml):

    <?xml version="1.0" encoding="GB2312"?>
    <!DOCTYPE movies SYSTEM "movies.dtd">
    <movies type="动作片">
      <id>1</id>
      <name>致命摇篮</name>
      <brief>李连杰最新力作</brief>
      <time>2003</time>
    </movies>
    
  • CDATA

    CDATA用于需要把整段文本解释成纯字符数据而不是标记的情况。当一些文本中包含很多“<”,“>”,“&”,“””等字符而非标记时,CDATA会非常有用。

    <Example>
    <![CDATA[
     <Person>
       <Name>ZhangSan</Name>
       <Sex>Male</Sex>
     </Person>
    ]]>
    </Example>
    
  • Entities(实体)

    Entities(实体)是XML的存储单元,一个实体可以是字符串,文件,数据库记录等。实体的用处主要是为了避免在文档中重复输入,我们可以为一个文档定义一个实体名,然后在文档里引用实体名来代替这个文档,XML解析文档时,实体名会被替换成相应的文档。

    XML为五个字符定义了实体名:

    实体字符
    &lt;<
    &gt;>
    &amp;&
    &quot;
    &apos;

    定义并引用实体的示例:

    <!DOCTYPE example [
     <!ENTITY intro "Here is some comment for entity of XML">
    ]>
    <example>
      <hello>&intro;</hello>
    </example>
    
  • DOCTYPE

    “<!DOCTYPE[]>”紧随XML声明,包括所有实体的声明,如下所示:

    <!DOCTYPE example [
     declare your entities here…
    ]>
    <example>
      Body of document…
    </example>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值