GB T 18793-2002 信息技术 可扩展置标语言(XML)1.0.pdf

上传人:outsidejudge265 文档编号:245240 上传时间:2019-07-13 格式:PDF 页数:37 大小:1.70MB
下载 相关 举报
GB T 18793-2002 信息技术 可扩展置标语言(XML)1.0.pdf_第1页
第1页 / 共37页
GB T 18793-2002 信息技术 可扩展置标语言(XML)1.0.pdf_第2页
第2页 / 共37页
GB T 18793-2002 信息技术 可扩展置标语言(XML)1.0.pdf_第3页
第3页 / 共37页
GB T 18793-2002 信息技术 可扩展置标语言(XML)1.0.pdf_第4页
第4页 / 共37页
GB T 18793-2002 信息技术 可扩展置标语言(XML)1.0.pdf_第5页
第5页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、ICS 35.240.30 L 74 GB 中华人民共和国国家标准GB/T 18793-2002 信息技术可扩展量标语言(XML)1.0Information technology-Extensible Markup Language (XML) 1. 0 2002 - 07 -18发布2002 -12 -01实施中华人民共和国发布国家质量监督检验检瘦总局GB/T 18793-2002 目次前言.DI 引言.N I范围2引用标准.3定义.2 4文件.3 5逻辑结构.6物理结构.16 7一致性.23 8记法249中文处理.25 附录A(标准的附录)字符类别.27 附录B(提示的附录)XML和SG

2、ML m 附录以提示的附录)实体引用和宇符引用的展开.29 附录D(提示的附录)确定性内容模型.30 附录E(提示的附录)字符编码的自动检测GB/T 18793-2002 前本标准非等效采用W3C(WorldWide Web Consortium)RFC-xml-19980210(可扩展置标语言(XML)1. 0)。同时参考了截至2000年7月W3C对RFC-xml-19980210的勘误(XML1. 0 Specification Errata ,JR. http:/www . w3. org/XML/xml-19980210-errata)。在充分吸收、尊重RFC-xml-19980210

3、的基础上,以基于巳颁布的国家标准的内容替换了部分国际标准的内容,增加了中文处理的内容。本标准的附录A是标准的附录,附录B、附录C、附录D和附录E是提示的附录。本标准由中华人民共和国信息产业部提出。本标准由信息产业部电子工业标准化研究所归口。本标准起草单位:北京信息工程学院、信息产业部电子技术标准化研究所。本标准主要起草人:李宁、王凌、高健。E GB/T 18793-2002 寻l本标准完整地描述了可扩展置标语言CExtensiblemarkup language ,XML),它是标准通用置标语言CStandardgeneric markup language ,SGML)的一个子集。其目的在于

4、使得在Web上能以现有超文本置标语言CHypertextmarkup language ,HTML)的使用方式提供、接收和处理通用的SGML成为可能。XML的设计既考虑了实现的方便性,同时也顾及了与SGML和HTML的互操作性。XML描述了一类称为XML文件的数据对象,同时也部分地描述了处理这些数据对象的计算机程序的行为。XML是一个SGML的具体应用或受限形式。从构造来看.XML文件是合乎规范的SGML文件。XML文件由称为实体的存储单元组成,实体中包含分析的或不分析的数据。分析的数据由宇符组成,其中某些字符形成字符数据,还有一些字符形成置标。置标对文件存储总体布局和逻辑结构的描述进行编码。

5、XML提供了一种机制,对文件的存储布局和逻辑结构加以约束。一个称为XML处理器的软件模块用来读入XML文件,存取其中的内容和结构。这里假定XML处理器代表另外一个称为应用程序的模块进行工作。本标准描述了XML处理器应有的行为:即它必须怎样读入XML数据,以及它必须提供给应用程序什么信息。N 中华人民共和国国家标准信息技术可扩展置标语言(XML)1.0GB/T 187932002 Information technology Extensible Markup Language (XML) 1.。1 范围本标准完整地描述了可扩展置标语言(XML)oXML是SGML的一个子集。XML的设计目的如下

