• 04_XML_04_XMLDTD语法


    【DTD语法约束细节】

    * 元素定义

    * 属性定义

    * 实体定义

    【1.元素定义】

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

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

    元素类型可以是元素内容、或类型

    1. 若是元素内容,需要使用 ( ) 括起来,如下:

          

      

      1.1.元素内容可以使用如下方式,描述内容的组成关系

       * 用逗号分隔,表示内容的出现顺序必须与声明时一致。表示<书></书>节点内只能有<书名><作者><售价>等节点

        

       * 用 | 分隔,表示任选其一,即多个只能出现一个。表示<书></书>节点内只能有一个<书名>、<作者>、<售价>节点

        

      1.2.在元素内容中也可以使用+*?等符号表示元素出现的次数。

         + :1次或 多次,如 ( 书+ ) 

          

        ? : 0次或 1次,如:( 书? )

          

        * : 0次或 多次,如: ( 书* )

          

      1.3.也可以使用圆括号批量设置,例如:

      

      表示<书></书>节点中出现((书名*,作者?,邮箱)*)或者出现<评论>0次或1一次。

        

      2.若是元素类型,则直接书写,DTD规范定义了如下几种类型:

       * EMPTY : 用于定义空元素,例如<br/> <hr/>

       * ANY:表示元素内容为任意类型,如下表示<书架></书架>节点内可以放置任意节点

          

    【属性定义】

     XML文档中的标签属性需通过ATTLIST为其设置属性。

    1.语法格式:

    <!ATTLIST 元素名

      属性名1 属性值类型  设置说明

      属性名2 属性值类型  设置说明

      .....

    >

    属性声明举例:

    对应的XML文件:

    2. 设置说明

    #REQUIRED必须设置该属性

    #IMPLIED:可以设置也可以不设置

    #FIXED:说明该属性的取值固定为一个值,在XML文件中不能为该属性设置其他值,但需要为该属性提供这个值。

    #直接使用默认值:在XML中可以设置该值也可以不设置该值。没有任何设置就用默认值

    举例如下:

    DTD文件为:

     3. 常用属性值类型

    CDATA:普通文本字符串

    ENUMERATED:枚举

    ID:即id类型

    ENTITY:实体

    *例子1

     

    *例子2:ID属性

    ID类型的属性值表示 属性的设置值为一个唯一值。

    ID属性的的值只能由字母、下划线开始,不能为空字符。

    *例子三 实体

    实体用于为一段内容创建一个别名,以后在XML文档中就可以使用别的别名应用这段内容例了。

    在DTD定义中,一条<!ENTITY ..>语句就用于定义一个实体。

    实体分为两种类型:引用实体和参数实体。

     1.引用实体:

      引用实体主要在XML文档中被应用

      语法格式:<!ENTITY 实体名称 "实体内容" > :直接转变成实体内容

      引用方式: &实体名称

      举例如下:

      在DTD文件中实体如下:

      

      对应的XML文件中引用如下:

      

     2.参数实体

      参数实体被DTD文件自身引用

      语法格式:<!ENTITY % 实体名称 "实体内容">

        引用方式:%实体名称

      举例1:

      在user1.dtd中:

      

      在user2.dtd中:

      

      举例2

      在user1.dtd中

          

      在user2.dtd中

      

      

       

  • 相关阅读:
    MVC部署到IIS 出现未能加载文件或程序集“System.Web.Http.WebHost.....
    web在线聊天框滚动条自动在底部
    IE 浏览器下英文 微软雅黑 不起作用
    U3D MonoBehaviour.InvokeRepeating 和 MonoBehaviour.Invoke
    U3D 中关于相同的怪物不发生碰撞 或者是想让一些物体发生碰撞 又不想让一些物体发生碰撞
    U3D 2D中给精灵添加刚体后 发现精灵会倒 ..
    Axure教程 | 轻量级的后台原型框架
    Axure:侧导航收缩与展开
    SQLSERVER数据库调优
    MySQL用GROUP BY分组取字段最大值或最新一条
  • 原文地址:https://www.cnblogs.com/HigginCui/p/5811903.html
Copyright © 2020-2023  润新知