zoukankan      html  css  js  c++  java
  • 全面复习xml及验证机制DTD

        呵呵,就要面对着找工作了,我得复习以前学过的东东了,以便将来面试与笔试用到,当然最重要的就是巩固学过的知识。

     

    复习1——认识

    XML     extensible markup language(可扩展标记语言)。这里什么是标记呢?对于计算机来说,标记指计算机所能理解的信息符号。那XML是用来作用什么的呢的?简单的来说就是用来存储数据及数据的结构,以便计算机能够识别这些数据以及数据之间的关系。它的常用的用途就是在软件中作为一种配置文件。如我的所用的ssh中,xml形式的配置文件是很常见的。

     

    DTD    Document Type Definition)。在XML技术里,可以编写一个文档来约束一个xml文档的书写规范,DTDXML的一种约束技术。那DTD到底是什么?用XML的一种约束机制来描述是不够的,DTDXML文件组成的一部分,DTDXML文件所扮演的角色就是定义xml文件的元素架构、元素标记和属性!

     

     

    复习2——语法

     

    XML语法    对于XML语法,其实是很简单的,它的语法就只有如下的几个部分。

    1)文档声明

    2)元素

    3)属性

    4)注释

    5)CDATA区、特殊字符

    6)处理指令(Processing instruction)

     

    2.1.1    XML文档——声明

    对于文档声明这是xml中的可选项,但如果要添加的话一定要位于文档的第一行。XML文档声明中包括版本声明(Version)、编码声明(encoding)和独立声明(standalone)。如果XML中有文档声明的话,那个版本声明(Version)是必须要加入那个声明的。下面就是一个完整的XML文档声明示例。

    <?xml  version=1.0  encoding=utf-8  standalone=no ?>

     

    (详解: encoding用来指定文档的字符编码   standalone用来指定文档的信息是否依赖于外部源的信息,其取值有yes/noyes是的是不依赖于外部源的信息,no这个值是默认的指的是依赖于外部源的信息,简单的说就是这份xml文档的内容是否依赖于另外一份文档。)

     

    2.1.2   XML文档——元素

    对于xml文档来说,其元素就是xml的标签,一个标签分为开始标签与结束标签,同时对于标签也可分为含内容体的标签与无内容体的标签。对于格式良好的标签必须只有一个根标签。

    对于XML标签的书写规范就是:

    1、区分大小写。   

    2、不能以数据和下划线及xml开头。

    3、不能包含空格及名称中加冒号。

     

    2.1.3  XML文档——属性

    Xml中标签有自己的属性,属性有自己的名称与值,属性值用单引号与双引号来表示,同时和xml文档有相同的命名规范。当然我们可以把标签的属性作为这个标签的子标签。

     

    2.1.4  XML文档——注释

    Xml中的注释示例为:<!--   注释内容   -->  。要补充的一点就是注释不能像XML元素那样有嵌套的形式。

     

    2.1.5  XML文档——CDATA

    Xml文档中如果有些内容我们想原封不动的输出,这里我们可以把这些内容放到XMLCDATA区中示例如:<![CDATA[原封不动的内容]]>。当然对于单个特殊字符,如果我们想要显示其原始的样式,那么我们也可用转义字符来进行表示。如下我就例出几个常用的转义字符。

    特殊字符 转义字符

    &         &amp;

    <         &lt

    >        &gt;

            &quot;

            &apos;

     

    2.1.6  XML文档——处理指令(Processing instruction)

     处理指令是用来指挥解析引擎如何解析XML文档中的内容。处理指令必须以“<?”开头,以“?>”来作为结束。

     

     

     

     

     DTD语法      DTD的书写,其即可在一个单独的文件中进行编写也可在XML文件中进行编写。对于DTD的语法有如下几个部分。

    1)元素定义

    2)属性定义

    3)实体定义

     

    3.2.1 DTD约束——元素定义

    DTD文档中使用ELELMENT来声明一个XML元素,语法格式如下所示:

    <!ELEMENT 元素名称  元素类型>

    详解:元素类型可是元素内容或类型,如是元素类型可直接写,类型有ANY/EMPTY

    如  <!ELEMENT content ANY> 

        <!ELEMENT content EMPTY>

          如果是元素内容则要括号括起来。

            如  <!ELEMENT books  (book+) >  

                <!ELEMENT books (book*)> 

                <!ELEMENT books (book?)> 

                <!ELEMENT  books  (#PCDATA)>  

                <!ELEMENT book (name ,price)> 

                <!ELEMENT book (name|bookname)> 

         这里我们要请注意的符号为:

                *  ?表示该子元素出现0或一次

                + 表示该子元素出现1次或多次

                element1|element2 表示子元素非element1element2;

               用逗号来分割表示元素的顺序要依括号中的顺序;

     

    3.2.2   DTD约束——属性定义

    DTD中,我们用ATTLIST(attribute list)来设置元素的属性,语法格式如下所示:

    <!ATTLIST 元素名

    属性1  属性值类型   设置说明   默认值

    属性2  属性值类型   设置说明   默认值

    ........

    >

    属性类型描述

    类型描述
    CDATA 值为字符数据 (character data)
    (en1|en2|..) 此值是枚举列表中的一个值
    ID 值为唯一的 id
    IDREF 值为另外一个元素的 id
    IDREFS 值为其他 id 的列表
    NMTOKEN 值为合法的 XML 名称
    NMTOKENS 值为合法的 XML 名称的列表
    ENTITY 值是一个实体
    ENTITIES 值是一个实体列表
    NOTATION 此值是符号的名称
    xml: 值是一个预定义的 XML 值

     

     

    设置描述

     

    解释

    属性的默认值

    #REQUIRED

    属性值是必需的

    #IMPLIED

    属性是非必需的

    #FIXED VALUE

    属性值是固定的

    Value

    直接写一个默认值

     

    示例

    <!ATTLIST  liang  

     

    id   ID  #REQUIRED  

    age  CDATA  #REQUIRED

    tel   CDATA  #IMPLIED

    alias  CDATA  #FIXED  liang01

    love     (lina|yuanhong|kula) kula

         >

    细述:属性id的属性类型为ID,则id的取值在其文档中其值必需是唯一的,要以字母或下划线开始不能有空白。love取值为lianyuanhongkula中的一个,默认为kula(呵呵)。

     

    3.2.2   DTD约束——实体定义

    实体其实就是用一个变量来引用一个值,实体的定义类型有引用实体与参数实体。其格式如下:

     <!ENTITY 实体名称  “实体内容”>

    示例

    <!ENTITY lover kula>

    <!ATTLIST liang

    lover  &lover>

      细述:在我们的属性是ENTITY类型时,我们首先要定义一个实体,格式是  <!ENTITY 实体名称  实体内容(这是一个引用实体),引用实体时我们用 &实体名称  这种形式来引用那个我们定义的实体,这样我们元素的liang lover属性的默认值就是kula。对于实体,还有一个参数实体的定义。格式是<!ENTITY  %实体名称  实体内容>。如<!ENTITY  %info_value  name,age>   引用方式如  <!ELEMENT  people (%info_value)>相当于(!ELEMENT  people  (name,age)>

  • 相关阅读:
    php 函数strpos()
    uploadfy api中文文档
    thinkphp + 美图秀秀api 实现图片裁切上传,带数据库
    mysql 操作用户权限
    window.location 小结)
    turn.js 图书翻页效果
    thinkphp 内置标签volist 控制换行
    js 数据类型转换
    quartz 2.2.1
    Mysql测试链接
  • 原文地址:https://www.cnblogs.com/liangjingguo/p/3366999.html
Copyright © 2011-2022 走看看