6、:a) XML应在因特网上直接使用;b) XML支持的应用应十分广泛;c) XML应与SGML兼容;d)应易于编写处理XML文件的程序;e) XML中可选特性的数目应降至最低,最好没有;f) XML文件应是可读的并适度清晰为宜;g)应能快速进行XML设计;h) XML的设计应是形式化的和简明的;i) XML文件应易于创建;j) XML置标的简洁性的重要程度最低。2 引用标准下列标准中的条文,通过在本标准中引用而成为本标准的条文。本标准出版时,所示版本均为有效。所有标准都会被修订,使用本标准的各方应探讨使用下列标准最新版本的可能性。GB/T 19881998 信息技术信息交换用七位编码字符集(e

7、qvIS0 646: 1991) GB/T 2311 2000 信息处理字符代码结构与扩充技术(idtIS0/IEC 2022: 1994) GB 23121980 信息交换用汉字编码字符集基本集GB/T 26592000 世界各国和地区名称代码(eqvIS0 3166-1: 1997) GB/T 48801991 语种名称代码CeqvIS0 639 :1 988) GB 13000. 1 1993 信息技术通用多八位编码字符集(UCS)第部分:体系结构与基本多文种平面(idtIS0/IEC 10646-1:1993) GB/T 148141993 信息技术文本和办公系统标准通用置标语言CSG

8、ML)(idt 1S0 8879: GB/T 15273. 11994信息技术八位单字节编码图形字符集第1部分:拉丁字母一(idt1S0 8859-1:1987) GB/T 15273.2一1995信息技术八位单字节编码图形字符集第2部分:拉丁字母二(idtIS0 8859-2: 1987) GB/T 169651997 信息技术超媒体/时基结构化语言CHyTime)Cidt IS0 /IEC 10744: 1992) GB 180302000 信息技术信息交换用汉字编码字符集基本集的扩充中华人民共和国国家质量监督检验检擅总局2002- 07 -18批准2002 -12 -01实施G/T 18

9、793-2002 ISO 8859-9: 1999 信息技术八位单字节编码图形字符集第九部分:拉丁字母五IAN A -CHARSETS 字符集的正式名称IANA-LANGCODES 语种标记注册IETF RFC 1766: 1995 IETF (In ternet Engineering Task F orce) IETF RFC 2141: 1997 URN句法IETF RFC 2279: 1998 UTF息,GB13000的一种转换格式IETF RFC 2376:1998 XML媒体类型IETF RFC 2396:1998 统一资源标识符(URI):通用语法IETF RFC 2732: 1

10、999 URL表示的IPv6地址字面格式IETF RFC 2781:2000 UTF-16 ,GB 13000的一种编码3 定义用于描述XML文件的术语在标准的正文中定义。下列术语用来构造这些定义,并描述XML处理器的动作:3. 1 错误error 对本标准中的某一规则的冲突,其结果未作定义。符合标准的软件可检测并报告错误,并可以排除错误。3. 2 致命错误fatal error 必须由一个符合标准的XML处理器检测出来并向应用程序报告的一类错误。该处理器遇到致命错误后,可以继续处理数据以便进一步查出更多的错误,并可向应用程序报告这些错误。为了支持对错误的更正,该处理器可以向应用程序提供(字符

11、数据和置标混用的)文件中尚未处理的数据。然而,当检测到致命错误后,该处理器不得继续进行正常的处理(即,它不得按正常方式继续向应用程序传送字符数据和有关文件逻辑结构的信息)。3. 3 由(如)用户选择at user option 符合标准的软件行为可以或必须(取决于句中的能愿动词)与所描述的相同;如果确实如此,该软件必须提供一种手段使得用户能够启用或禁用所描述的行为。3.4 有效性约束validity constraint 适用于所有有效的XML文件的一条规则。与有效性约束相冲突属于错误;如用户选择,XML有效性验证型处理器必须报告这些错误。3. 5 格式良好的约束well-formedness

