您的位置:标准吧 > 标准下载 > GB T 17478 2004 低厘直流电源设备的性能特性9 L

GB T 17478 2004 低厘直流电源设备的性能特性9 L

时间:2012-5-28 14:42:50 作者:标准吧 来源:GB 阅读:1742次
GB T 17478 2004 低厘直流电源设备的性能特性9 L
 

B4  文件结构

    SGML标记起两个作用:

    a.  给出文件的元素之间的结构关系。

    b.  标识每个元素的通用标识符(GI)和属性。

    所有文件都必须遵循的确定结构和属性的规则是由SGML定义的(其中一些规则已介绍过;一些以后讨论)。文件中允许的特有的元素和属性则由该文件的类型定义来定义。

B4.1  文件类型定义

    通用标识符(GI)将一个元素标识为一类元素中的一个成员或一个“类型”。一个文件类型定义就是一个置标声明的集合,适用于某一特有类型的所有文件。

    出现在文件类型定义中的三种最为重要的声明是:

   a.  元素声明,它定义了可以出现在每一个元素中的GI及其出现的顺序。

   b.  属性定义表声明,它定义了元素可以具有的属性以及这些属性可以取的值。

   c.   实体声明,它定义了可以在这种类型的文件中引用的实体,例如,实体引用可以简化频繁使用的长词组的键入;

    <! ENTITY SGML‘‘Standard Generalized Markup Language”>

    为了避免重复键入,通常将文件类型定义作为一个单独的实体存储。然后,通过既标识文件类型又对外部实体进行引用的文件类型声明,将它并入到每个文件中。

B4.2  元素声明

    元素只能依据文件类型定义的规则出现在文件中。例如,除非定义允许插图中含有段,否则将段放入插图中就是错误的。元素声明就是用来定义这些规则的。

4.2.1  内容模型

    对于文件中的每个元素,应用设计者规定两个元素声明参数;元素的GI和一个定义它内容的内容模型。模型参数规定哪些子元素fn字符串可以出现在内容中。

    例如,对于教科书的声明可以是.

    <! ELEMEN'r textbook (front,body,rear>

其中,“textbook”是待定义内容的GI,而“(front ,body,rear)”则是定义它内容的模型。本例声明中,教科书(textbook)中含有GI:“front”、"body”和“rear”(这些GI分别代表“书前部”、“正文体部”和“书尾部”,但这只是对人而不是对SGML语言分析器有意义):

    一个模型就是一种类型的组,组由连接在一起的、称为记号的组成员构成。组以圆括号,即“组打

开”(grpo)和“组关闭”(grpc)定界符为界。即使模型组中只有一个记号,圆括号也是必须有的。

    模型组中的记号是一些GI,模型组中还有称作连接符的定界符,表示GI的放置次序,以及另一种称作出现指示符的定界符,表示每个GI可出现多少次。

