zoukankan      html  css  js  c++  java
  • DTD总结

    1 DTD:document type definition

    1.1  DTD  XML构建模块

    元素,实体,属性,PCDATA,CADTA.

    元素:元素是xml与html的主要构建模块。如html的<head><body>等。元素可以是空元素,包含其他元素和属性。

    实体:实体是用来定义普通文本的变量。实体引用用来对普通文本的引用。如大家熟悉的html中的&nbsp就是对“”空格的实体引用。在xml中有以下的预定义的实体引用。

    实体引用

    字符

    &lt;

    &gt;

    &amp;

    &

    &quot;

    ‘’

    &apos;

             PCDATA:parse character data按字面意思来解释就是可被解析的字符串。PCDATA可被看成是开始标签与结束标签之间的内容。其中的实体会被展开,标签会被当做标示处理。但PCDATA应被不包括<,>等符号,要使用这些符号请用实体引用代替。

             CDATA:character data按字面意思来讲是字符数据,CDATA中的数据标签将不会当做标记,实体也不会展开。

    1.2  DTD元素

    》DTD中声明一个元素

    <!ELEMENT 元素名元素类别>

    <!ELEMENT 元素名(元素内容>

    元素类别可以是ANY 表示任意类型,EMPTY 表示空元素。

    元素内容:

    元素内容使用空白符分隔,表示出现顺序没有要求:

    <!ELEMENT  MYFILE  (TITLE AUTHOR EMAIL)> ×

     用逗号分隔,表示内容的出现顺序必须与声明时一致。

    <!ELEMENT MYFILE (TITLE,AUTHOR,EMAIL)>

     用|分隔,表示任选其一,即多个只能出现一个

    <!ELEMENT  MYFILE  (TITLE|AUTHOR|EMAIL)>

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

                       +: 一次或多次 (书+)

                     ?: 0次或一次 (书?)

                       *: 0次或多次  (书*)

    也可使用圆括号( )批量设置,例

             <!ELEMENT  MYFILE  ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>

    通过()、空白、逗号、|组合n中类型的元素内容。

    1.3 DTD属性

    》属性声明:属性是对元素的额外说明

    声明属性

    属性声明使用下列语法:

    <!ATTLIST 元素名称

                        属性名称1 属性类型 默认值

                        属性名称2 属性类型 默认值

                        …                                                          >

    元素名称定义是哪个元素的属性

    属性类型可以是以下类型

      常用:CDATA,枚举列表(en1|en2|en3…),实体Entity。


    默认值:注意#FIXED value此处的value是让你提供一个固定的默认值

     

    DTD 实例:

    <!ATTLIST 元素名称属性名称1 属性类型默认值>

    <!ATTLIST

                        paymenttype CDATA "check">

    XML 实例:

    <payment type="check" />

    1.3  DTD实体

    实体引用是对实体的引用,实体是用来引用普通文本和特殊字符的变量。

    实体构成: 一个实体由三部分构成: 一个和号 (&),一个实体名称, 以及一个分号 (;)。

    实体引用由内部引用和外部引用:

    一个内部实体声明

    》引用实体定义

    语法:<!ENTITY实体名称 "实体的值">

    引用方式:&实体名称;注意结尾有分号。

    例子:

    DTD 例子:

    <!ENTITY writer "Bill Gates">

    <!ENTITY copyright "Copyright W3School.com.cn">

    XML 例子:

    <author>&writer;&copyright;</author>

     

    》参数实体定义

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

    引用方式:%实体名称; 注意结尾有分号。

    DTD 例子:

              <!ENTITY % TAG_NAMES "name| email | phone| address">

            

       <!ELEMENT personInfo (%TAG_NAMES; | birthday)>

              <!ELEMENT customerInfo (%TAG_NAMES; | companyName)>

    DTD 例子2:

    <!ENTITY % common.attributes

              " id ID #IMPLIED

             accountCDATA #REQUIRED ">

    <!ATTLIST purchaseOrder

    %common.attributes;>

    <!ATTLIST item

    %common.attributes;>

     

    一个外部实体声明

    语法:

    <!ENTITY 实体名称 SYSTEM "URI/URL">

    例子:

    DTD 例子:

    <!ENTITY writer SYSTEM"http://www.w3school.com.cn/dtd/entities.dtd">

    <!ENTITY copyright SYSTEM"http://www.w3school.com.cn/dtd/entities.dtd">

    XML 例子:

    <author>&writer;&copyright;</author>

    1.4  DTD验证

    1.5  DTD实例

    》一个DTD的写法

    <!DOCTYPE 文档根元素 [

    <!ENTITY 实体名称 "实体的值">

     

    <!ELEMENT 元素名元素类别>

    <!ATTLIST 元素名称

                        属性名称1 属性类型 默认值

                        属性名称2 属性类型 默认值

                        …                                                          >

    ]>

    DTD实例例子1:全部看懂这个你就差不多都学会了,老实说DTD实在是太简单了

    产品目录 DTD

    拷贝自:http://www.vervet.com/

    <!DOCTYPE CATALOG [

     

    <!ENTITY AUTHOR "John Doe">

    <!ENTITY COMPANY "JD Power Tools, Inc.">

    <!ENTITY EMAIL "jd@jd-tools.com">

     

    <!ELEMENT CATALOG (PRODUCT+)>

     

    <!ELEMENT PRODUCT

    (SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)>

    <!ATTLIST PRODUCT

    NAME CDATA #IMPLIED

    CATEGORY (HandTool|Table|Shop-Professional) "HandTool"

    PARTNUM CDATA #IMPLIED

    PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago"

    INVENTORY (InStock|Backordered|Discontinued) "InStock">

     

    <!ELEMENT SPECIFICATIONS (#PCDATA)>

    <!ATTLIST SPECIFICATIONS

    WEIGHT CDATA #IMPLIED

    POWER CDATA #IMPLIED>

     

    <!ELEMENT OPTIONS (#PCDATA)>

    <!ATTLIST OPTIONS

    FINISH (Metal|Polished|Matte) "Matte"

    ADAPTER (Included|Optional|NotApplicable) "Included"

    CASE (HardShell|Soft|NotApplicable) "HardShell">

     

    <!ELEMENT PRICE (#PCDATA)>

    <!ATTLIST PRICE

    MSRP CDATA #IMPLIED

    WHOLESALE CDATA #IMPLIED

    STREET CDATA #IMPLIED

    SHIPPING CDATA #IMPLIED>

     

    <!ELEMENT NOTES (#PCDATA)>

     

    ]>

    1.6在xml中引入xml约束

    在xml中引入dtd文件的有两种声明方式:

    (1)内部定义的(定义在XML文件中),

    (2)外部引入的DTD文件(导入)。
    (1)内部定义的很少用到。
     里面进行DTD文档的定义。

    <?xml version="1.0"?>
     <!DOCTYPE 根元素的名称 [
     里面进行DTD文档的定义。
     ]>

    <根元素>

    </根元素>
    (2)外部引入的DTD文件,用得最多。
    这种方式又分为:私有方式、公共方式。
    私有方式:<!DOCTYPE XML根元素的名称 SYSTEM "C:/test.dtd">
    私有方式最后写的是DTD的地址,也可以是一个URL地址。DTD文件并不是XML文档格式来写,DTD文件有自己的书写格式。私有方式关键字是SYSTEM。
    公共方式:<!DOCTYPE XML根元素的名称 PUBLIC "ISO/+/-">
    公共方式最后的标示如果是经过ISO组织认证的用ISO进行标示,没有经过ISO但是经过行业内其他组织认证的用+,没有经过任何组织认证的用-。
    "+//所有人的名称(谁来写的这个DTD文件)//DTD文档的说明"

  • 相关阅读:
    Oracle的并发多版本 读一致性
    挖掘ADO.NET Entity框架的性能
    System.Linq扩张方法Where (Lambda表达式)
    LINQ与HQL (二)
    HQL查询中的几个函数
    LINQ 与 HQL (一)
    C# 3.0的新特性(一)
    共享锁 排他锁
    Psytopic测试
    这些地方才是真正值得去的
  • 原文地址:https://www.cnblogs.com/phisy/p/3363426.html
Copyright © 2011-2022 走看看