12、 constraint 适用于所有格式良好的XML文件的一条规则。与格式良好的约束相冲突属于致命错误。3.6 匹配(相同)match(对于字符串或名字)进行比较的两个字符串或两个名字必须完全相同。对于那些在GB13000中可能有多种表示形式的字符(如,同时具有预制形式和基本字形加变音符号形式的字符),仅当它们在两个字符串中具有相同的表示时才匹配。西文字符元大小写转换。3. 7 匹配(属于)matchC对于语法中的字符串和规则)如果一个字符串属于一个语法产生式产生的语言,则该字符串与该语法产生式相匹配。3. 8 匹配match(对于内容和内容模型)当一个元素符合元素有效约束中的描述时,该元素与它

13、的声明匹配。3.9 为了兼容for compatibility 注明描述仅用来确保XML与SGML兼容的一种XML的特性的修饰语。3.10 为了互操作for interoperability 注明描述一个不具约束性的XML建议的修饰语。目的是加大目前安装的SGML处理器处理2 GB/T 18793-2002 XML文件的机会,而这些SGML处理器的出现先于GB/T14814附录中的WebSGML改编本。4 文件按本标准的定义,一个数据对象若是格式良好的,则它是一个XML文件。一个格式良好的XML文件若满足更强的约束,则可进一步成为有效的。XML文件具有逻辑和物理两种结构。物理上,文件由称为实体

14、的单元组成。实体可以引用其他实体,将它们包含在文件中。一个文件开始于根或文件实体。逻辑上,文件由声明、元素、注释、字符引用和处理指令组成,所有这些都在文件中用显式置标指出。文件的逻辑结构和物理结构必须按6.3.2格式良好的被分析实体中的描述正确嵌套。4.1 格式良好的XML文件如果一个文本对象满足下列条件,则是个格式良好的XML文件:a)整体上与标有document的产生式匹配;b)满足本标准中格式良好的所有约束;c)文件中直接或间接引用的每个分析的实体都是格式良好的。文件川1Jdocument : - prolog element Misc养与document产生式相匹配是指:a)它包含一个

15、或多个元素;b)只有一个元素称为根或文件元素,该元素的任何部分都不出现在其他元素的内容中。而对所有其它元素,若开始标记出现在另一个元素的内容中,则结束标记也要出现在该元素的内容中。简单地说,由开始和结束标记定界的各个元素之间互相正确地嵌套。结果是,对文件中的每个非根元素C,在文件中都有另一元素p.使C在P的内容中,但不在P的内容中的任何其他元素的内容中。P称为C的父亲,而C为P的孩子。4.2 字符个分析的实体由正文,即一个字符序列组成,字符序列可以表示置标或字符数据。字符依GB 13000规定是正文的最小单位,合法的字符包括制表符、回车符、换行符以及GB13000中的合法图形字符。由于将来可能

16、会通过修正将新字符加入到这两个标准中去,XML处理器必须接受产生式Char所规定的范围内的任何字符。由用户选择,XML处理器可以检查文件中的数据字符是否为GB13000 特定版本中的合法字符。不鼓励使用GB13000中定义的兼容性字符。字符泡围2J Char := :t:t: x9 ! :t:t: xA I :t:t: xD I :t:t: x20- :t:t: xD7FFJ I :t:t: xEOOO- :t:t: xFFFDJ I :t:t: x10000- :t:t: x10FFFFJ /头除替代块、FFFE和FFFF之外的任何GB13000字符。关/将字符代码位编码成位模型的机制可能依

