1引言
可扩展标记语言(Markup Language,缩写为XML)描述了一类称为XML文档并部分描述处理它们的计算机程序的行为。XML是一个应用程序标准通用标记语言SGML的配置文件或限制形式【ISO 8879】通过构造,XML文档符合SGML文件。
XML文档由称为实体,其中包含已分析的或未分析的数据。分析的数据由以下部分组成字符,其中一些形式字符数据以及其中一些形式标记.标记对文档存储布局的描述进行编码和逻辑结构。XML提供了一种对存储布局和逻辑结构。
[定义:称为xml处理器用于阅读XML文档并提供对其内容和结构的访问。][定义:假设XML处理器代表另一个称为应用.]本规范描述了XML处理器所需的行为它必须如何读取XML数据以及它必须提供的信息应用程序。
1.1起源和目标
XML是由XML工作组开发的(最初是称为SGML编辑审查委员会),由万维网联盟(W3C)于1996年成立。会议由Sun的Jon Bosak主持XML特殊利益集团积极参与的微系统(以前称为SGML工作组)也由W3C组织。这个XML工作组的成员在附录中给出。丹康纳利担任工作组与W3C的联系人。
XML的设计目标是:
XML应能在互联网上直接使用。
XML应支持多种应用程序。
XML应与SGML兼容。
应易于编写处理XML文档的程序。
XML中可选功能的数量应保持为绝对值最小值,理想为零。
XML文档应该是人可读的,并且相当清晰。
XML设计应该很快准备好。
XML的设计应正式简洁。
XML文档应易于创建。
XML标记中的严格性是最不重要的。
本规范以及相关标准(Unicode和ISO/IEC 10646用于字符,Internet RFC 1766用于语言识别标签,ISO 639用于语言名称代码,ISO 3166用于国家名称代码),提供了理解XML 1.0版和构造所需的所有信息计算机程序来处理它。
此版本的XML规范可以自由分发,只要所有文本和法律通知保持不变。
1.2术语
用于描述XML文档的术语在本规范正文。使用以下列表中定义的术语在构建这些定义和描述XML处理器的操作时:
- 可以
[定义:合格文件和XML处理器可以但无需按所述进行操作。]
- 必须
[定义:合格文件和XML处理器必须按所述方式工作;否则就是错误。]
- 错误
[定义:违反本规范的规则;结果未定义。符合要求的软件可能检测并报告错误,并可能从中恢复。]
- 致命错误
[定义:错误一致的xml处理器必须检测并向应用程序报告。遇到致命错误后,处理器可以继续处理数据以搜索进一步的错误并可向应用程序报告此类错误。为了支持纠正对于错误,处理器可能会从文档中生成未处理的数据(使用混合字符数据和标记)。一次检测到致命错误,但处理器不能继续正常运行处理(即不得继续传递字符数据和信息以正常方式将文档的逻辑结构发送给应用程序)。]
- 按用户选项
[定义:合格软件可能或必须(取决于句子中的情态动词)行为如上所述;如果是,它必须为用户提供启用或禁用的方法描述的行为。]
- 有效性约束
[定义:规则适用于所有有效的XML文档。违反有效性约束是错误;用户可以选择,报告人验证XML处理器.]
- 格式良好约束
[定义:适用于所有人的规则形成良好的XML文档。违反格式良好约束的行为包括致命错误.]
- 比赛
[定义:(字符串或名称:)要比较的两个字符串或名称必须相同。具有多个字符ISO/IEC 10646中的可能表示法(例如,带有两个预编码的字符和base+音调符号形式)只有在它们具有相同表示形式时才匹配在两个字符串中。不进行箱子折叠。(中的字符串和规则grammar:)如果字符串属于语言,则它与语法产物相匹配由该生产产生。(关于内容和内容模型:)元素当它符合约束中描述的方式时,匹配其声明[VC:元素有效].]
- 为了兼容性
[定义:[公元87年]标记描述XML功能的句子,以确保该XML仍然与SGML兼容。]
- 实现互操作性
[定义:[公元87年]标记一个句子描述包含的非约束性建议,以增加XML文档可以由现有安装的SGML处理器处理它早于ISO 8879的WebSGML适配附件。]
2文件
[定义:数据对象是XML文档如果是的话形成良好的,如本规范所定义。格式良好的XML文档此外,还可以有效的如果它遇到某些进一步的限制。]
每个XML文档都有一个逻辑以及物理结构。在物理上,文档由称为实体.实体可以参考将其纳入文档。文档以“根”开头,或文档实体从逻辑上讲,文件是由声明、元素、注释、字符引用和处理指令,所有这些指令都在文档中通过显式标记指示。逻辑和物理结构必须正确嵌套,如中所述4.3.2格式良好的解析实体.
2.1格式良好的XML文档
[定义:文本对象是一个形成良好的XML文档,如果:]
整体而言,它与标签上的产品相匹配文件.
它满足本规范中给出的所有格式良好的约束。
每个已分析的实体文件中直接或间接引用的是形成良好的.
文件
匹配文件生产意味着:
它包含一个或多个元素.
[定义:确实有一个元素,称为根,或文档元素,不包含其中的任何部分出现在内容任何其他元素。]【E17】对于所有其他元素,如果启动标签位于另一个元素的内容中结束标记位于同一元素的内容中。更简单地说元素由开始标记和结束标记分隔,相互正确嵌套。
[定义:作为因此,对于每个非根元素C类
在文档中,还有一个因素P(P)
在文件中C类
在的内容中P(P)
,但不在的内容中内容中的任何其他元素P(P)
.P(P)
被称为起源属于C类
、和C类
作为一个小孩属于P(P)
.]
2.2字符
[定义:A已分析实体包含文本,一系列字符,可以表示标记或字符数据。][定义:A性格是的原子单位ISO/IEC 10646规定的文本[ISO/IEC 10646] 【E67】(另请参阅[ISO/IEC 10646-2000]). 合法字符为制表符,回车符、换行符和Unicode和ISO/IEC的法律字符10646【E69】这个引用的这些标准的版本A.1规范工具书类在编制本文件时是最新的。新建这些标准可以通过修订或新版本添加字符。因此,XML处理器必须接受指定范围内的任何字符对于烧焦.使用“兼容字符”,如定义见第6.8节[统一码] 【E67】(另请参见第3.6节中的D21[联合码3]),不鼓励。]
字符范围
[2] |
烧焦 | ::= |
#x9|#xA|#xD|[#x20-#xD7FF]|[#xE000-#xFFFD]|[#10000-#x10FFFF] | /*任何Unicode字符,不包括代理块,FFFE和FFFF*/ |
编码字符代码的机制指向位模式可能因实体而异。所有XML处理器必须接受10646的UTF-8和UTF-16编码;发出以下信号的机制讨论了这两种编码中的一种正在使用,或用于发挥其他编码的作用稍后,在4.3.3实体中的字符编码.
2.3常见句法结构
本节定义了一些使用的符号在语法中广泛使用。
S公司(空白)包括一个或多个空格(x20)字符、回车符、换行符或制表符。
空白
[3] | S公司 | ::= | (#x20|#x9|#xD|#xA)+ |
为了方便起见,字符被分类为字母,数字或其他字符。【E30】字母由字母或音节基本字符或表意字符。每个字符中特定字符的完整定义类在中给出B字符类.
[定义:A姓名是一个以字母或几个标点符号之一开头的标记,以及继续使用字母、数字、连字符、下划线、冒号或句号,合称为名称字符。]名称以字符串“xml格式
“,或任何匹配的字符串(('X'|'X')('M'|'M')(‘L'|'L'))
,保留在本版本或未来版本中用于标准化规范。
注:
【E98】命名空间在XML建议中[XML名称]赋予意义包含冒号字符的名称。因此,作者不应使用XML名称中的冒号(命名空间除外),但XML处理器必须接受冒号作为名称字符。
安名字符号(名称标记)是名称字符的任意混合。
姓名和代币
文字数据是不包含引号的任何带引号的字符串用作该字符串分隔符的标记。文字用于指定内部实体的内容(实体值),属性值(AttValue(附件值))、和外部标识符(SystemLiteral(系统文字)). 请注意SystemLiteral(系统文字)可以在不扫描的情况下进行分析用于标记。
直接常量
[9] | 实体值 | ::= | '"' ([^%&"] |PEReference(性能参考)|参考)* '"' |
| | | | "'" ([^%&']|PEReference(性能参考)|参考)* "'" |
[10] | AttValue(附件值) | ::= | '"' ([^<&"] |参考)*'"' |
| | | | "'" ([^<&']|参考)* "'" |
[11] | SystemLiteral(系统文字) | ::= | ('"' [^"]* '"') | ("'" [^']* "'") |
[12] | PubidLiteral(公共文字) | ::= | '"'PubidChar公司* '"' | "'" (PubidChar公司- "'")* "'" |
[13] | PubidChar公司 | ::= | #x20|#xD|#xA|[a-zA-Z0-9]|[-'()+,./:=?;!*#@$_%] |
注:
[第72页]虽然实体值生产允许定义由单个显式<
在字面上(例如。,<!实体mylt“<”>
),强烈建议避免这种做法,因为任何对该实体的引用都会导致格式良好错误。
2.4字符数据和标记
文本包含混合的字符数据和标记。[定义:标记采取以下形式启动标签,结束标记,空元素标记,实体参考文献,性格参考文献,评论,CDATA部分定界符,文档类型声明,处理指令,[公元89年]XML声明,文本声明,以及位于文档实体(即,在文档元素外部,而不是在任何其他标记)。]
[定义:所有非标记文本构成字符数据属于文档。]
与号字符(&)和左尖括号(<)可能以文字形式出现只有用作标记时分隔符,或在评论,一处理指令,或aCDATA部分.如果其他地方也需要它们,必须如此逃脱使用其中之一数字字符引用或字符串“&;
“和"&它;
“分别。可以表示直角括号(>)使用字符串“>;
“而且必须,为了兼容性,使用“>;
“或字符串中出现的字符引用”]]>
“在内容中,当该字符串未标记CDATA部分.
在元素的内容中,字符数据是不包含start-delimiter的任何字符串任何标记。在CDATA部分中,字符数据是任何字符串不包括CDATA-section-close分隔符,“]]>
".
为了允许属性值同时包含单引号和双引号,撇号或单引号字符(')可以表示为“&载脂蛋白;
",双引号字符(“)为”";
".
字符数据
[14] | 字符数据 | ::= | [^<&]* - ([^<&]* ']]>' [^<&]*) |
2.5评论
[定义:评论可能出现在文档中其他位置以外的任何位置标记; 此外,它们可能出现在文档中在语法允许的位置进行类型声明。它们不是文档的字符数据;XML处理器可能(但不一定)使应用程序能够检索注释文本。为了兼容性,字符串“--
“(双连字符)不得出现在评论中。]【E63】注释中无法识别参数实体引用。
评论
[15] | 注释 | ::= | '<!--' ((烧焦- '-') | ('-' (烧焦- '-')))* '-->' |
注释示例:
【E27】请注意,语法不允许注释以结尾--->
。以下示例是不形成良好。
2.6处理说明
[定义:处理说明(PI)允许文档包含说明适用于应用程序。]
处理说明
[16] |
圆周率 | ::= | '<?'P目标(S公司(烧焦* - (烧焦* '?>'烧焦*)))?'?>' |
[17] | P目标 | ::= | 姓名-(('X'|'X')('M'|'M')('L'|“l”) |
个人信息不是文档的一部分字符数据,但必须传递给应用程序。PI以目标开始(P目标)用于标识指令所指向的应用程序。目标名称“XML格式
", "xml格式
“,等等被保留用于本规范或未来版本的标准化。这个XML格式符号机制可能是用于PI目标的正式声明。【E63】处理过程中无法识别参数实体引用说明。
2.7CDATA部分
[定义:CDATA部分可能出现在任何可能出现字符数据的地方;他们用于转义包含字符的文本块,否则被识别为标记。CDATA部分以字符串“<![CDATA(CDATA)[
“并以字符串结尾”]]>
":]
CDATA部分
[18] |
CD节 | ::= |
CD启动 C数据 CD结束 |
[19] | CD启动 | ::= | '<![CDATA[' |
[20] |
C数据 | ::= |
(烧焦* - (烧焦* ']]>'烧焦*)) |
[21] |
CD结束 | ::= |
']]>' |
在CDATA部分中,只有CD结束字符串被识别为标记,因此左尖括号和与号可能以其字面形式出现;他们不需要(也不可能)使用转义“&它;
“和”&;
“.CDATA节无法嵌套。
CDATA部分的示例,其中“<问候语>
“和”</问候语>
“被确认为字符数据,不是标记:
<![CDATA[问候语>你好,世界!</问候语>> |
2.8序言和文档类型声明
[定义:XML文档可以而且应该以XML声明它指定了正在使用的XML的版本。]例如,以下内容是一个完整的XML文档,形成良好的但不是有效的:
<?xml版本=“1.0”?><问候语>你好,世界</问候语> |
这也是:
版本号“1
“应该用于表明符合本规范的本版本;这是一个错误文档使用值“1
“如果不符合本规范的本版本。这是XML工作的目的集团提供本规范编号的更新版本,而不是“1
“,但此意图并不表示承诺生产任何XML的未来版本,如果有,也不会使用任何特定的编号方案。由于不排除将来的版本,因此提供了此构造作为允许自动版本识别的一种手段,应该这是必要的。如果处理者收到文档,可能会发出错误信号标有不支持的版本。
标记的功能在XML文档中描述其存储和逻辑结构,并将属性-值对与其逻辑结构相关联。XML提供了机制文档类型声明,定义逻辑结构上的约束并支持使用预定义的存储单元。[定义:XML文档是有效的如果它有关联的文档类型声明以及文档是否符合所表示的约束在其中。]
文档类型声明必须出现在第一个要素在文档中。
序言
[定义:XML文档类型声明包含或点到标记声明为一类文档提供语法的。这个语法是已知的作为文档类型定义,或DTD公司.文档类型声明可以指向外部子集(一种特殊的外部实体)包含标记声明,或可以直接在内部子集中包含标记声明,也可以两者兼而有之。文档的DTD由两个子集组成。]
[定义:A类标记声明是一个元素类型声明,一个属性列表声明,一个实体声明,或a注释声明.]这些声明可以全部包含或部分在参数实体,如下面的规范性和有效性约束所述。对于【E14】进一步的信息,请参见4物理结构.
文档类型定义
【E82】请注意,可以构造一个格式良好的文档,其中包含一文档类型删除两者都不指向外部子集也不包含内部子集。
标记声明可以全部或部分组成替换文本属于参数实体.本规范后面针对单个非终端的产品(元素decl,AttlistDecl公司等)描述声明之后所有参数实体已经包括.
【E75】参数实体在DTD中的任何位置都可以识别引用(内部和外部子集和外部参数实体),但文字、处理指令除外,注释和被忽略的条件节的内容(请参见3.4条件部分). 它们也被确认为实体价值文字。限制在内部子集中使用参数实体如下所述。
有效性约束:根元素类型
这个姓名在文档类型声明中必须与根元素.
有效性约束:适当声明/PE嵌套
参数实体替换文本必须正确嵌套标记声明。也就是说,如果第一个字符或最后一个字符标记声明的(标记updecl以上)是包含在替换文本中参数-性能参考,两者都必须包含在相同的替换文本。
井形约束:内部PE子集
在内部DTD子集中,参数-属性引用只能在标记声明可以发生,而不是在标记声明中。(这不适用指向出现在外部参数实体中的引用或指向外部子集。)
像内部子集、外部子集和任何DTD中引用的外部参数实体必须包含一系列非终结符所允许类型的完整标记声明标记updecl,中间点缀着空白或参数-属性引用然而,外部子集或外部子集的部分内容参数实体可以通过使用条件段建构;这是不允许的在内部子集中。【E13】引用的外部子集和任何外部参数实体DTD中的到必须与生产相匹配extPE(外部PE).请参见4.3.2格式良好的解析实体.
外部子集
外部子集和外部参数实体也与内部子集不同的是,参数-属性引用是允许的在内部标记声明,不仅之间标记声明。
带有文档类型声明的XML文档示例:
<?xml版本=“1.0”?><!DOCTYPE问候语系统“hello.dtd”><问候语>你好,世界</问候语> |
这个系统标识符"你好.dtd
“提供了[电子78]文档DTD的地址(URI引用)。
声明也可以局部给定,如本例所示:
<?xml version=“1.0”encoding=“UTF-8”?><!DOCTYPE问候语[<!ELEMENT问候语(#PCDATA)>]>你好,世界</问候语> |
如果同时使用外部和内部子集内部子集被认为出现在外部子集之前。这已经实体和属性列表声明对内部子集的影响优先于外部子集中的那些。
2.9独立文件声明
标记声明可以影响文档的内容,如从xml处理器应用程序;例如属性默认值和实体声明。独立文档声明,其中可能显示为XML声明的组件,表示是否存在这些声明在文档实体【E64】或在参数实体中。[定义:安外部标记声明定义为出现在外部子集或参数实体(外部或内部,包括后者是因为非验证处理器不需要读取它们)。]
独立文件声明
在独立文档声明中,值“对
“表示没有【E64】外部的标记声明影响从XML处理器传递的信息应用程序。价值观“不
“表示存在或可以是这样的外部标记声明。请注意,独立文档声明仅表示外部声明; 这个在文件中存在对外部的引用实体,何时这些实体是内部声明的,不会更改其独立状态。
如果没有外部标记声明,则独立文档声明没有任何意义。如果存在外部标记声明,但是没有独立的文档声明,值“不
“是假设。
任何XML文档standalone=“否”
持有可以通过算法转换为独立文档,这可能是理想的对于一些网络交付应用程序。
有效性约束:独立文档声明
独立文档声明必须具有值“不
“如果任何外部标记声明包含以下声明:
具有的属性违约值,如果这些属性所应用的元素出现在文档中没有为这些属性指定值,或
实体(除放大器
,书信电报
,gt公司
,阿波罗
,引用
),如果参考文献出现在文档中的实体,或
具有以下值的属性归一化,其中属性显示在文档中,其值为将因标准化而发生变化,或
元素类型元素含量,如果空白直接出现在这些类型。
带有独立文档声明的示例XML声明:
<?xml version=“1.0”standalone='yes'?> |
2.10空白区处理
在编辑XML文档时,通常很方便使用“空白”(空格、制表符和空行)分隔标记以提高可读性。此类空白通常不用于包含在文档的交付版本中。另一方面,“重要”交付版本中应该保留的空白是常见的,因为诗歌和源代码中的示例。
安xml处理器必须始终传递文档中未包含的所有字符标记到应用程序。A类验证XML处理器还必须告知申请字符构成出现在元素含量.
一个特别的属性命名xml:空间可以附加到元素表示一个意图,即在该元素中,空白应该是由应用程序保存。在有效文档中,此属性与其他属性一样,必须是宣布如果使用。声明时,它必须作为枚举类型谁的【E81】值为“违约
“和”保存
“。例如:
<!ATTLIST诗歌xml:space(默认|保留)'preserve'><!--【E81】--><!ATTLIST pre-xml:space(preserve)#FIXED“preserve”> |
价值观“违约
“表示应用程序”此元素可以接受默认的空白处理模式;这个值“保存
“表示应用程序保留的意图所有空白。此声明意图被视为适用于所有要素在指定元素的内容内,除非重写使用的另一个实例xml:空间属性。
这个根元素任何文件的没有关于应用程序空间处理的意图,除非它提供此属性或属性的值使用默认值声明。
2.11线路末端搬运
XML格式已分析的实体通常存储在计算机文件中,为了便于编辑,这些文件组织成线。这些线通常由一些组合分隔字符care-return(#xD)和line-feed(#xA)。
[公元86年]为了简化以下任务应用,一个xml处理器必须通过转换双字符序列#xD#xA和后面没有#xA的任何#xD到#在解析之前对输入进行xA,或使用其他方法,使字符传递给应用程序的过程与进行此转换的过程相同。
2.12语言识别
在文档处理中,识别自然的或正式的编写内容的语言。一个特别的属性命名xml:lang可以在文件中插入以指定中任何元素的内容和属性值中使用的语言XML文档。在有效文档中,与其他属性一样,此属性必须是宣布如果是的话已使用。【E73】这个属性的值是由定义的语言标识符[IETF RFC 1766],语言识别标签,或其在IETF标准轨道上的继任者。
【E73】(已删除第33至38部作品。)
例如:
敏捷的棕色狐狸跳过了懒狗</p>(第页)它是什么颜色的</p>(第页)它是什么颜色的</p>(第页)<sp who=“Faust”desc='leise'xml:lang=“de”><l> 哈比修女,啊!哲学<l> Juristerei,und Medizin律师事务所<l> und leider auch神学<l> durchaus studiert mit heißem Bemüh'n.学生</sp> |
声明的意图xml:lang已考虑应用于指定元素的所有属性和内容,除非使用的实例重写xml:lang在中的另一个元素上内容。
的简单声明xml:lang可能需要表格
但如果合适,也可以给出特定的默认值。为英国学生准备的法语诗歌集,附有注释和注释在英语中xml:lang属性可以这样声明:
<!ATTLIST诗歌xml:lang NMTOKEN'fr'><!ATTLIST光泽xml:lang NMTOKEN'en'><!ATTLIST注释xml:lang NMTOKEN'en'> |
三逻辑结构
[定义:每个XML文档包含一个或多个元素,其边界被分隔通过启动标签和结束标记,或,用于空的元素,按空元素标签。每个元素都有一个由名称标识的类型,有时称为“通用标识符”(GI),可以有一组属性规范。]每个属性规范都有一个名称和a价值.
元素
本规范不约束语义、使用、,或(超出语法)元素类型和属性的名称,除了以匹配开头的名称(('X'|'X')('M'|'M')(‘L'|'L'))
保留用于本规范或未来版本的标准化。
井然有序约束:图元类型匹配
这个姓名元素的end标记必须与start-tag中的元素类型匹配。
有效性约束:元素有效
如果有声明,则元素有效匹配元素decl其中姓名与元素类型相匹配,并且以下其中一项保持不变:
声明匹配空元素没有内容.
声明匹配儿童和序列子元素属于由内容中的正则表达式生成的语言模型,带有可选空白(与非终结符匹配的字符S公司)协议双方:[E59]子元素之间的start-tag和第一个子元素,或在最后一个子元素和结束标记之间。请注意,CDATA部分只包含空白与非终结符不匹配S公司,因此不能出现在这些位置。
声明匹配混合的和内容包括字符数据和子元素谁的类型与内容模型中的名称匹配。
声明匹配任何,以及任何子元素已申报。
3.1启动标签,结束标记和空元素标记
[定义:每个非空XML元素的开头都由标记一启动标签.]
开始标记
这个姓名在开始标记和结束标记中给出了元素的类型. [定义:该姓名-AttValue(附件值)对被称为属性规范元素的],[定义:使用姓名在每对中称为属性名称]和[定义:的的内容AttValue(附件值)(文本位于'
或"
分隔符)作为属性值.]【E46】请注意,start-tag或empty-element标记不重要。
井形约束:Unique Att Spec
属性名不能在同一start-tag或empty元素中多次出现标签。
有效性约束:属性值类型
属性必须具有已申报;值必须是为其声明的类型。(for属性类型,请参见3.3属性列表声明.)
井形约束:无外部实体引用
属性值不能包含对外部实体的直接或间接实体引用。
井形约束:否<
在属性值中
这个替换文本属于属性值中直接或间接引用的任何实体不得包含一个<
.
启动标记示例:
<termdef id=“dt dog”term=“dog”> |
[定义:该以start-tag开头的每个元素的结尾都必须用结束标记包含一个与在启动标签:]
结束标记
[42] |
电子标签 | ::= |
'</'姓名 S公司? '>' |
结束标记的示例:
[定义:这个文本在开始标记和结束标记之间称为元素的内容:]
元素的内容
[定义:[公元97年]没有内容的元素称为空的.]代表空元素的开头标记紧跟结尾标记,或空元素标记。[定义:安空元素标签采用特殊形式:]
的标记空元素
空元素标签可用于任何具有无内容,无论是否使用关键字声明空.为了实现互操作性,empty-element标记【E45】应该并且只应该用于声明的元素空的。
空元素示例:
<IMG align=“左”src=“http://www.w3.org/Icons/www/w3c_home" /><br></br><br/> |
3.2元件类型声明
这个要素结构XML文档5月,用于验证目的,使用元素类型和属性列表声明进行约束。一个元素类型声明约束元素的内容.
元素类型声明通常约束哪个元素类型可以显示为儿童元素的。根据用户的选择,XML处理器可能会发出警告当声明提到未提供声明的元素类型时,但这不是一个错误。
[定义:安元素类型声明采用以下形式:]
元素类型声明
其中姓名给出了元素正在声明的类型。
有效性约束:唯一元素类型声明
没有元素类型可以声明多次。
元素类型示例声明:
<!元素br空><!元素p(#PCDATA|emph)*><!元素%name.para;%内容.para;><!ELEMENT容器ANY> |
3.2.1元素内容
[定义:一个元素类型有元素含量当该类型的元素必须仅包含小孩元素(无字符数据),可选用空格分隔(与非终结符匹配的字符S公司).][定义:在这种情况下,约束包括【E55】内容模型,一个管理允许类型的简单语法子元素及其允许出现的顺序。]语法是建立在内容颗粒上的(内容提供商s) ,其中由的名称、内容粒子的选择列表或序列列表组成含量粒子:
元素含量模型
其中每个姓名是的类型可能显示为小孩。选项列表中的任何内容粒子都可能出现在元素含量选择的位置列表出现在语法中;序列列表中出现的内容粒子每个都必须出现在元素含量按照列表中给出的顺序。可选字符在名称或列表之后控制元素或内容粒子列表中可能出现一个或多个(+
),零或更多(*
),或零次或一次(?
). 缺少这样的操作员意味着元素或内容粒子必须出现一次。这个语法和含义与本文中的产品中使用的语法和含义相同规范。
元素的内容与内容模型匹配,如果只有在可以通过内容模型追踪出路径的情况下,遵循顺序、选择和重复操作符并匹配每个元素内容模型中的元素类型。为了兼容性,如果文档可以匹配内容中出现的多个元素类型模型。有关更多信息,请参阅E确定性内容模型.
元素模型示例:
<!元件规格(前部、车身、后部?)><!ELEMENT div1(头,(p|list|note)*,div2*)><!ELEMENT dictionary-body(%div.mix;|%dict.mix;)*>元素目录-正文 |
3.2.2混合内容
[定义:一个元素类型有混合的内容当该类型的元素可能包含字符数据时(可选)穿插着小孩元素。]在这种情况下,子元素的类型可能会受到约束,但不是它们的顺序或出现次数:
混合成分宣言
其中姓名s给出类型可能显示为子元素的元素。【E10】关键字#PCDATA公司历史上源于术语“解析字符数据。"
有效性约束:无重复类型
不能使用相同的名称在单个混合内容声明中出现多次。
混合内容声明示例:
<!元素p(#PCDATA|a|ul|b|i|em)*><!元素p(#PCDATA|%font;|%phrase;|%special;|%form;)*><!元素b(#PCDATA)> |
3.3属性列表声明
属性用于将名称值对与关联元素。属性规范只能出现在内部启动标签和空元素标记; 因此,用于识别它们出现在3.1开始标记、结束标记和空元素标签。可以使用属性列表声明:
定义与给定元素类型相关的属性集。
为这些属性建立类型约束。
提供违约值属性。
[定义:属性列表声明指定名称、数据类型和与给定元素类型关联的每个属性的默认值(如果有):]
属性列表声明
这个姓名在中AttlistDecl公司rule是元素的类型。根据用户选择,XML处理器如果为元素类型而不是其自身声明属性,则可能会发出警告声明,但这不是错误。这个姓名在中AttDef(附件定义)rule是属性的名称。
什么时候?不止一个AttlistDecl公司是为给定元素类型,将合并所有提供的内容。当更多为给定元素的同一属性提供了多个定义类型时,第一个声明是绑定的,随后的声明将被忽略。【E9】为了实现互操作性,DTD的编写者可以选择为给定的元素类型最多提供一个属性列表声明,位于属性列表中给定属性名称的大多数属性定义声明,并且每个属性列表中至少有一个属性定义宣言。为了实现互操作性,XML处理器可能存在用户选择问题为提供多个属性列表声明时发出警告给定元素类型,或为提供多个属性定义给定属性,但这不是错误。
3.3.1属性类型
XML特性类型有三种:字符串类型、一组标记化类型和枚举类型类型。字符串类型可以将任何文本字符串作为值;标记化的类型具有不同的词汇和语义约束【E8】。语法中注明的有效性约束适用于属性值已规范化,如中所述3.3属性列表声明.
属性类型
有效性约束:ID
类型的值身份证件必须与匹配姓名生产。名称不能出现多次在XML文档中作为此类型的值;即,ID值必须唯一确定承载它们的元素。
有效性约束:一个ID每个元素类型
任何元素类型都不能有多个ID属性明确规定。
有效性约束:ID属性默认值
ID属性必须已宣布违约#默示或#必需.
有效性约束:国际数据参考
类型的值国际数据参考必须与匹配姓名生产和类型值IDREFS公司必须匹配姓名; 每个姓名必须与ID的值匹配XML文档中某个元素的属性;即国际数据参考值必须匹配某些ID属性的值。
有效性约束:名称令牌
类型的值NMTOKEN公司必须与匹配名字符号生产;值类型为NMTOKENS公司必须匹配Nm标记.
[定义:枚举的属性可以采用值列表中的一个声明中提供]。有两种枚举类型:
枚举属性类型
A类符号属性标识符号,在具有关联系统的DTD中声明和/或公共标识符,用于解释属性已附加。
有效性约束:符号属性
此类型的值必须与符号声明中包含的名称;声明中的所有表示法名称必须声明。
有效性约束:【E7】每个元素类型一个符号
任何元素类型都不能有不止一个符号指定的属性。
有效性约束:枚举
此类型的值必须与名字符号声明中的标记。
为了实现互操作性,相同的名字符号应该在单个元素的枚举属性类型中不会出现多次类型。
3.3.2属性默认值
安属性声明提供有关属性是否需要存在,否则,如果声明文档中缺少属性。
属性默认值
在属性声明中,#必需意味着必须始终提供属性,#默示没有默认值提供了。[定义:如果声明两者都不是#必需也不是#默示,然后是AttValue(附件值)值包含声明的违约价值;这个#固定关键字声明属性必须始终具有默认值。如果声明了默认值,则当XML处理器遇到一个省略的属性,它的行为就像该属性存在一样使用声明的默认值。]
有效性约束:必填属性
如果默认声明是关键字#必需,然后是属性必须为attribute-list声明中类型的所有元素指定。
有效性约束:属性默认合法
宣布的违约值必须满足声明的属性类型的词法约束。
有效性约束:固定属性默认值
如果属性声明了默认值使用#固定关键字,该属性的实例必须与默认值。
属性列表声明示例:
<!ATTLIST术语定义需要id号name CDATA#隐含><!ATTLIST列表类型(项目符号|ordered|glossary)“ordered”><!ATTLIST表格方法CDATA#修复“POST”> |
将属性值传递给应用程序之前或者检查有效性,XML处理器必须规范化属性值通过应用以下算法,或使用其他方法传递给应用程序的值与算法生成的值相同。
如前所述,所有换行符都必须在#xA的输入中规范化在里面2.11末端处理,剩下的也一样该算法对以这种方式规范化的文本进行操作。
从一个由空字符串组成的规范化值开始。
对于中的每个字符、实体引用或字符引用非规范化属性值,从第一个开始,一直到最后,执行以下操作:
如果属性类型不是CDATA,则XML处理器必须进一步通过丢弃任何前导和尾随来处理规范化属性值空格(#x20)字符,并通过替换空格(#x20)字符序列通过单个空格(x20)字符。
注意,如果非规范化属性值包含对空白字符的字符引用,而不是空格(x20),规范化值包含引用字符本身(#xD、#xA或#x9)。这与非规范化值的情况形成对比包含空白字符(不是引用),替换为规范化值中的空格字符(x20),也与非规范化值包含替换实体引用的情况文本包含空白字符;在递归处理时,白色在规范化的值。
未读取声明的所有属性都应被非验证人对待[公元95年]处理器,如同声明的那样CDATA(CDATA).
以下是示例属性规范化。鉴于以下声明:
<!实体d“
;”><!实体a“
;”><!实体da“
;
;”> |
下面左列中的属性规范如果属性一
已声明NMTOKENS公司和那些右翼人士列,如果一
已声明CDATA(CDATA).
属性规范 | a是NMTOKENS | a是CDATA |
| | |
| |
#x20#x20 A#x20#x20 B#x20#x20 |
|
| | |
请注意,最后一个示例无效(但格式良好)如果一
声明为类型NMTOKENS公司.
3.4条件部分
[定义:条件节是文档类型声明外部子集哪些是基于控制它们的关键字。]
条件节
有效性约束:【E90】适当的条件截面/PE嵌套
如果“<![
", "[
“,或”]]>
“的条件节包含在参数-名称引用的替换文本中,所有这些必须包含在相同的替换文本中。
与内部和外部DTD子集一样,条件节可以包含一个或多个完整的声明、注释、处理指令或嵌套有条件的部分,夹杂着空白。
如果关键字条件段的包括,然后是条件的内容部分是DTD的一部分。如果条件节的关键字为忽略,则条件节的内容不符合逻辑DTD的一部分。如果条件节的关键字为包括出现在较大的条件节中,关键字为忽略,外部和内部条件部分都被忽略。【E90】忽略的条件节的内容通过忽略进行分析“”之后的所有字符[
“关键字后面,条件除外节开始“<![
“和结束”]]>
“,直到找到匹配的条件段结束。参数实体引用在此过程中无法识别。
如果条件的关键字节是参数实体引用,必须替换参数实体在处理器决定是否包含或忽略条件节。
例如:
<!实体%汇票“INCLUDE”><!实体%最终“忽略”><!【%汇票[<!元素手册(注释*、标题、正文、补充?)>]]><!【%最终[<!元素手册(标题、正文、补充?)>]]> |
4物理结构
[定义:XML文档可以由一个或多个存储单元组成。【E6】这些被称为实体; 他们都有内容和都是(除了文件实体和外部DTD子集)由实体标识名称.]每个XML文档有一个名为文件实体,它是xml处理器并且可能包含整个文档。
实体可以被解析或未解析。[定义:A已解析实体的内容为称为其替换文本; 这文本被认为是一个积分文档的一部分。]
[定义:安未分析的实体是其内容可以也可能不是文本,如果是文本,【E25】可能不是XML。每个未分析的实体都有一个关联的符号,由名称标识。超越要求XML处理器为实体和应用程序可用的符号,XML对内容没有约束未分析实体的数量。]
使用实体按名称调用已分析的实体参考文献;按名称列出的未分析实体,以实体或实体属性。
[定义:一般实体是在文档中使用的实体内容。在本规范中,有时提及通用实体带有不合格条款实体当这不会导致歧义时。][定义:【E53】参数实体是要在中使用的已解析实体日期。]这两种类型的实体使用不同的引用形式在不同的上下文中识别。此外,它们占用不同的名称空间;具有相同名称的参数实体和通用实体是两个不同的实体实体。
4.1字符和实体引用
[定义:A字符引用指特定字符在ISO/IEC 10646字符集中,例如不能直接访问的字符集来自可用的输入设备。]
字符引用
[66] | 字符参考 | ::= | '&#' [0-9]+ ';' |
| | | |“&#x”[0-9a-fA-F]+';' | [WFC:法律性质] |
完井约束:法律性质
引用的字符要使用字符引用,必须与烧焦.
如果字符引用以“&#x个
“,数字和字母直到终止;
提供ISO/IEC 10646中字符代码点的十六进制表示。如果只是以“&#
“,直到终止的数字;
提供字符代码点的十进制表示。
[定义:安实体参考指命名实体的内容。][定义:对解析的常规实体的引用使用和号(&
)和分号(;
)作为分隔符。][定义:参数实体引用使用百分号(%
)和分号(;
)作为分隔符。]
实体引用
井形约束:已声明实体
在没有任何DTD,一种只包含不包含参数的内部DTD子集的文档实体引用,或带有“standalone=“是”
",【E34】对于实体不出现在外部子集或参数实体中的引用,这个姓名在实体引用中给定必须比赛在一个实体宣言不发生在外部子集或参数实体,但格式良好的文档不需要声明以下实体:放大器
,书信电报
,gt公司
,阿波罗
,引用
类似地,一般实体的声明必须位于属性列表中默认值中出现的对它的任何引用之前宣言。
注意,如果实体在外部子集中声明或者在外部参数实体中,非验证处理器是没有义务阅读并处理其声明;对于这样的文档中,必须声明实体的规则是格式良好的约束只有standalone=“是”.
有效性约束:声明的实体
在包含外部子集的文档中或带有“standalone=“否”
“,该姓名在实体引用中给定必须比赛在一个实体宣言。为了实现互操作性,有效文档应声明实体放大器
,书信电报
,gt公司
,阿波罗
,引用
,格式见4.6预定义实体。参数实体的声明必须在任何引用之前。类似地,一般实体的声明必须位于任何[公元92年]包含默认值的attribute-list声明或间接提及该一般实体。
井形约束:已解析实体
实体引用不能包含未分析的实体.可以引用未经分析的实体到仅在中属性值声明为类型实体或实体.
井然有序约束:无递归
分析的实体不能包含递归直接或间接地引用自身。
完井约束:在DTD中
参数实体引用只能出现在DTD公司.
字符和实体示例参考文献:
键入<key>less-than</key>(<;)保存选项。本文件于&docdate;编制;和已分类&security-level;。 |
参数实体引用示例:
<!-- 声明参数实体“ISOLat2”…--><!实体%ISOLat2系统”http://www.xml.com/iso/isolat2-xml.entities" ><!-- ... 现在引用它。-->%ISOLat2; |
4.2实体声明
[定义:实体声明如下:]
实体声明
这个姓名标识实体在中实体引用或者,如果是未分析的实体,则为实体或实体属性。如果同一实体声明了多次,则遇到的第一个声明是绑定;根据用户选择,XML处理器如果多次声明实体,可能会发出警告。
4.2.2外部实体
[定义:如果实体不是内部的,则它是外部实体,已声明如下:]
外部实体声明
如果NDataDecl(数据拒绝)存在,这是一个将军未分析的实体; 否则它是一个已解析的实体。
有效性约束:符号宣布
这个姓名必须与声明的匹配名称符号.
[定义:该SystemLiteral(系统文字)称为实体的系统标识。它是一个【E88】URI引用【E66】(如定义在里面[IETF RFC 2396],更新者[IETF RFC 2732]),【E76】旨在被解引用以获得XML处理器的输入构造实体的替换文本。]这是片段标识符的错误(以#
字符)作为系统标识符的一部分。除非本规范范围以外的信息另有规定(例如,由特定DTD定义的特殊XML元素类型,或处理特定应用程序规范定义的指令),相对URI相对于实体声明所在的资源位置发生。因此,URI可能与文档实体,指向包含外部DTD子集或其他人外部参数实体.
[电子78]URI引用需要对某些字符进行编码和转义。不允许的字符包括所有非ASCII字符,以及排除的第2.4节中列出的字符[IETF RFC 2396],除了数字符号(#
)和百分号(%
)字符和方括号字符[IETF RFC 2732]。不允许的字符必须转义如下:
每个不允许的字符都转换为UTF-8[IETF RFC 2279]作为一个或多个字节。
与不允许的字符对应的任何八位字节都用转义URI转义机制(即转换为%
HH(小时),其中HH是字节值的十六进制表示法)。
原始字符被结果字符序列替换。
[定义:在除了系统标识符外,外部标识符还可以包括公共标识符.]XML处理器试图检索实体的内容可以使用公共标识符来尝试生成替代【E88】URI引用。如果处理器无法执行此操作,则必须使用【E88】系统文字中指定的URI引用。比赛开始前尝试时,必须规范化公共标识符中的所有空白字符串到单空格字符(x20),前导和尾随空格必须被删除。
外部实体声明示例:
<!实体打开舱口系统”http://www.textualy.com/boilerplate/OpenHatch.xml"><!实体打开舱口PUBLIC“-//文本//TEXT标准开口样板//EN”"http://www.textualy.com/boilerplate/OpenHatch.xml"><!ENTITY图案填充-pic系统“../grafix/OpenHatch.gif”NDATA gif> |
4.3已分析的实体
4.3.1文本声明
外部解析的实体可以分别以一文本声明.
文本声明
文本声明必须按字面意思提供,而不是由对已分析实体的引用。任何位置都不得出现文本声明而不是外部已解析实体的开头。[公元94年]不考虑外部已分析实体中的文本声明它的一部分替换文本.
4.3.3实体中的字符编码
每个XML文档中的外部解析实体可以使用不同的编码它的特点。所有XML处理器必须能够读取中的实体【E56】UTF-8和UTF-16编码。【E77】本规范中的术语“UTF-8”和“UTF-16”不适用使用任何其他标签进行字符编码,即使编码或标签与UTF-8或UTF-16非常相似。
UTF-16编码的实体必须以描述的字节顺序标记开始【E67】附录F[ISO/IEC 10646],附录H[ISO/IEC 10646-2000],第2.4节[统一码]和第2.7节[单码3](该零宽度无空格字符,#xFEFF)。这是一个编码签名,不是XML文档的标记或字符数据的一部分。XML格式处理器必须能够使用此字符来区分UTF-8和UTF-16编码文档。
虽然需要XML处理器要读取UTF-8和UTF-16编码中的实体,可以识别世界各地都在使用其他编码XML处理器读取使用它们的实体。【E47】在缺少外部字符编码信息的情况下(例如MIME标头),解析的实体存储在除UTF-8或UTF-16必须以文本声明开头(请参见4.3.1文本声明)包含编码声明:
编码声明
在文件实体,编码声明是XML声明. TheEncName(加密名称)使用的编码的名称。
在编码声明中,价值观”UTF-8型
", "UTF-16型
", "ISO-10646-UCS-2标准
“,以及”异-10646-UCS-4
“应用于各种Unicode/ISO/IEC 10646的编码和转换,值“ISO-8859-1标准
", "ISO-8859-2标准
", ... "异-8859-9
"应用于ISO 8859的部分,以及值”ISO-2022-JP标准
", "换档_JIS
“,以及”欧盟-日本
“应使用适用于JIS X-0208-1997的各种编码形式。【E57】建议将字符编码注册为字符集s) 通过互联网号码分配机构【E58】[IANA-图表集],除了刚才列出的以外,应使用其注册名称;其他编码应该使用以“x-”前缀开头的名称。XML处理器应匹配字符以区分大小写的方式编码名称,并应解释IANA注册的name作为该名称在IANA注册的编码,或将其视为未知(当然,处理器不需要支持所有IANA注册的编码)。
没有外部传输协议提供的信息(例如HTTP或MIME),它是一个错误包含要呈现给XML的编码声明的实体处理器使用声明中指定的编码以外的编码,或既不以字节顺序标记也不以编码声明开头的实体使用UTF-8以外的编码。注意,由于ASCII是UTF-8,普通ASCII实体不严格需要编码声明。
【E5】它是【E36】致命的的错误文本拒绝发生在外部实体的开头。
它是一个致命错误当XML处理器遇到带有编码的实体时无法处理。[第79页]如果确定了XML实体(默认情况下,编码声明或更高级别的协议)以某种编码但包含在该编码中不合法的八进制序列。它也是如果XML实体不包含编码声明及其内容,则为致命错误不是合法的UTF-8或UTF-16。
示例【E23】包含编码声明的文本声明:
<?xml编码=“UTF-8”?><?xml编码=“EUC-JP”?> |
4.4XML处理器对实体和引用的处理
下表总结了字符引用、实体引用、,可能会出现未分析实体的调用以及所需的行为的xml处理器在每个案例。最左侧列中的标签描述了识别上下文:
- 内容中的引用
作为在启动标签在结束标记元素的;对应于非终结符内容.
- 属性值中的引用
作为中属性值内的引用启动标签,或中的默认值属性声明; 对应于非终结符AttValue(附件值).
- 作为属性值发生
作为一个姓名,也不是引用作为已声明为类型的属性的值实体,或作为属性值中的一个空格分隔标记已声明为类型实体.
- 实体值中的引用
作为参数或内部实体的引用文字实体值实体声明中;对应于非终结符实体值.
- DTD中的参考
【E90】作为的内部或外部子集中的引用DTD公司,但在实体值,AttValue(附件值),圆周率,注释,SystemLiteral(系统文字),PubidLiteral(公共文字),或忽略的条件节的内容(请参见3.4条件部分).
.
4.4.1未识别
在DTD外部%
角色没有特殊意义;因此,在DTD在中未被识别为标记内容同样,无法识别未分析实体的名称,除非它们出现在适当声明的属性值中。
4.4.2包括
[定义:实体是包括当替换文本就地检索和处理引用本身,就好像它是该位置文档的一部分该引用已被识别。]替换文本可能包含这两个字符数据和(参数实体除外)标记,必须在通常的方式。(字符串“AT&;T;
“扩展到”美国电话电报公司;
“并且剩余的与号不被识别为实体引用分隔符。)字符引用是包括当指示的字符代替引用本身进行处理。
4.4.3验证时包含
当XML处理器识别对已解析实体的引用,以便验证处理者必须包括其替换文本。如果实体是外部的,处理器不尝试验证XML文档,处理器可以但不必包括实体的替换文本。如果非验证[公元95年]处理器不包含替换文本,它必须通知它识别但未读取实体的应用程序。
此规则基于自动包含提供的识别通过SGML和XML实体机制,主要用于支持模块化在创作中,不一定适用于其他应用程序,尤其是文档浏览。例如,浏览器在遇到外部解析实体引用,可以选择提供实体的显示并检索它以便仅按需显示。
4.4.4禁止
禁止以下行为:,并构成致命的错误:
4.4.5包含在字面意义的
当实体参考出现在属性值或参数实体引用中出现在文字实体值中,其替换文本代替引用本身进行处理它是文件的一部分,位于引用被识别的位置,替换文本中的单引号或双引号字符除外始终被视为普通数据字符,不会终止文本。例如,这是格式良好的:
<!--【E4】--><!实体%YN'“是”'><!实体他说什么“他说%YN;”> |
而这不是:
<!实体EndAttr“27'”><元素属性='a-&EndAttr;> |
4.4.6通知
当未分析的实体在声明的属性值中显示为标记类型实体或实体,验证处理器必须通知应用系统和公众的(如有)实体及其关联的标识符符号.
4.4.7旁路
当通用实体引用出现在实体值在实体声明中,它被绕过并保持原样。
4.4.8纳入PE
正如对于外部解析实体,参数实体只需要验证时包含。识别参数-属性引用时包括在DTD中,其替换文本通过一根引线和一根引线的连接而扩大后跟空格(#x20)字符;其目的是约束替换包含整数语法标记的参数实体的文本在DTD中。[公元96年]此行为不适用于实体内的参数实体引用价值观;这些在中进行了描述4.4.5包含在文字中.
4.5内部实体替换文本的构建
在讨论处理内部实体时,区分两种形式的实体的值。[定义:该文字实体值引用的字符串实际存在吗在实体声明中,对应于非终结符实体值.] [定义:该替换文本是替换后实体的内容字符引用和参数-实体引用。]
文字内部实体声明中给定的实体值(实体值)可以包含字符、参数-实体和泛型-实体参考文献。此类引用必须完全包含在文字中实体值。实际替换文本包括如上所述,必须包含替换文本引用的任何参数实体,并且必须包含引用的字符到,代替文字实体值中的任何字符引用;然而,泛型实体引用必须保持为-is,未展开。例如,给定以下声明:
<!实体%pub“É;条件Gallimard”><!实体权利“保留所有权利”><!实体书籍“害虫:阿尔伯特·加缪,©;1947%酒吧&权利;" > |
然后是实体的替换文本“书
"是:
《害虫》:阿尔伯特·加缪,©1947 Editions Gallimard版权所有&权利; |
通用实体参考”&权利;
"如果引用“&书籍;
“出现在文档的内容或属性值。
这些简单的规则可能具有复杂的相互作用;为了详细讨论一个困难的例子,看见D实体和字符引用的扩展.
4.6预定义实体
[定义:实体和字符引用都可以用于逃跑这个左尖括号、与号和其他分隔符。一组通用实体(放大器
,书信电报
,gt公司
,阿波罗
,引用
)是为此目的而指定的。数字字符引用可能也可使用;它们在被识别时会立即扩展,必须进行处理作为字符数据,因此数字字符引用“<
"和“&
“可能被用来逃跑<
和&
当它们出现在字符数据中时。]
所有XML处理器必须识别无论是否声明这些实体。为了实现互操作性,有效的XML文档应声明这些实体与其他任何实体一样,在使用它们之前。【E80】如果实体书信电报
或放大器
已声明,它们必须声明为其替换文本为字符的内部实体对转义字符的引用;需要双重转义以使对它们的引用产生格式良好的结果。如果实体gt公司
,阿波罗
,或引用
是声明后,它们必须声明为内部实体,其替换文本转义的单个字符(或对该字符的字符引用;这里的双重转义没有必要,但无害)。例如:
<!实体lt“&;#60;”><!实体gt“>;”><!实体amp“&;#38;”><!实体apos“';”><!实体“";”> |
4.7符号声明
[定义:符号通过名称识别的格式未分析的实体,包含的元素的格式表示法属性或应用程序处理指令已寻址。]
[定义:符号声明提供一个表示法的名称,用于实体和属性列表声明以及在属性规范中,以及用于表示法的外部标识符可以允许XML处理器或其客户端应用程序查找助手应用程序能够处理给定符号中的数据。]
符号声明
有效性约束:【E22】唯一符号名称
只有一个符号声明可以声明给定姓名.
XML处理器必须为应用程序提供任何属性值、属性定义、,或实体声明。它们还可以解析外部标识符进入系统标识,文件名,或允许应用程序调用以所述符号表示数据的处理器。(然而,这不是一个错误,用于XML文档声明和引用特定于符号的符号应用程序在XML处理器或应用程序所在的系统上不可用正在运行。)
4.8文档实体
[定义:该文档实体作为实体树的根的起点xml处理器.]本规范未指定文档实体的格式由XML处理器定位;与其他实体不同,文档实体具有没有名称,很可能出现在处理器输入流中而没有任何标识完全。