根据DTD实例约束写出xml文件

DTD约束标签

<!ELEMENT 元素名称 类别> 或<!ELEMENT 元素名称 (元素内容)>

类别:约束标签的内容

EMPTY:空标签

PCDATA:普通字符串(没有子标签)

ANY : 可以是任何内容(包含子标签)

(元素内容): 标签包含子标签的情况

顺序问题:

(A,B,C,D): 按顺序依次出现

(A|B|C|D): 任意出现一个(枚举式出现)

数量问题:

A: 必须出现1次

A*: 可以出现0或多次

A+:可以出现1或多次

A?: 可以出现0或1次

扫描二维码关注公众号,回复: 11186793 查看本文章

约束属性

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

默认值:属性是否必须填写

#REQUIRED 属性值是必需的

#IMPLIED 属性不是必需的

#FIXED value

属性类型: 约束属性值

CDATA值为字符数据 (character data)

(en1|en2|…)此值是枚举列表中的一个值

ID 值是唯一的

电视节目表 DTD

由 David Moisan 创造。拷贝自:http://www.davidmoisan.org/

<!DOCTYPE TVSCHEDULE [

<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)> 
<!ELEMENT DESCRIPTION (#PCDATA)>

<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>

]>

根据需求写出xml文件

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

<TVSCHEDULE NAME ="靠谱电竞"><!-- #REQUIRED必须出现的属性 -->
<!-- 这是一个电视节目表->
	<CHANNEL CHAN="bbbibbi1台"> <!--因为有“+”表示一个或多个  -->
		<BANNER>哔哩哔哩 (-)つロ 干杯~</BANNER> <!--#PCDATA: 字符串 -->
		<Day>
			<DATE></DATE>
			<HOLIDAY>暑假</HOLIDAY> <!-- 二者出现一个 -->
		</Day>
		<Day>  <!--因为有“+”表示一个或多个  -->
			<DATE></DATE>
			<HOLIDAY>暑假</HOLIDAY>   <!-- 二者出现一个 -->
		</Day>
	</CHANNEL>
	<CHANNEL CHAN="bbbibbi2台"> <!--因为有“+”表示一个或多个  -->
		<BANNER>哔哩哔哩 (-)つロ 干杯~</BANNER>
		<Day>
			<DATE></DATE>
			<HOLIDAY>暑假</HOLIDAY>
		</Day>
		<Day>
			<DATE></DATE>
			<PROGRAMSLOT VTR="bibi"> <!-- 二者出现一个 -->
				<TIME>2020.5.7</TIME>
				<TITLE RATING="r" LANGUAGE="l">干杯~</TITLE>
				<DESCRIPTION></DESCRIPTION>
			</PROGRAMSLOT>
			
		</Day>
	</CHANNEL>
</TVSCHEDULE>

报纸文章 DTD

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

<!DOCTYPE NEWSPAPER [ 

<!ELEMENT NEWSPAPER (ARTICLE+)>
<!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)>
<!ELEMENT HEADLINE (#PCDATA)>
<!ELEMENT BYLINE (#PCDATA)>
<!ELEMENT LEAD (#PCDATA)>
<!ELEMENT BODY (#PCDATA)>
<!ELEMENT NOTES (#PCDATA)> 

<!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED>
<!ATTLIST ARTICLE EDITOR CDATA #IMPLIED>
<!ATTLIST ARTICLE DATE CDATA #IMPLIED>
<!ATTLIST ARTICLE EDITION CDATA #IMPLIED>

<!ENTITY NEWSPAPER "Vervet Logic Times">
<!ENTITY PUBLISHER "Vervet Logic Press">
<!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press">

]>
根据需求写出xml文件	
<?xml version="1.0" encoding="UTF-8"?>
<!-- 这是一个 报纸文章-->
<NEWSPAPER >
	<ARTICLE AUTHOR ="xuan" EDITOR="editor" DATE="2020.5" EDITION="edttion">
		<HEADLINE AUTHOR="a" EDITOR="e" DATE="d">h</HEADLINE>
		<BYLINE>1990-10-12</BYLINE>
		<LEAD>lx</LEAD>
		<BODY>This is a pare of newspaper!</BODY>
		<NOTES>>Please look at the newspaper!</NOTES>
	</ARTICLE>
</NEWSPAPER>
	

产品目录 DTD

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

<!DOCTYPE CATALOG [
	
	<!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)>
	
]>

根据需求写出xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- 这是一个 产品目录->
	
<CATALOG>
	<PRODUCT NAME="泡泡堂" CATEGORY="HandTool" PARTNUM="pa" PLANT="Chicago" INVENTORY="InStock" >
		<SPECIFICATIONS WEIGHT ="10" POWER ="20kg">s1</SPECIFICATIONS>
		<SPECIFICATIONS WEIGHT ="10" POWER ="20kg">s2</SPECIFICATIONS>
		<OPTIONS FINISH ="Matte" ADAPTER ="Optional" CASE ="HardShell">op1</OPTIONS>
		<PRICE MSRP ="ms" WHOLESALE ="who" STREET ="str" SHIPPING ="ship">pr1</PRICE>
		<PRICE>pr2</PRICE>
		<NOTES>note1</NOTES>
	</PRODUCT>
	<PRODUCT>
		<SPECIFICATIONS>s3</SPECIFICATIONS>
		<PRICE>pr3</PRICE>
	</PRODUCT>
</CATALOG>
原创文章 12 获赞 16 访问量 1566

猜你喜欢

转载自blog.csdn.net/fighting_xuan/article/details/105974706