17、实体的不同而有所不同。所有XML处理器都必须支持GB 13000中的UTF-8及UTF-16编码;指出两种编码究竟哪一个正在使用的机制,以及引人其他编码的机制,将在后面的6.3.3实体中的字符编码中讨论。4.3 公用语法构造本条定义了语法中广泛使用的一些符号。S(空白)由一个或多个空格(:t:t:x20)、回车、换行或制表符组成。3 GB/T 18793-2002 |空白|3J S := (:t+ x20 I :t+ x9 I :t+ xD I :t+ xA)+ 为方便起见,把字符分为字母、数字或其他宇符。字母由字母表中的一个字母、一个音节基字符或一个表意字符组成。各类特定字符的完整定义见附录

18、A字符类别。名字是一个记号,以字母或某个标点符号字符开始,后跟若干字母、数字、连字符、下划线符、冒号或句号等,统称为名字字符。以字符串xml开始的名字,或以与(XI x) (M 1 m) (L 1汀,)相匹配的任意字符串开始的名字,都作为本标准当前或未来版本的保留字。注:保留XML名字内的冒号字符,供命名空间(namespace)试验用。它的含义有待日后标准化,那时,使用了冒号的用于试验文件可能需要更新。(并不保证XML采用的任何命名空间机制实际上都会用冒号来做命名空间的定界符。)实际上,这意味着作者在XML名字中不应使用冒号,除非用于命名空间试验,但XML处理器应接受冒号作为名字字符。Nmt

19、okenC名字记号)是名字字符的任意混合体。名字和记号4J NameChar : = Letter I Digit I . I , I气,I : 1 CombiningChar I Extender 5J Name : = CLetter尸,I :) CNameChar)头6J Names : = Name C :t+ x20 Name)祷7J Nmtoken : = (NameChar) + 8J Nmtokens : = Nmtoken (:t+ x20 Nmtoken)头字面数据是放在引号内的任何字符串,不包括用作该字符串定界符的引号。字面数据用来规定内部实体的内容CEntityValu

20、e)、属性值CAttValue)以及外部标识符(SystemLiteral)。注意,可以对SystemLiteral进行分析而无需置标扫描。字面数据9J EntityValue :- ( %&.J I PEReference 1 Reference)关I? ( % &. J 1 PEReference I Reference)兴口OJAttValue :- C ),本标准强烈建议不要这样做,因为对该实体的任何引用都会导致一个格式良好方面的错误。4.4 字符数据和置标正文由字符数据和置标混合组成。置标的形式有:开始标记、结束标记、空元素标记、实体引用、字符引用、注释、CDATA节定界符、文件类型

21、声明、处理指令、XML声明、文本声明以及文件实体顶层的空白(即不在文件元素和其他置标之内的空白)除置标外的所有正文构成文件的字符数据。字符&4和可用&.gt;表示,而当它在内容中的字符串J丁中出现,但此字符串不表示一个CDATA段的结束时,出于兼容性考虑,必须用&.gt;或一个字符引用转义得到。4 GB/T 187932002 在各元素内容中,字符数据是不含置标起始定界符的任何字符串。在CDATA节中,字符数据是不含CDATA节结束定界符JJ的任何字符串。为使属性值既能包含单引号又能包含双引号,撇号可表示为&apos户,双引号字符可表示为"。宇符数据14J CharData : =

22、仁注释举例:!&. 注意,本语法不允许注释以-结束。下面的例子不是格式良好的:| Char头)? 17J PITarget : = Name- (x I x) (M I m) (L I l ) PI不属于文件的字符数据,但必须传递给应用程序。PI以目标(PITarget)作为开始,该目标用来标识指令所指向的应用程序。在本标准的当前或今后版本中,目标名XML、xml等均作为标准保留字。XML的记法机制可以用做PI目标的形式化声明。在处理指令中不识别参数实体引用。4.7 CDATA节CDATA节可以出现在字符数据可能出现的任何地方;用于将含有可能会被识别成置标的字符的正文块做转义处理。CDATA节

