4.4DTD的语法
###4.4 DTD的语法
属性声明
多重属性
<!ATTLIST memo id ID#REQUIRED security (high|low) "high" keywords NMTOKENS #IMPLIED>
memo元素的属性id是必须的,并且该属性的值必须在整个文档中是唯一的;属性security的值可能为"high"或"low",缺省值为"high";属性keywords是可选的,如果出现,那么它的值应该是用空格隔开的若干个XML名称标记keywords = “XML XPathXQuery”和id="memo-2006-03-14“ 都是正确的属性取值
<!ATTLIST sender company CDATA #FIXED "Microsoft">
sender元素的company属性的值为字符数据,并且固定为"Microsoft" <sender company=“Microsoft” />
是正确的 <sender company="Schools" />
则是错误的
是正确的
实体声明
实体(Entity)可以是一段要替换的文本、其他XML标记或者外部文件,类似程序语言中的常数
可以在一个文档中多次调用,或在多个文档中调用同一个实体
默认实体nn& - &, < - <, > - >, ' - ’, " - ”
归为内置实体,不需要在DTD定义
使用实体必须在文档中插入实体的引用
实体引用是指引用实体所代表的一个字符、文本或外部文件
首字符是&,之后是实体名称,结尾是分号,之间不允许空格(&)
可以在元素内容和属性值里面插入实体引用
不能在元素名或属性名里面使用实体
<description>Author & programmer</description> <contacts version="1.0">
字符实体
不需要在DTD中声明 *用来表示不易输入的字符或非ASCII字符(©或者©表示©)
可以在元素内容和属性值里面使用
不能在元素名或属性名里面使用,也不能代替实际的XML标记
普通实体
必须在DTD中先声明
可表示多个字符、文本段,甚至整个文档
实体的值可以是任何良构的XML,但是不能含有根元素,也不能自引用
实体声明
普通实体
普通实体可代替一个外部文件
验证型解析器必须打开外部实体进行解析,非验证型解析器不一定
实体声明
参数实体
参数实体可创建可重用的替换文本段
只能在DTD中引用
替换文本可由DTD的一个或多个声明组成
可用来建立分散在多个文档中的DTD
引用(%NameDeclarations;)
Last updated