2

我在处理 xml 中的 \line-feed 和 \carriage-return 字符时遇到了问题。我知道,根据http://www.w3.org/TR/REC-xml/#sec-line-ends,需要 xml 处理器来替换任何 "\n\r" 或单独的 "\r" 序列“\n”。
规范声明这必须是处理任何“外部解析实体”的行为,这是否也适用于元素内部的 CDATA 部分?
谢谢你,

米歇尔

我确信例如 msxml 库将每个 \n\r" 或单独的 "\r" 序列转换为 "\n",无论它们是否在 cdata 部分中。

4

2 回答 2

3

我将引用您链接到的部分中的一句话(强调我的):

为了简化应用程序的任务,XML 处理器必须表现得好像它在解析之前通过翻译两个字符序列 #xD #xA 和任何 # xD 后面没有 #xA 到单个 #xA 字符。

因为 XML 处理器在解析之前执行此操作,所以它还不知道文档的哪些部分是 CDATA 部分。因此,无论字符是否在 CDATA 部分中,它都会进行替换。


为了可靠地保留这些字符,必须将它们作为
实体写入 XML 文档。

于 2010-05-12T09:52:36.260 回答
1

是 - CDATA 部分中的“\n\r”或“\r”必须替换为“\n”以使处理器符合要求。XML 文档中的任何 CDATA 部分都将成为文档实体的一部分,该实体已被“解析”。您可以在此处找到未解析实体的示例。

于 2010-05-12T09:40:08.750 回答