23、以字符串结束。CDATA节18J CDSect :二CDStartCData CDEnd 19J CDStart : =Char头)21J CDEnd : =叮J在CDATA节内,只将宇符串CDEnd视为置标,因此及被视为字符数据,而不是置标:Hello , world! J J 4.8 前导说明部分和文件类型声明5 GB/T 18793-2002 XML文件可以,并且应以一个规定了所用的XML版本号的XML声明作为开始。例如,下面这个完整的XML文件,它是格式良好的,但不是有效的:Hello , world! 下例也是如此:Hello , wor ld! 版本号1.0应用来指明该XML文件与

24、本标准的这个版本相一致。若不一致,而使用值1.0则是一个错误。XML标准制定部门打算赋予本标准的后续版本不同于1.0的数值,但这并不表明作出制订XML的任何未来版本的承诺,即使有了新版本,也不承诺使用任何特殊的版本编号方案。由于不排除有未来版本的可能性,一旦有必要,本构造可提供作为自动识别版本的手段。如果XML处理器接受了一个文件,其标记的版本不是该处理器所支持的,处理器可以作为错误报告。XML文件中置标的功能用来描述它的存储和逻辑结构,并将属性-值对与文件的逻辑结构相关联。XML提供了文件类型声明机制,用于定义对逻辑结构的约束,支持预定义存储单元的使用。若一个XML文件有相关联的文件类型声明

25、,并且遵循其中的表达的约束,则该XML文件是有效的。文件类型声明必须出现在文件的第一个元素之前。前导说明部分22J prolog : = XMLDecl? Misc於(doctypedeclMisc於)?23J XMLDecl : = 24J VersionInfo : = S version Eq ( , VersionNum , 1 , VersionNum ) 25J Eq : = S? _, S? 26J VersionNum : = (a-zA-ZO-9二:J1-)+ 27J Misc : = Comment 1 PI 1 S XML文件类型声明包含或指向置标声明,置标声明提供了某一

26、类文件的语法。该语法称为文件类型定义或DTD(documenttype definition)。文件类型定义可以指向一个包含置标声明的外部子集(一种特别的外部实体).或者可以在一个内部子集中直接包括置标声明,或者可以两者兼用。文件的DTD由这两个子集共同组成。置标声明可以是元素类型声明、属性表声明、实体声明或记法声明。如在下列格式良好的和有效的约定中所述,这些声明可以全部或部分包含在参数实体(Parameter-entity.PE)中。进一步信息见6物理结构。文件类型声明28J doctypedecl : _ VC:根元素类型29J mark叩decl: = elementdecl 1 Att

27、listDecl 1 EntityDecl 1 NotationDecl 1 PI 1 Comment VC:正确的声明/PE嵌套JWFC:内部子集中的PEJ注:有可能构造一个格式良好的文件,包含一个既不指向外部子集也不包含内部子集的产生式doctypedecl。置标声明可全部或部分由参数实体的替换正文组成。本标准后面为各单个非终结符(elementdecl.AttlistDecl.等等)所构造的产生式,描述的是在所有的参数实体被包含之后的声明。除了在字面值中、处理指令中、注释和忽略条件节(见5.4条件节)的内容中之外,在DTD中的任何地方(各内部和外部子集和外部参数实体)都将识别参数实体引用

