XML的notation声明是在DTD(文档类型定义)中使用的语法结构,主要作用是标识非XML格式的数据类型,比如图片、视频、其他格式的文档等,方便XML解析器理解对应外部资源的格式。它通常和外部实体、NOTATION属性配合使用,是XML规范中处理非XML数据的重要部分。

XML notation声明的基础语法
notation声明的标准语法格式如下:
<!NOTATION 记号名称 SYSTEM "外部标识"> <!NOTATION 记号名称 PUBLIC "公共标识" "外部标识">
两种语法格式的区别在于标识方式不同,第一种使用SYSTEM关键字指定系统级的外部标识,第二种使用PUBLIC关键字指定公共标识,同时可以附带系统外部标识。其中记号名称是自定义的标识符,需要符合XML名称的命名规则,不能包含空格和特殊字符。
语法各部分的含义
- <!NOTATION:声明notation的关键字,固定写法,不区分大小写,通常大写以符合DTD的书写习惯。
- 记号名称:自定义的名称,用于后续在DTD或XML元素中引用该notation,比如可以命名为JPEG、PDF等。
- SYSTEM/PUBLIC:二选一的关键字,SYSTEM表示使用系统本地的标识,PUBLIC表示使用公共的标识,公共标识通常是标准化的格式标识。
- 外部标识:用于说明对应数据格式的标识信息,比如MIME类型或者其他格式标识字符串。
完整使用示例
下面是一个完整的DTD示例,包含notation声明以及对应的使用场景:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 文档 [
<!NOTATION jpeg SYSTEM "image/jpeg">
<!NOTATION png PUBLIC "-//W3C//DTD PNG 1.0//EN" "image/png">
<!ELEMENT 图片 EMPTY>
<!ATTLIST 图片
格式 NOTATION (jpeg|png) #REQUIRED
路径 CDATA #REQUIRED
>
]>
<文档>
<图片 格式="jpeg" 路径="test.jpg"/>
<图片 格式="png" 路径="test.png"/>
</文档>
在这个示例中,首先声明了jpeg和png两个notation,然后在图片元素的格式属性中,限制属性值只能是这两个notation名称,这样就能明确每个图片元素的格式类型,解析器可以根据notation的定义处理对应的资源。
注意事项
- notation声明只能出现在DTD内部子集或者外部DTD文件中,不能出现在XML文档的正文部分。
- 记号名称在整个DTD范围内需要唯一,不能重复声明同名的notation。
- 外部标识的内容没有固定格式要求,只要能准确标识对应数据格式即可,通常建议使用标准的MIME类型作为SYSTEM的外部标识。
- 不是所有的XML解析器都会处理notation声明,部分轻量级解析器可能会忽略这部分内容,使用时需要根据解析器的特性调整。
XMLnotation声明语法格式DTD修改时间:2026-07-15 08:09:09