Skip to Content
XML10. 处理指令(Processing instructions)

10. 处理指令(Processing instructions)

  1. 禁止(MUST NOT)创建新的处理指令,除非是为了指定纯粹的本地处理约定,并且应该(SHOULD)完全避免使用。  可以(MAY)使用现有的标准化处理指令。  [理由: 处理指令与 XML 数据模型的契合度很差,总是可以被元素替代;它们的存在主要是为了避免破坏向后兼容性。]

 

 

11. XML 文档实例的表示

注意:  这些要点仅为指南,因为程序创建的实例的格式通常不在程序员的控制之内(例如,当使用 XML 序列化库时)。  在任何情况下,XML 解析器都不应依赖这些指南被遵循。  使用标准的 XML 解析器,不要使用手工拼凑的 hack。\

\

  1. 使用的字符编码应该(SHOULD)是 UTF-8。  例外情况需要极其充分的理由。  [理由: UTF-8 是通用的且被广泛使用。]
    \
  2. 命名空间应该(SHOULD)尽可能在文档的根元素中声明。  [*理由:*清晰性和一致性。]
    \
  3. 命名空间 URI 到前缀的映射应该(SHOULD)在整个文档中保持不变,并且也应该(SHOULD)在设计文档中使用。  [*理由:*清晰性和一致性。]
    \
  4. 知名前缀如 html:(用于 XHTML)、dc:(用于 Dublin Core 元数据)和 xs:(用于 XML Schema)应用于标准命名空间。  [理由: 人类可读性。]
    \
  5. 不应该(SHOULD NOT)在标签中使用多余的空白。  在起始标签中每个属性前使用一个空格;如果起始标签太长,空格可以(MAY)替换为换行符。  [理由: 一致性和简洁性。]
    \
  6. 空元素可以(MAY)表示为空标签或紧跟结束标签的起始标签。任何应用程序不应区分这两种格式。  [理由: XML 解析器不区分它们。]
    \
  7. 文档可以(MAY)使用 2 个空格缩进对子元素进行美化打印(pretty-print)。  包含字符内容的元素不应该(SHOULD NOT)被换行。  长的起始标签可以(MAY)在除最后一个属性值之外的任何属性值后使用换行符断开(可能带有额外缩进)。  [理由: 与我们的风格保持一般性兼容。  换行字符内容会影响其值。]
    \
  8. 属性值可以(MAY)使用引号或撇号包围。规范禁止(MUST NOT)要求或禁止使用其中任一形式。  ' 和 " 可以自由使用来转义每种类型的引号。  [理由: 没有 XML 解析器报告二者之间的区别。]
    \
  9. 禁止(MUST NOT)使用注释来承载真实数据。  在手写 XML 中,注释可以(MAY)用于包含 TODO。  在公开传输的文档中不应该(SHOULD NOT)使用注释。[*理由:*注释经常被解析器丢弃。]
    \
  10. 如果仍然使用注释,它们应该(SHOULD)只出现在文档序言或包含子元素的元素中。  如果需要美化打印,像元素一样美化打印注释,但要换行。  注释不应该(SHOULD NOT)出现在包含字符内容的元素中。  [*理由:*注释内外的空白可以提高可读性,但将注释嵌入字符内容中可能会导致关于哪些空白属于内容、哪些不属于内容的混淆。]
    \
  11. 注释应该(SHOULD)在 <!— 之后和 —> 之前有空白。  [理由: 可读性。]
    \
  12. 可以(MAY)使用 CDATA 节;它们等价于使用 &amp; 和 &lt;。  规范禁止(MUST NOT)要求或禁止使用 CDATA 节。  [理由: 很少有 XML 解析器报告二者之间的区别,而且 CDATA 和文本的组合通常被报告为单个对象。]
    \
  13. 除了 XML 标准实体引用 &amp;、&lt;、&gt;、&quot; 和 &apos; 之外,禁止(MUST NOT)使用其他实体引用。  可以(MAY)使用字符引用,但优先使用实际字符,除非字符编码不是 UTF-8。  如往常一样,文本格式不受此规则约束。\

\

 


\

Last updated on