28、。在实体值字面值中也将识别参数实体引用。在内部子集6 G/T 18793 2002 中参数实体的使用有如下限制:有效性约束:根元素类型文件类型声明中的Name必须与根元素的元素类型匹配。有效性约束:正确的声明/PE嵌套参数实体替换正文必须与置标声明正确地嵌套。也就是说,如果一个置标声明(上述mark u pdecl) 的首字符或末字符包含在用于参数实体引用的替换正文中,那么这两者必须都包含在同一个替换正文中。格式良好的约束:内部子集中的PE在内部DTD子集中,参数实体引用仅能出现在置标声明可以出现的地方,而不能出现在置标声明内部。(此约束不适用于在外部参数实体中出现的引用,也不适用于外部子集。

29、)象内部子集一样,外部子集及在DTD中引用的任何外部参数实体,必须由一系列完整置标声明组成,而这些置标声明的类型是非终结符markupdecl所允许的,其中可以夹杂空白或参数实体引用。然而,可以通过使用条件节的构造有条件地忽略外部子集或外部参数实体的部分内容;在内部子集中则不允许这么做。在DTD中被引用的外部子集和任何外部参数实体必须与产生式extPE匹配。见6.3.2格式良好的被分析实体。外部子集30J extSubset : = TextDecl? extSubsetDecl 31J extSubsetDecl : - ( markupdecl I conditionalSect I PE

30、Reference I S )头一J外部子集和外部参数实体也与内部子集有所不同:前两者的参数实体引用允许在置标声明内出现,而不仅限于出现在置标声明之间。带有文件类型声明的XML文件举例:l Hello , world! I J Hello , world! 若同时使用外部和内部子集,则认为内部子集出现在外部子集之前。其效果是,内部子集中的实体和属性表声明置于外部子集中的实体和属性表声明之前。4.9 独立文件声明因为文件要从XML处理器传递给应用程序,置标声明可以影响文件的内容;缺省属性和实体声明便是例子。可以作为XML声明的一个组件出现的独立文件声明,报告是否存在着这些出现在文件实体之外或参数

31、实体之中的声明。外部置标声明定义为在外部子集或在参数实体(外部或内部,包括内部参数实体是因为不要求非有效性验证型处理器读入它们)中出现的置标声明。7 GB/T 18793-2002 独立文件声明32J SDDecl : = S standalone Eq ( (yes I no) I ( (yes I no) ,川)VC:独立文件声明在一个独立文件声明中,值yes表明不存在外部置标声明影响由XML处理器传给应用程序的信息。值no表明有或可能有这样的外部置标声明。注意,独立文件声明仅表示外部声明的存在;如果文件中存在对外部实体的引用,而这些实体已在内部声明时,不影响它的独立状态。若无外部置标声明

32、,则独立文件声明没有意义。若存在外部置标声明而没有独立文件声明,则假定其值为no。含有standalone= no的任何XML文件都可以用算法转换为独立文件,这对于某些网络传送的应用程序可能是需要的。有效性约束:独立文件声明若任何外部置标声明包含下列声明,则独立文件声明必须有值飞no一一带有缺省值的属性的声明,如果适用这些属性的元素出现在文件中而没有给出这些属性值;某些实体的声明(除amp、lt、gt、apos和quot外),如果对这些实体的引用出现在文件中;一一属性值要被规格化的属性,如果这些出现在文件中的属性带有因规格化而改变的值的话;具有元素内容的元素类型,如果这些类型的任何实例中直接出

33、现空白。具有独立文件声明的XML声明举例:4.10 空白处理在编辑XML文件时,用空白(即空格、制表符和空行)将置标隔开非常方便,可以获得更好的可读性。交付的文件通常不带这样的空白。另一方面,在文件的交付版本中应保留有意义的空白的情况,在例如诗歌或源代码中也是常见的。XML处理器必须总能将文件中不是置标的所有字符传递给应用程序。有效的XML处理器也必须通知应用程序,这些字符中有哪些构成了空白,出现在元素内容中。可以对一个元素附加一个名为xml:space的特殊属性来表明在该元素中,应由应用程序保留空白。在有效的文件中,如果要用到该属性,则像其他属性一样必须先行声明。在声明的时候,该属性必须声明

34、成枚举类型,其值为default和prmervE之一或两者。例如:值default表示,该元素可以接受应用程序的缺省空白处理模式;值preserve表示,应用程序欲保留所有空白。在声明该元素的地方,认为这个声明意图适用于该元素内容中的所有元素,除非它由另一xml:space属性的实例所覆盖。任何文件的根元素,被认为没有对应用程序报告空白处理的意图,除非给出了该属性的值,或以缺省值对该属性进行了声明。4.11 行尾处理XML分析的实体通常作为计算机文卷存储,为便于编辑,这些文件按行组织。各行通常由回车(:ttxD)和换行(:ttxA)字符的某种组合分隔开。为简化应用程序的任务,对于被分析实体中的

35、断行,处理器必须通过下述两种方法之一将其规格化成:ttxA:a)在语法分析之前,把输入的双字符序列:tt xD :tt xA及任何后面不带:ttxA的:ttxD转成:ttxA,或者8 GB/T 18793-2002 b)使用其他某种方法使得传送到应用程序的字符与a)做法得到的结果相同。4.12 语种标识在进行文件处理时,标识出文件的内容是用自然语言还是用形式语言写成的通常很有用。可以在文件中插入一个名为xml:la吨的特别属性,规定XML文件中任何元素的内容和属性值所用的语种。在有效的XML文件中如要用到这一属性,则同任何其他属性一样,必须先行声明。该属性的值即是在1-ETF RFC 1766

