加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

DTD约束

发布时间:2020-12-16 02:12:10 所属栏目:百科 来源:网络整理
导读:XML文档声明: ? xml version = "1.0" encoding= "UTF-8" XMl约束: 在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。 常用的XML约束: 1.XML DTD 2.XML Schema DTD约束:(Document Type Definition) 引用DTD约束: 1.当引用在

XML文档声明:

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

XMl约束:
在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。

常用的XML约束:
1.XML DTD
2.XML Schema

DTD约束:(Document Type Definition)

引用DTD约束:

1.当引用在本地时,采用如下方式:

<!DOCTYPE 文档根节点 SYSTEM "DTD文件的URL">

2.当引用的文件是一个公共的文件时,采用如下形式:

<!DOCTYPE 文档根节点 PUBLIC "DTD名称" "DTD文件的URL">


DTD语法细节:

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

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

2.元素类型可以是元素内容、或类型
- 如果是元素内容:则需要使用()括起来,如:

#REQUIRED:必须设置属性
#IMPLIED:可以设置也可以不设置
#FIXED:说明该属性的取值固定为一个值,在XML文件中不能为该属性设置其他值。但需要为该属性提供这个值。
直接只用默认值:在XML中可以设置该值也可以不设置该属性值。若没设置则使用默认值。

举例:

<!ATTLIST 页面作者
  姓名 CDATA #IMPLIED
  年龄 CDATA #IMPLIED
  联系信息 CDATA #REQURED
  网站职务 CDATA #FIXED "页面作者"
  个人爱好 CDATA "上网
>

常用的属性值类型:
1.CDATA:表示属性值为普通文本字符串。
2.ENUMERATED(枚举)
3.ID
4.ENTITY(实体)

属性值类型:
ENUMERATED(枚举):属性的类型可以是一组取值的列表,在XML文件中设置的数值型只能是这个了表中的某个值(枚举)

<? xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE 购物篮[ <!ELEMENT 肉 EMPTY> <!ATTLIST 肉 品种(鸡肉|牛肉|猪肉|鱼肉)"鸡肉"> ]> <购物篮> < 品种="鱼肉"/> < 品种="牛肉"/> </> </购物篮>

ID:
a.表示属性的设置值为一个唯一的值
b.ID属性的值只能由字母,下划线开始,不能出现空白字符。

<? xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE 联系人列表[ <!ELEMENT 联系人列表 ANY> <!ELEMENT 联系人(姓名,EMAIL) ANY> <!ELEMENT 姓名(#PCDATA) ANY> <!ELEMENT EMAIL(#PCDATA) ANY> <!ELEMENT 联系人 编号 ID #REQUIRED ANY> ]>

<联系人列表>
  <联系人 编号="a1"> 
    <姓名>张三</姓名>
    <EMAIL>zhang@163.com</EMAIL>
  </联系人>  
  <联系人 编号="a2"> 
    <姓名>栗色</姓名>
    <EMAIL>lise@163.com</EMAIL>
  </联系人>
</联系人列表>

实体定义:
1.实体用于为一段内容创建一个别名,以后在XML文档中就可以使用别名引用这段内容了。
2.DTD定义中,一条

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

2.引用方式:

&实体名称;

3.举例:

<ENTITY copyright "I am a programmer">
......
&copyright;

参数实体:
1.参数实体被DTD自身使用

2.语法格式:

%实体名称

3.举例1:

<!ENTITY % TAG_NAMES "姓名 | EMAIL | 电话 | 地址">

<!ELEMENT 个人信息 (%TAG_NAMES; | 生日)>
<!ELEMENT 客户信息 (%TAG_NAMES; | 公司名)>

举例2:

<!ENTITY % common.attributes
  "id ID #IMPLIED account CDATA #REQUIRED "
>

...
<!ATTLIST purchaSEOrder %common.attributes;>
<!ATTLIST item %common.attributes;>


xml约束练习实例:

CATELOG.dtd:

<!ENTITY AUTHOR "John Doe">
    <!ENTITY COMPANY "JD Power Tools,Inc.">
    <!ENTITY EMAIL "jd@js-tools.com">

    <!ELEMENT CATELOG (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 (#PCDATA)
        WEIGHT CDATA #IMPLIED
        POWER CDATA #IMPLIED>

    <!ELEMENT OPTIONS (#PCDATA)>
    <!ATTLIST OPTIONS
        FINISH (Metal|Polished|Matte) "Matte"
        ADAPTER (Included|Optional|NotAppcable) "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)>

CATELOG.xml

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

<!DOCTYPE CATELOG SYSTEM "../dtd/CATALOG.dtd">

<CATELOG>
  <PRODUCT NAME="asd" CATEGORY="Shop-Professional">
    <SPECIFICATIONS>abc</SPECIFICATIONS>
    <OPTIONS>asdasdasd</OPTIONS>
    <PRICE>aaaa</PRICE>
    <NOTES>adasdasd</NOTES>
  </PRODUCT>
</CATELOG>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读