| 建立有效的XML文件 |
|
| 来源:网络收集 作者: 加入时间:2006-10-27 访问次数:6 [大 中 小] |
|
你可以接着使用Format 元素来指出特定EXAMPLE_DOCUMENT 元素的格式,如下所示;
Welcome!
] ]>
若是将Format 属性的值设定成「HTML」、「SGML」,或「RTF」以外的值,将会造成有效性错误。(注意这里CDATA 区段的使用,让你可以在元素的字符数据中随意地使用(<)字符。)
预设宣告
预设宣告是第三个也是最后一个属性定义的必要组件。它指定了属性是否是必要的,以及如果属性不是必要的,会指出当属性被省略了处理器应该做什么。例如,宣告可能会提供一个预设属性值,当属性被省略时,处理器应该使用该值。

预设的宣告拥有四个可能的格式: #REQUIRED 利用这种格式,你必须为相关型态的每一个元素设定属性值。例如,下面的宣告指明你应该为文件中每一个FILM 元素的起始卷标内的Class 属性指定属性值:
#IMPLIED 这种格式指出你可以包含属性或从关联型态的元素中省略该属性,而且如果你省略了该属性,没有默认值可以提供给处理器。(这种「暗示(implies)」而不是「指定(states)」的值会导致应用程序使用其专有的默认值-因此是name。)例如,下面的宣告指出为FILM 元素中的Class 属性指定属性值是随意的,而且文件并不会提供预设的Class 属性值:
AttValue 其中AttValue 是预设的属性值。利用这种格式,你可以包含属性或从关联型态的属性中删除该属性。而且如果你省略了该属性,处理器将会使用默认值,如同你已经为属性包含该属性并输入属性值。 当然,你所指定的默认值必须符合指定的属性型态。例如,下列的宣告指定一个默认值为「fictional」到Class 属性中:
利用这个宣告,下面两个元素是相同的: The Graduate The Graduate #FIXED AttValue 其中AttValue 是预设的属性值。利用这种格式,你可以将属性包含于相关型式的元素或从元素中将属性省略。如果你将属性删去,处理器将使用指定的默认值;如果你包含某个属性,你必须为它指定默认值。(因为你只能指定默认值,所以不会有强制性因素要求将属性的设定含括于元素中,除了要将文件变得更清楚好方便阅读。)例如,下面的宣告指定一个固定的默认值到Class 属性:
利用这个宣告,下面两个相等的元素都是有效的: The Making of XML The Making of XML 而下面的元素则不是有效的:
The Making of XML
使用外部的DTD 子集
到目前为止,你在本章中所见到的文件型态定义都是完全包含在文件的文件型态宣告中。这种型式的DTD 被称为内部的DTD 子集(internal DTD subset)。 另一种替代的方法是,你可以将DTD 的全部或部分放在个别的档案,并从文件型态的宣告中参考该档案。包含在个别档案中的DTD-或DTD 的部分-被称为外部DTD 子集(external DTDsubset)。 注意 使用外部DTD 子集主要是对整个文件群组所使用的共同DTD 有利。每一份文件可以参考单一DTD 檔(或该档案的复制)当作外部的DTD 子集。这将省去必须将DTD 元素复制到文件才能使用的功夫,并且让DTD 更容易被维护。(你只需修改该DTD 档-或该档的任何复制-而不是必须编辑所有使用该DTD 文件的档案。)如第一章提到的,许多标准的XML 应用程序,都是以一个包含在所有符合该应用程序的XML 文件中的共同DTD 为基础。请参考第一章中的 <标准的XML 应用程序> 与 <XML 在实际例子中的使用概况> 。
仅仅使用外部DTD 子集
要只使用外部的DTD 子集,可将包含在中括号([ ])字符中的卷标宣告区块删除,而以关键词SYSTEM 后面接着一个包含该DTD 的个别档案位置的引号内叙述来取代。例如,你在本章稍早所见到的SIMPLE 文件,它拥有一个内部的DTD 子集:
|
|
|
|
|
|