36、J即标识语种的标记中定义的语种标识符,或IETF标准体系的后续版本。注:RFC 1766的标记由以下构成:双字母表示的语言(如GB/T4880所定义的);双字母表示的国家和地区代码(如GB/T 2659所定义的);在InternetAss耶ledNlImbers AlIthority CIANA)注册的语种标识符IANA-LANGCODESJ。可望IETFRFC 1766J的后续版本将引人三字母表示的语种代码来表示不在GB/T4880之中的语种。例如:The quick brown fox jumps over the lazy dog. Whatcolour is it? What colo

37、r is it? Habe nun , ach! Philosophie , Juristerei , und Medizin und leider auch Theologie durchaus studiert mit heiem Bemhn. 用xml:lang声明的含义,视为适用于元素在规定处的所有属性和内容,除非它由该内容中的另一个元素的xml:lang实例所覆盖。一个xml:lang的简单声明可以有如下形式:1 Xml :lang NMTOKEN # IMPLIED 但在适当的时候,也可给出特定缺省值。在供英国学生阅读的法文诗集中,带有以英语解释的词汇表和注释,可以这样来声明xml

38、:lang: WFC:唯一属性规格声明35J Attribute :工NameEq AttValue VC:属性值类型JWFC:无外部实体引用JWFC:属性值中无 结束标记举例:开始和结束标记之间的正文称为此元素的内容:元素的内容37J content : = CharData? (element I Reference I CDSect I PI I Comment) CharData?)铃定义:不带内容的元素称为空元素。空元素表示为一个空元素标记,或者一个开始标记紧跟着一个10 GB/T 18793 2002 结束标记。空元素标记有如下特殊形式:空元素标记38J EmptyElemTag

39、:-WFC:唯一属性规格说明空元素标记可以用于任何不含内容的元素,不论该元素是否用关键宇EMPTY声明过。为了互操作,空元素标记应该用于,且仅能用于声明为EMPTY的元素。空元素举例:5.2 元素类型声明为使文件有效,可以用元素类型声明和属性表声明来约束XML文件的元素结构。元素类型声明对元素的内容加以约束。元素类型声明通常用来限定哪种元素类型可作为该元素的孩子出现。由用户选择,当一个声明所指的元素类型尚未声明时,XML处理器可以发出警告,但这不是一个错误。元素类型声明的形式为:元素类型声明39J elementdecl :- VC:唯一元素类型声明40 J contentspec :-EMP

