处理指令概述
处理指令 (PI) 与带有属性的元素之间的区别是,处理指令不被视为文档内容的一部分。它们可以位于文档中几乎任何位置,包括文档(外层级别)元素之前及之后。内容模型声明为 CDATA 或者 RCDATA 的元素内部,或者在 CDATA 或 RCDATA 的标记部分内,则不允许使用它们。
PI 通常具有特定于产品的性质。Arbortext Editor 有其自己识别的处理指令,而其他产品则有它们自己识别的指令。虽然 Arbortext Editor 并不处理特定于其他产品的 PI,但是会保留它们。
Arbortext Editor 用类似于标记的结构表示文档中某些类型的 PI。对于这些 PI,oid_name 函数会返回名称,Arbortext Editor 通过该名称识别 PI。通常,接受标记名称或者 OID 名的 ACL 命令和函数会使用这些名称。可以使用 > 在文档中定位这些处理指令。
其他 PI(比如那些记录光标位置的处理指令或者元素折叠了其详细信息的处理指令)则不使用标记表示并且不能用 > 定位。这些 PI 会标记在相关主题中。
以下是一些有关在 Arbortext Editor 中对处理指令进行处理的信息。
• PI 标记总是以下划线 (_) 开始,这通常会防止与元素重名。
• 可以用与属性相关的 ACL 函数和命令设置某些 PI 的属性。
• 某些 PI 成对出现,因此必须同时具有开始和结束标记。Arbortext Editor 要求指令对正确嵌套(就如同具有内容的元素一样)。其他 PI 是单个的(类似于空元素)。
• 可以通过突出显示包含 PI 的区域并且选取 > 或者 > 来查看 PI 源文件。也可以选择该区域,然后在 Arbortext Editor 命令行中键入 eval $selection。
在 SGML 中,PI 的语法是 <? ... >。在 XML 中,语法是 <?...?>。
• 可以用 write -nopi 命令删除文档中的几乎所有 PI。该选项并不删除一般 PI 或者方程 PI。
向文档写入处理指令时
向文档写入哪些处理指令由 set writepi 高级首选项的设置决定。
无论 writepi 设置为何,都将写入以下 Arbortext Editor 处理指令 (即使 writepi = off):
• <?Pub Tag atict:xxx?> - SGML 文档的 PTC Arbortext 更改跟踪标记
• <?Pub Doctype?> – 将 SGML 文档保存为 XML 时的文档类型提示
• <?Pub Eqn?> – 指示方程的开头 (版本 6.0 中不再需要此选项,为向后兼容而保留)
• <?Pub PI UdtName contents?> – 用户定义的非 Arbortext Editor 处理指令的标记
当 writepi = structural 时将写入下列附加处理指令:
• <?Pub Schema?> – 为不以根标记开始的文档片段的关联方案提供提示
• <?Pub UDT?> – 用户定义的标记声明
• <?Pub Sty?>
• <?Pub EntList?> – 声明的字符实体
• <?Pub CX?> – 上下文字符串
• <?APT?> - 用于断开一长串实体引用的断行处理指令
• <?Pub (UdtName)?> – 用户定义的处理指令
• <?PubTbl?> - 表格属性
• <?PubTbl table xxx?> - 表格边界格式
• <?PubTbl row xxx?> - 表格行格式
• <?PubTbl cell xxx?> - 表格单元格格式
• <?Pub Tag atipl:xxx?> - SGML 的 PTC Arbortext 页面布局标记
• <?Pub Tag atidm:xxx?> - SGML 的 PTC Arbortext 数据合并标记
• <?Pub _xxx?> - 各种 PTC Arbortext 标记,如 _font、_cellfont、_bookmark、_kern 以及 _newline 等
• <?Pub Lcl?> – 指示伪属性
• <?Pub Asis?> – 指示 asis 部分
• <?Pub ListProp?>、<?Pub StrProp?> 和 <?Pub NumProp?> – 文档属性
当 writepi = touchup 时将写入下列附加处理指令:
• <?Pub _font?> - 表示 PTC Arbortext 字体修饰
• <?Pub _newcolumn?> - 表示 PTC Arbortext 新列修饰
• <?Pub _newline?> - 表示 PTC Arbortext 新行修饰
• <?Pub _newpage?> - 表示 PTC Arbortext 新页面修饰
• <?Pub _nolinebreak?> - 表示 PTC Arbortext 无断行修饰
当 writepi = default 时将写入下列附加处理指令:
• <?Pub Caret?> – 指示光标在两个会话之间的位置
• <?Pub Dtl?> – 指示在两个会话之间是否有某个元素被折叠
• <?Pub Inc?> – 指示在最后的完整性检查时是否有某个文档不完整
当 writepi = on 时将写入下列附加处理指令:
• <?Pub _display?>