B4.2.2  连接符和出现指示符

    连接符用在GI之间,以表明它们是如何连接的。元素textbook模型中使用了顺序连接符(seq),即逗号。表示元素必须以其Gl在模型中出现的次序一个接一个地出现在文件中。

    出现指示符用在它所作用的Gl之后。在textbook的例子中没有使用出现指示符,因此每个元素都必须出现一次,且只能出现一次。为使书前部和书尾部成为可选的,应在模型组中使用可选出现指示符(opt),即问号:

    <! ELEMENT textbook(front?,body,rear?>

    到目前为止,只有textbook的顶层元素已定义。类型定义还必须声明“front”、"body”和“rear”元素的结构,以及包含在。f.ont”、"body一和“rear中的元素的结构,如此往下,直至达到数据字符为止.

    为简单起见,可以假设正文体(body)元素的内容仅仅是若干个段构成的序列。即正文体(body)中唯一允许出现的Gl是“p”(代表段),但它可以出现若干次。为了指出有多个段.应在段的GI后面跟一个加号,即“必须的且可重复的”出现指示符(plus)。

    <!ELEMENT body(p+)>

    其中加号指出正文体中至少有一个段。如果由于某种原因希望允许正文体(body)中一个段也没有,那么附加的符号就应当是星号,即“可选的且可重复的”出现指示符(rep)。

    <!  ELEMENT body(p*)>

    假设教科书的正文体中除了可以含有段元素外,还可以含有例子元素a如果例子元素的GI是“xmp”,那么“许多段或例子”可以表示成:

    <!ELEMENT body  (plxmp)+>

    这里竖线(l)代表的是“或一连接符(or),表达式"plxmp”表示“或者一个段或者一个例子”。

    虽然模型组中含有记号,但模型组本身又可以是出现指示符作用下的一个记号。由于出现指示符(“?”、“+一和“*一)具有比连接符(“,”和“I”)更高的优先级,所以在所有上面的例中用括号进行分组是必要的。

    因而,下面的表达式是无效的:

    <I ELEMENT body  (p+lxmp+>

这是因为上式表示的是“或者许多段或者许多例子”,而不是所要的“许多混在一起的段或例子”。’

    需要考虑多种连接符.假定教科书的书前部中有一个标题页元素,其中含有标题、作者名和出版社,但它们可以任意次序出现。这样就不能再使用seq连接符了,因为seq连接符要求以规定的次序出现,同时也无法使用or连接符,因为or连接符只能从三个元素中选出其中一个。

    因此应当使用的是和号(“&”).即“与”连接符(and)。它的作用是指出模型组中的所有GI都必须出现,但次序是任意的。

    <!  ELEMENT titlepage    (title&author&publisher)>

B4.2.3  模型中的实体引用

    假定有两个元素的内容模型几乎一样但又不全相同:

    <! ELEMENT body (plxmplhllh21h31h4)+>

    <! ELEMENT rear (plhllh2Ih3[h4)+>

    这里,正文体和书尾部都有段和标题,但只有正文体中有例子。

    就象对待文件中的重复性正文一样,也可以使用实体引用处理置标声明参数中的重复性部分。唯一的区别是用在声明参数中的实体引用(“参数实体引用”)以一个特殊字符,百分号(“%”).即所谓“参数实体引用打开”定界符(pero)为开始。还必须把pero用在实体声明中,以表明所定义的实体是参数实体(但它是一个独立的参数,不应将它误解为一个引用)。

    <J ENTITY    %hlt04    "hl|h2|h3|h4”>

    <J ELEMENT    body    (p|xmp|%h|t04;)+>    ’

    <l ELEMENT    rear    (p|%hlt04,)+>

B4.2.4  名字组

    组还有另一用法。假定正文体和书尾部有相同的结构声明。

    <! ELEMENT    body    (p|xmp)+>

    <! ELEMENT    rear    (p|xmp)+>

    把声明作用于一组元素,既可以节省键入工作量,又可强调元素之间的相似性:

    <! ELEMENT (bodylrear)  (plxmp)+>

  B4.2.5  数据字符

    到目前为止讨论的只是含有其他元素的元素。然而,所有的应用最终都必须处理那些不再有标记出现的实际数据。

    可以用保留名“# PCDATA”在模型中代表数据,“# PCDATA”表示“零个或多个分析过的数据字符”。事实上,它具有一个隐含的rep出现指示符,不需写明。声明

    <! ELEMENT  p  (#PCDATA)>

    表示段是由零个或多个字符(包括记录结束和空格)组成的串.

    附带说明,“# PCDATA”用大写字母的原因,仅仅因为它是由置标语言分析器定义的一个助记词。在基准具体语法中,除了实体名外,置标语言分析器忽略所有名字在大小写上的差别。

    在大多数文件中,元素除含有数据字符外还可以含有其他已标记的元素,一般包括短的引文、脚注和插图引用、各种类型的要强调的词组,以及专门为某特定文件类型定义的引用或引证。

    例如,可以将段的结构定义成:

<!ENTITY       %phrase       "quote lcitationlreference">

<! ELEMENT       p             ( #PCDATAI%phraseF) * >

    上述声明指出段中有夹有“短语”元素的字符。这些元素可以没有,也可以有许多。

    顺便说明,“#”是一个定界符,称作“保留名指示符”(rni),用以区别用户创建的名字,加上rni,可清楚地表明“# PCDATA”不是GI。

B4.2.6  空内容

    可以定义用户不输入内容的元素。例如,对于插图引用,总是在处理到它时才生成其内容。为了表示空元素,用一个关键字而不是用被括起来的模型组来说明元素的内容。

    <! ELEMENT figref EMPTY>

    被说明为空的元素不能有结束标记(也没有必要有结束标记,因为没有内容需要由它来结束)。

B4.2.7  非SGML数据

    如果教科书的正文体中有照片,则该元素声明可以是:

    <! ELEMENT body (plphoto)+>

    照片一般用代表其图象中各点颜色的位串表示。这些位组不同于正文和置标中字符的含义;必须把它们解释成一种唯一的记法,且该记法不是由SGML定义的。

    由于置标语言分析器不对非SGML数据扫描,所以必须将它存放在单独的实体中,该实体的名字由一个特殊的属性给定(以后讨论)。而元素的内容是空的。

    <! ELEMENT photo EMPTY>

B4.2.8  模型定界符小结

    下表总结了模型中使用的定界符以及它们在基准定界符集中的字符串。

    ——组:

    串  名字          含义

    (GRPO             打开组,把组中的表达式作为一个单位处理。

    )GRPC             关闭组

    一一出现指示符:

    串    名字        含义

    ?   OPT        可选的:可出现O次或1次。

    +    PLUS       必须且可重复的:必须出现1次或出现多次。

    *    REP        可选且可重复的;可以出现O次或出现多次。

    ——连接符:

    串    名字      含义

    .    SEQ        所有被连接的元素,必须以其在模型组中的次序出现在文件中。

    |    OR         被连接的元素中的一个且只能一个必须出现在文件中。

    &    AND        所有被连接的元素必须出现在文件中,但次序任意。

    ——其他:

    串    名字      含义

    #    PN1        标识保留名,以便区分保留名与用户规定的名字。

B5  属性

    描述性标记通常不仅包括元素的通用标识符(GI).还可能包括属性。GI通常是一个名词;属性则是描述GI某些特征的形容词或名词(使用动词或格式化参数属于过程性用法而不是描述性用法,由于它违反了通用置标所要达到的目的,所以最好不要这样使用)。

    某一元素所允许的专有属性由类型定义来定义,类型定义也确定了各属性的取值范围以及缺省值。

B5.1  规定属性

    图B2中给出了一个带两个属性的标记。

GB/T?17478-2004?低厘直流电源设备的性能特性_9/L

图B2带两个属性的开始标记

    在开始标记中,属性跟在GI之后。用名字、值指示符定界符(vi)以及属性值规定每一属性。在本例中,对名为“security”的属性给定的值是“Internal Use”,对属性“sender”给定的值是“LTG”。

B5.1.1  名字

    属性名,如本例中的“security”和“sender”,与以前遇到过的实体名、GI和其他种类的置标语言的名字类似,都有某些共同的特性,即名字只能由被指定为“名字字符”的字符组成,而且只能以名字字符中的称为“名字开始”的字符子集中的字符为开头。

    通常(即基准具体语法中),名字字符指字母、数字、句点和连字符.而名字的开始字符只能是字母.名字中的小写字母通常与大写字母作相同处理,所以在键入时,名字的大小写没有区别。而实体名的字母的大小写是有区别的。

    名字的最大长度通常为8个字符,但系统可以定义不同的数量集,其中名字的长度和语言的其他数量特征可与基准具体语法所定义的不同。

B5.1.2  属性值

    属性值由括在“字面值定界符”(lit)里面的数据字符和实体引用组成,“字面值定界符”通常用双引号(”)表示。用单引号(’)表示的另一种字面值定界符(lita)也可以用,但是这两种类型的定界符不能配对使用。

    空的属性值用两个相连的lit定界符表示t

    <listing name=Jones phone=Ⅳ555-1234"altphone=””>

    属性值中的记录结束和制表符被替换成空格。而记录开始字符则被忽略(即被删除)。

    下表归纳了上述定界符的作用,及基准定界符集中指定的字符串:

    串    名字    含义

    =     VI      值指示符

    ”    LIT     字面值定界符

    ,    LITA    字面值定界符(另一种)

B5.2  声明属性

    对于每个元素,文件类型定义中都必须含有设定该元素属性的信息。这是由属性定义表声明完成的。如果元素没有属性定义表,则该元素就没有属性。

B5.2.1  属性定义的语法

    属性定义表声明的开头是它所作用的相关元素类型。声明可以规定一个单独的GI,也可以规定一组GI,在后一种情况,同一属性适用于该组的所有成员。

    对于每个属性,声明中还包括如下属性定义:

    a.  属性名;

    b.  它的允许值(声明的值),以及

    c.  缺省值。当文件中没有规定该属性的值,和采用省略标记使置标最简化(在后面描述)时,将使用缺省值。

    属性表比到目前为止所遇到的所有声明均有更多的参数。对于较长的声明,在其中加入注释是很有帮助的。在置标声明中,注释可以出现在任何参数之间,此外,一个声明也可以只由注释构成。

    注释以两个连字符即“注释定界符”(com)为开头和结束。注释的一种用途就是在参数顶上放置标题:

    <! --ELEMENTS NAME VALUE DEFAULT-->

    属性定义表要求元素的每个属性中重复出现某些参数。由于声明可能超越记录的边界(即跨行),如果需要,可用列表形式输入。下面对图B2中的memo元素所作的声明,就采用了列表形式:

    <! ——      ELEMENTS    CONTENT - ->

<! ELEMENT   memo        <from ,to ,subject ,body ,sig ,cc ?>

<! ——      ELEMENTS   NAME     VALUE           DEFAULT-->

<! ATTLIST   memo       status   (final|draft)   “final”

                            Security  CDATA          #REQUIRED

                            Version   NUMBER         “01”

                            Sender    NAME           #IMPLIED

     >

    该属性定义表含义如下:

    status    “。tatus”属性必须有值“final”或“draft”。由于图B2中对该属性没有规定值,所以语言分析器将把缺省值“final”作为该属性的值。

    security   “security”属性以0个或多个字符组成的串作为其值。缺省值参数中的关键字。REQUIRED”表明在文件中总是必须规定该属性的值.

    version    “version一属性的值必须是1个或多个数字组成的串。其缺省值是串“01”.

    sender    “sender”属性必须以符合语法的SGML名字为值。关键字“IMPLIED”指出该属性是可选的,而且,如果文件中没有规定该属性的值,则其值由应用提供(图B2中,它被规定为“LTG”)。

    注意:当缺省值完全由名字字符构成时,可以省略其中的定界符(由于缺省值参数的关键字以rni开始,所以,它们不会与应用定义的名字相混)。在上例中,可以不带定界符输入缺省值“final”和“01”。

    由于引入了注释,所以应注意到空的置标声明(“<l>”)也是一个注释-可以象空白记录那样,把它用于分隔源文件的各个部分,而不会误解为使用了“便捷引用”特征(以后讨论)。

B5.2.2  复合属性值

    一个属性值逻辑上可能由若干元索组成。例如计算机显示一‘个图示,可以用两种颜色:绿色和黑色。

由于标记中对一个属性只能规定一次,所以,

    <display  color= black  color =green>

是错误的,不能这样输入。

    但可将“olor”属性的值声明为“NAMES”,则可以在单个属性值中同时规定两种颜色:

    <! ELEMENT    display    (p+)>

    <! ATTLIST    display    color NAMES”white black”>

    <!>

    <display color=“black green”>

    其中“NAMES”关键字的含义是“由空格、记录结束、记录开始或水平制表字符分隔开的一个或多个SGML名字组成的表”。其他一些允许用表来声明其值的关键字是:

    NUMBERS    一个或多个数字的表。

NMTOKENS   一个或多个名字记号组成的表(名字记号类似于名字,但它们不需要以名字开始字符打头,例如,“-abc 123 12.3 123a.123”)。

 

NUTOKENS    一个或多个数字记号组成的表(数字记号类似于名字记号.但其第一个字符必须是一个数字,例如,“123 12.3 123a 0.123”.不能是“.123 456”)。

    当允许只有一个记号时才能使用单数形式“NMTOKEN”和“NUTOKEN”(注意:说明参数值的关键字不需要rni,因为这里不能使用用户定义的名字)。

    在这一例子中,可以分别定义两个属性而完全避免复合属性:

    <! ELEMENT    display(p+>

    <l ATTLIST    display bgcolor NAME "white”fgcolor NAME “black”>

    <!>

    <display  bgcolor= black  fgcolor= green>

B5.2.3  名字记号组

    可以将属性值限制为单值名字或名字记号的组(即所谓的名字记号组)的一个成员:

    <! ——       ELEMENTS    CONTENT    ——>

    <! ELEMENT    memo        (from,to ,subject,body ,sig ,cc?)>

    <! ——       ELEMENTS    NAME      VALUE            DEFAULT - ->

    <! ATTLIST    memo        status    ({inalldraft)    “final”>

    作了上述声明,则可以用

    <memo status= "draft">

    或

    <memo status="final">

    对“status”属性规定任何其他值都是错误的。

    在用于单个元素类型的属性定义表中,一个名字记号只能出现一次。它象名字一样转为大写形式。

B5.2.4  可变的缺省值

    如果缺省值定为“CURRENT”,则缺省值自动成为最近规定的值。这就允许以缺省方式“继承”以前同样类型元素的属性值(当增加或删除规定了CURRENT属性的标记时,应记住上述效果).

B6  实体

    前面一些例子中,曾出现过实体引用和参数实体引用。虽然实体表面上类似于程序设计语言中的变量,但它实际上是文件的一部分,它是一个常量。引用提供了许多有用的技术z

    a.  可以用一个较短的名字引用一个长串或正文串,或引用一个无法方便地从通用链盘上输入的串;

    b.  文件的某些部分可以分开存储在系统文卷中,并通过引用技术将它们嵌入原来的文件;

    c.  可以更容易地在不同系统之间交换文件,因为系统的特定对象(如不能直接键入的字符)都以实体引用形式出现,接收系统可以将引用解释为自己的特定对象;

    d.  动态处理指令(如检索当前数据的指令)的执行结果,可以作为文件的一部分嵌入。

B6.1  实体引用的语法

    有两种类型的命名实体引用,通用实体引用可以用在元素内容的任何地方和已定界的属性值的任何地方;参数实体引用可以用在由lit或lita定界符定界的置标声明参数内,它们还可用来引用带有间隔符的连续的完整参数或组记号.

    一个通用实体引用就是由。实体引用姐开”(ero)和“实体引用关闭”(refc)定界的一个名字(ero通常为一个和号&.refc通常为一个分号1):

    printed at &site*on

    如果实体引用之后是一个空格或记录结束,则refc可以省略:

    printed at &site on

    参数实体引用也是一样的,只不过它是以“参数实体引用打开”(pero)为开头(pero通常为百分号%).顺便说一下,在本文有关定界符串的论述中,“通常”意味着“在基准定界符集中”。

    区别了通用实体和参数实体,使得准备文件的人可以放心地构造实体名,不管建立该文件类型置标声明的人是否也使用了同样的名字。

    下表总结了实体引用中使用的定界符,及其在基准具体语法中所用的字符串;

    串       名字            含义

    &        ERO             实体引用打开

    %        PERO            参数实体引用打开

    :       REFC            引用关闭

B6.2  声明实体

    实体在引用之前必须声明。实体声明有两个主要参数:实体名和实体正文。声明:

    <! ENTITY uta "United Typothetae of America">

表示在文件中对名字“uta”的引用(即,“&uta;”)等价于输入正文“United Typothetae of America”。实体正文由定界符lit(或lita)定界(类似于属性值).称为“参数字面值”。

    实体并不是固定地以记录开始为开始,以记录结束为结束.如果要用记录边界包围实体,则应将其商接放置在实体引用的前后。源文

    <p>The 8-.uta;是一个印刷机构。</p>

将展开成:

    <p>The United Typothetae of America是一个印刷机构。</p>

源文

    <p>印刷机构:

    &uta;

    Society of Scientific,Technical,and Medical Publishers

    </p>

将展开成:

    <p>印刷机构:

    United Typothetae of America

    Society of Scientific,Technical,and Medical Publishers

    </p>

    然而,如果终Jb实体引用的是记录结束,而不是refc,则展开时后面的记录紧跟该实体。

    &uta

    ,Inc.

将展开成:

    United Typothetae of America,lnc.

B6.2.1  处理指令

    处理指令可作为实体存放,它在实体建立时被忽略,在对该实体的引用出现时被执行。

    <! ENTITY page Pl"newpage, space 3">

    其中关键字“PI”表示在引用时该实体解释成处理指令。

  B6.2.2  带有实体引用的实体

    声明参数实体时须把pero定为第一个参数,并放在实体名前面:

    <! ENTITY %bullet"o">

    可以在参数字面值中引用参数实体:

    <! ENTITY prefix”%bullet;”>

    在声明。pre fix”实体时,。%bullet,”引用被展开。这样就不必每次引用“prefix”实体时都展开“%bullet;”。

B6.2.3  外部实体

    在众多的文本处理系统中,存在着多种存储类,如文卷、库成员、宏定义、和正文串符号。可以将外部存储对象作为实体引用,从而将这些依赖于系统的外部存储对象排除在文件体之外。

    <!ENTITY part2 SYSTEM>

    如果只用实体名不足以使系统标识出存储对象,还可以规定附加的信息(称为“系统标识符”:

    <!ENTITY part2 SYSTEM "user. sectionX3. textfile">

    系统标识符采用与参数字面值同样的定界方式。系统标识符的性质和语法依赖于S(;ML系统中的实体管理程序,实体管理程序的工作就是将实体引用转换成实际的系统地址。

B6.2.4  公用实体

    超出单个文件或系统环境的上下文的外部实体称为“公用实体”。其“公用标识符”将由国际标准、国家标准或工业标准给出,或者简单地由希望共享它的用户团体给出。

    公用实体的一个应用是共享文件类型定义,另一个应用是实体声明的共享“实体集合”,后者支持特定学科领域的图形符号和术语,如数学或化学。

    除了用“公用标识符说明”替代关键字“SYSTEM”之外.对公用实体的声明方式与其他外部实体相似:

    <! ENTITY%GBgrkl

    PUBLIC"GB/T 14814//ENTfTYES Greek Letters//EN">

    整个声明由关键字“PUBLIC”、与字面值定界方式相同的公用标识符和一个可选的系统标识符(本例中省略了)组成。公用标识符中可以只有字母、数字、空格、记录结束和开始,以及少数几个特殊字符。

上述这些字符统称为“最小数据”字符。

B7  字符

    文件中每个字符都占有文件字符集中的一个位置。位置总数依赖于代码集大小,即依赖于用来表示每个字符的二进制数字(位bit)的个数。

    例如,称为GB 1988的字符是一个七位字符集。七个位最多可以有128个位组,即其值的范围是十进制0至127.在八位集中,则有256个可能的位组。位置编号(或字符编号)就是与表示该字符的位组相等的10进制整数。

    还可以用“代码扩充技术”,即一个位组可以表示一个以上的字符。SGML中这类技术的使用将在E3章中讨论。

Bl.1  字符分类

    人们已经定义了多种字符集,以适应各个国家的民族语言字母表、各种科学记法、各种键盘、显示设备和各种处理系统。在每种字符集中,都将位组的序列映射成不同的数字、字母和其他字符所组成的表。

任何大到足以表示置标字符(名字字符、定界符和功能字符)和最小数据字符的字符集都可以用于SGML文件。

    SGML字符分类如下;

    功能字符:记录结束和记录开始是功能字符,这些已经解释过了,同样,空格也是功能字符。基准具体语法增加了水平制表符(TAB),它用于分隔置标声明和标记中的记号(与空格、RS和RE字符一起)。功能字符也可以作为数据字符,还可以出现在便捷引用定界符中(后面解释)。

    名字字符:这是一些可以在名字中使用的字符。其中包括大写和小写字母A至z,以及数字0至9;基准具体语法中还增加了句点和连字符。每个名字字符(不包括数字和大写字母)都有对应的大写形式(在基准具体语法中实体名除外)。名字字符的一个子集——名字开始字符由小写和大写字母,及具体语法允许出现在名字开头的其他字符构成。

    定界符集:这是在变化的上下文中,使正文构成置标而不是数据的一些字符.

    非SGML字符:这是一些被文件字符集标识为不在SGML实体中出现的,一部分是从具体语法规定的字符中选出的字符。例如,基准具体语法将控制字符归为此类(除少数几个用作功能字符外)。非SGML字符出现在外部实体的非SGML数据(如图象)中,和在文卷系统、数据流等的外层,用以包含或传递文件。由于不存在非SGML字符与置标或数据字符相混淆的可能性,故系统还可以根据自身的需要使用非SGML字符,如在处理期间用其进行扩充字符或定界等。

    数据字符:所有其他字符,例如没有用作定界符的标点符号和数学符号都是数据字符(当置标字符出现在没有被识别为置标的上下文中时,也可以是数据。这样的数据称为“已分析的字符数据”).

B7.2  字符引用

    即使可能直接输入每个字符,也是很不方便的,如某个字符:

    a.  在输入设备上可能没有对应于它的键;

    b.  可能无法显示;

    c·  可能是不能直接作为置标或数据字符出现的非SGML字符;

    d.  可能是功能字符,但想要作为数据,而不作为SGML指定的功能字符.

    对于这些情形,可利用称为“字符引用”的技术来间接地输入这种字符(为了看得见,下面用本来就可以键入的字符,即连字符来举例)。在下例中,所给出的两个声明,在连字符的字符编号为45的任何字符集中都是等价的:

    <! ENTITY hyphen"一">

    <! ENTITY hyphcn"&#45;">

    在至今所列举的所有实体声明中,字面值中都只含有字符数据作为实体正文。在上例中,第二个声明中有字符引用。字符引用以“字符引用打开”定界符(&#)为开始.以refc定界符为结束,但是它所含有的是字符编号而不是名字。

    字面值中可以混合地出现字符数据和字符引用。下面的两个声明也是等价的;

    <! ENTITY finis"一|一">

    <! ENTITY finis"&#45;| &#45#;">

    象实体引用那样,字符引用还可以直接放入属性值和数据内容中。

    还可以通过命名的字符引用:&#RS,、&#RE,、&#SPACE*、和&#TAB等引用功能字符。当需要这些字符的功能时,可使用这种形式的引用;使用字符编号形式可避免该功能直接在此起作用,而只是将字符作为数据输入。

    下表总结了在字符引用中所用的定界符以及它们在基准具体语法中的字符串:

    串      名字      含义

    &#      CRO       字符引用打开

    :      REFC      引用关闭

B7.3  将定界符字符作为数据使用

    SGML并不排斥将特殊字符用作定界符,它在“抽象语法”中定义定界符,在具体语法中,把字符串指定给这些定界符。虽然有很多这样的定界符,但基本上不妨碍用户自由地输入数据字符,因为:

    ——大部分定界符只在置标声明或标记中出现,只有很少一部分在元素的内容中出现。

    ——同样的字符可用于多个定界符.

    ——在内容中的定界符的含义是依赖于上下文的1只有当跟着适当的上下文序列时它们才能被识别出来(或者能够起作用)。例如,只有当ero后面跟着名字开始字符,它才能被识别成ero。

    ——大部分定界符是多个字符的串,这就减少了它们作为数据出现的机会。

    ——如果在多字符的定界符或“上下文相关”的定界符中有实体开始或结束,则不识别它。

    由于最后一点,总可用引用来输入数据字符以避免歧义性。在基准定界符集中,多数情况只需要两个实体,三个以上用以处理特殊情形:

    <! ENTITY    amp   "&">

    <! ENTITY    It    "<">

    实体引用“&amp;”和“&lt;”可用于正文中需要和号或小于号之处。使用引用可终止上下文相关的定界符,如:

    <! ENTITY rsqb"]">

    用此右括号实体避免识别为特殊标出节结束(后面讨论)。

    <! ENTITY sol CDATA"/">

    当有SHORTTAG特征(后面解释),并特别针对一个元素起作用时,斜线是定界符。由于它是单个字符且不需要上下文序列,所以只用实体引用还不足以保证它被作数据对待。因此,式中还用了关键字“CDATA”,它表示实体的正文作为字符数据处理,即使它看起来象定界符。

    <! ENTITY qout’ "’>

    当lit和lita定界符在同一个字面值内都作为数据出现时,才需要“&quot;”(双引号)实体。这种情况是极少发生的,如果字面值中有lit字符,则用lita定界符对它定界;反之,则使用lit。 1742
国家标准下载

下载说明:
1.请先分享,再下载
2.直接单击下载地址,不要使用“目标另存为”
3.压缩文件请先解压
4.PDF文件,请用PDF专用软件打开查看
5.如果资料不能下载,请联系本站
最新评论
发表评论
大名:
联络: QQ 或者 邮箱
内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。

验证码: 1978