40、TY 1 ANY 1 Mixed 1 children 这里,Name给出所声明的元素类型。有效性约束:唯一元素类型声明一个元素类型不能声明多次。元素类型声明举例:5.2.1 元素的内容当某一类型的元素只能包含用可选空白(匹配非终结符S)分隔的子元素(无字符数据)时,该元素类型具有元素内容。在这种情况下,约束包括了一个内容模型,它是一个简单语法,决定着允许的子元素类型以及它们允许出现的次序。该语法建立在内容粒子(cp)上,由名字、内容粒子选择表或内容粒子顺序表组成:元素内容的模型41J children : = (choice 1 seq) (巧,1长,1 + )? 4ZJ cp : - (N

41、ame i choice 1 seq) (巧|长,1十,)? 43J choice :-气S?cp(S? 1 S?cp)十S?) VC:适当的组/PE嵌套44J seq :-气,S? cp ( S?气,S? cp)祷S?)VC:适当的组/PE嵌套这里,每个Name都是一个可以作为孩子出现的元素类型。选择表中的任何内容粒子可以按在语法中选择表出现的位置出现在元素的内容中;而在顺序表中出现的内容粒子必须以列表中给定的次序逐11 GB/T 18793-2002 一出现在元素的内容中。跟在名字或列表之后的可选字符,决定元素或表中的内容粒子是否可以出现:一次或多次(十),零次、一次或多次仆),零次或一次

42、(?)。缺少这样的操作符意味着元素或内容粒子必须恰好出现一次。这种语法和含义与在本标准的产生式中所使用的内容模型相同。当且仅当一个元素的内容可以通过满足内容模型中的选择、序列和重复操作符得到,并且内容模型中的元素类型与内容中的每个元素都相匹配,那么元素的内容匹配内容模型。为了兼容,如果文件中的一个元素可以多次匹配内容模型中一个元素类型时,是一个错误。详细信息,见附录D确定性内容模型。有效性约束:适当的组/PE嵌套参数实体的替换正文必须用括号组适当地进行嵌套。也就是说,如果参数实体的替换正文中包括choice、seq或Mixed构造中的开括号或者闭括号之一,那么它们两者必须包括在同一个替换正文中

43、。为了互操作,如果在choice、seq或Mixed结构中出现参数实体引用,则它的替换正文应至少包含一个非空字符,并且替换正文的第一个和最后一个非空字符不应为一个连接符(1或,)。元素内容模型举例:5. 3 属性表声明属性用来将名字值对与元素相关联。属性规范说明仅可在开始标记和空元素标记中出现;因而,用来识别它们的产生式出现在5.1开始标记、结束标记和空元素标记中。属性表声明可用于:12 一一定义一组与一给定元素类型有关的属性;一一对这些属性建立类型约束;一一为属性提供缺省值。属性表声明为与给定元素类型相关联的每个属性规定名字、数据类型和缺省值(如果有的话)。GB/T 18793-2002 属

44、性表声明46J AttlistDecl : =47J AttDef :二SName S AttType S DefaultDecl 在规则AttlistDecl中的Name是元素类型。由用户选择,如果为一个本身没有声明的元素类型声明了属性,XML处理器可以发出警告,但这不是一个错误。在规则AttDef中的Name是属性名。当对一给定元素类型提供多个AttlistDecl时,这些属性表声明的内容将合并在一起。当对一给定元素类型的同一属性提供多个定义时,只接受第一个定义,后面的定义被忽略。为了互操作,DTD的作者可以选择为一个给定的元素类型至多提供一个属性表声明,为属性表声明中的一个给定的属性名至

45、多提供一个属性定义,以及为每个属性表声明至少提供一个属性定义。为了互操作,如果对一给定的元素类型提供了多个属性表声明,或者对给定的属性提供了多个属性定义,则由用户选择,XML处理器可以发出警告,但这不是一个错误。5. 3. 1 属性类型XML属性类型有三种:字符串类型、记号化类型组和枚举类型。字符串类型可以以任何字面宇符串为值;记号化类型含有不同的词法及语义限定。需在属性值规格化后再施加语法中所注的各有效性约束,见5.3属性表声明。属性类型48J AttType : = StringType I TokenizedType I EnumeratedType 49 J StringType : = CDA T A 50J TokenizedType :-ID VC:IDJVC:每一元素

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 标准规范 > 国家标准

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1