示例 - XML-Letter 中使用的解析器规则
解析器规则可定义文件类型支持软件处理XML-letter文件类型的方式。
我们希望按如下方式处理 XML-letter 文件类型的元素:
| XML 元素 | 可翻译 | 注释 |
|---|---|---|
<letter> | 否 | 此为根元素且代表信件结构。 |
<title maxlength="50"> | 是 | 所插入的这些元素用于说明如何处理具有长度限制的文本部分。 |
<title maxlength="40"> | 是 | |
<salutation> | 是 | “Dear Daniel”应翻译。 |
<text> | 是 | 信件的正文应进行翻译。 |
<component translate="yes"> | 是 | 所插入的这些元素用于说明如何处理已标记为可翻译或不可译的文本部分。 |
<component translate="no"> | 否 | |
<emphasis> | 是 | emphasis 标记会更改文本的格式,但文本仍应进行翻译。 |
<signature> | 否 | 无需翻译人名或地址。 |
<address> | 否 | |
<weblink> | 否 | 无需更改 Web 地址。 |
<logo alt> | 是 | logo alt 文本应为本地语言。 |
<logo address> | 否 | 无需更改 Web 地址。 |
实现该结果的解析器规则如下所示:
| Element @attribute=... | XPath | 翻译设置 | 标记类型 |
|---|---|---|---|
| (any) @translatable="yes" | //*[@translatable = 'yes'] | 可翻译 | 内嵌 |
| (any) @translatable="no" | //*[@translatable = 'no'] | 非可译 | 内嵌 |
| salutation | //salutation | 可翻译 | 结构 |
| text | //text | 可翻译 | 结构 |
| emphasis | //emphasis | 未指定 | 内嵌 |
| signature | //signature | 非可译 | 结构 |
| address | //address | 非可译 | 结构 |
| weblink | //weblink | 非可译 | 结构 |
| logo @alt=... | //logo/@alt | 可翻译 | 内嵌 |
| logo @address=... | //logo/@address | 非可译 | 结构 |
| 规则表中这一最后一个规则覆盖所有其他元素 | //* | 非可译 |
所有这些元素的非打印字符处理为沿用父项。