XML之基础和DTD解析

本笔记可根据W3school教程学习:
  首先-----了解XML文档结构、语法规范、作用
    -----了解DTD约束的作用、具体约束语法
<?xml version="1.0" encoding="UTF-8"?>
<中国>
    <北京><北京>
    <海南></海南>
</中国>
XML:eXensible Markup Language, 指可扩展标记型语言。(我们学过HTML语言也是该类型的,因此很多相似)
     相同点:与HTML都是标记性语言,都用标签来操作。
     与HTML的不同点:HTML是显示数据的,而XML是存储数据的。
               HTML中的标签都是定义好的,而XML中可以自己定义标签和结构。  
               XML可以用中文标签
    功能:作为配置文件
               传输和存储数据。
  如何理解呢?-------在我们写程序中,有很多数据需要在不同的操作系统和语言中交换,不同的操作系统和语言使用不同的方式来存储数据(两者不兼容),
            那么我们通过XML数据以纯文本的格式存储需要的传递和保存的数据,在不同的系统和语言中通过解析相同的XML来确保数据相同。  
          XML 是独立于软件和硬件的信息传输工具。
 
 语法: XML是形成了一种树结构,就是只有一个根标签,该标签包含其他所有的子标签。而所有标签必须要包括两部分---起始标签和结束标签
       而标签本身的需要------严格区分大小写,起始和结束标签必须一致。标签属性的属性值需要用(单、双)引号包含
       标签本身中不能出现空格,其标签文本中的空格不会被自动删除,而是保留下来。
    XML中有些情况会遇到特殊的字符,那些字符本身是被XML语言所官方使用,那么我们在内容使用时,需要特殊转化或代替,比如:<  
    XML注释 ----- <!--注释内容-->
 
    在XML自定义标签中必须遵循命名规范:
      名称可以含字母、数字以及其他的字符
      名称不能以数字或者标点符号开始
      名称不能以字符 “xml”(或者 XML、Xml)开始
      名称不能包含空格
    
    文档结构:XML声明-------必须以<?xml .....?>作为第一行第一列出现。
      文档声明中有三个属性:
        version-----xml中version的属性值有两个(1.0)和(1.1)----1.1版本不具备向下兼容性,常用1.0,代表版本号
        encoding-----xml文本的编码方式
        standalone-----是否依赖其他文件yes/no
 
  注意:当XML中标签无内容时,能自己结束< />
      XML中提供<?xml-stylesheet type="text/css" href="css的路径"?>指令,能链接外部文件,对xml文件设置样式
      尽量不要使用属性,建议使用子元素。
  
  XML的文档构建模块:
        元素-------标签
        属性------提供元素额外的信息,
        实体-------定义普通文本的变量。
        CDATA-----字符数据,不会被解析器解析的数据。该区特殊字符无需转译。
        PCDATA---被解析的字符数据,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &amp;、&lt; 以及 &gt; 实体来分别替换它们。
  
  XML中提供了一种规范:XML的约束----对xml进行相关约束,同时提供一些,定义好的标签供开发者使用。在配置文件中经常使用到。
    dtd约束:将文档类型定义为(DTD),即文档后缀以 .dtd结尾。
         定义合法的XML文档构建模块,使用一系列合法元素来定义文档-----预定好了标签和标签使用规则
         将DTD 可成行声明于XML文档中,也可作为一个外部引用。
    dtd的作用:每一个XML文件可通过dtd文件在描述其自身的格式和验证语法标准
          独立的团体可通过一个标准的DTD来交换数据
         应用程序能某个标准的DTD来验证外部接收到的数据
         
    DTD内部使用----<!DOCTYPE 根元素 [ 元素声明 ]>
    DTD外部引用-----<!DOCTYPE 根元素 SYSTEM "dtd文件路径">
    网上DTD文件引用------<!DOCTYPE 根元素 PUBLIC  "DTD名称"  "DTD文档的URL">
    
  DTD的语法:
      声明元素-------- <!ELEMENT>,有多少个元素,写多少个 <!ELEMENT>,且按顺序,从上往下。
        元素分为简单元素和复杂元素。
            空元素 ---------------<!ELEMENT 元素名称 EMPTY>        
            简单元素----没有子标签的标签-----<!ELEMENT 元素名称  类别>
               空元素----EMPTY关键字声明
               字符串----(#PCDATA)关键字声明
               任意类型----ANY关键字声明
            复杂元素---有子标签的标签-------<!ELEMENT 元素名称 (子元素1,子元素2,....)>
               当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中
               当子元素按照有   |    分隔开的序列进行声时,这些子元素只能出现其中的任意一个。
               当以下符号修饰元素时: +  :表示出现一次或多次
                           :表示出现零次或一次
                           *  :表示出现零次或多次               
          <!ELEMENT note (to,from,heading,body)>
          <!ELEMENT to      (#PCDATA)>
          <!ELEMENT from    (#PCDATA)>
          <!ELEMENT heading (#PCDATA)>
          <!ELEMENT body    (#PCDATA)>

 

      声明属性:<!ATTLIST 元素名称 属性名称 属性类型 默认值 >  
        
        
<!ATTLIST contact fax CDATA #IMPLIED>

    声明实体:实体是用于定义引用普通文本或特殊字符的快捷方式的变量。

        实体引用是对实体的引用

        内部实体声明------一个实体由三部分构成;一个和号(&),一个实体名称,以及一个分号-----<!ENTITY 实体名称 "实体的值">

        外部实体声明------<!ENTITY 实体名称  SYSTEM "URI/URL">

      

 

posted @ 2019-10-31 22:03  唐古拉山之子  阅读(551)  评论(0编辑  收藏  举报