python 生成xml时如何规定dtd
一、DTD文档的声明及引用
1.内部DTD文档
<!DOCTYPE 根元素 [定义内容]>
2.外部DTD文档
引入外部的DTD文档分为两种:
(1)当引用的DTD文件是本地文件的时候,用SYSTEM标识,并写上”DTD的文件路径”,如下:
<!DOCTYPE 根元素 SYSTEM "DTD文件路径">
(2)如果引用的DTD文件是一个公共的文件时,采用PUBLIC标识,如下方式:
<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文件的URL">
比如下例:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/ web-app_2_3.dtd">
相关推荐:《Python基础教程》
二、DTD基本语法:
<!ELEMENT NAME CONTENT>
其中:
– ELEMENT是关键字,是不能修改的
– NAME表示元素名称
– CONTENT是元素类型,必须要大写!CONTENT的内容有三种写法:
(1)EMPTY——表示该元素不能包含子元素和文本,但可以有属性。
(2)ANY——表示该元素可以包含任何在该DTD中定义的元素内容
(3)#PCDATA——可以包含任何字符数据,但是不能在其中包含任何子元素
三、DTD元素的组合类型:
DTD中这样规定:
<!ELEMENT 家庭(人+,家电*)>
这个DTD规定了家庭元素中可以有1到多个”人”这个子元素,也可以有0到多个”家电”这个子元素。其中的加号”+”和星号”*”的含义与正则表达式中的含义一致。
XML这样写:
<家庭> <人 名字="张晓明" 性别="男" 年龄="25"/> <人 名字="李小钢" 性别="男" 年龄="36" 爱好="作个教育家和伟人"/> <家电 名称="彩电" 数量="3"/> </家庭>
关于组合类型,有下述的的修饰符可以使用:
四、属性定义
DTD中属性的定义是这样的:
<!ATTLIST 元素名称 属性名称 类型 属性特点 属性名称 类型 属性特点...... >
其中,属性的类型有下面5种:
(1) CDATA (2) ID (3) IDREF/IDREFS (4) Enumerated (5) ENTITY/ENTITIES
属性的特点有如下4种:
(1) #REQUIRED,表示这个属性必须给,不给就报错 (2) #IMPLIED,表示这个属性可以给也可以不给 (3) #FIXED value,表示这个属性必须给一个固定的value值 (4) Default value,表示这个属性如果没有值,就分配一个默认的value值
来源:PY学习网:原文地址:https://www.py.cn/article.html