代码之家  ›  专栏  ›  技术社区  ›  mic.sca

XML规范是否规定解析器需要始终将\n \r转换为\n,即使\n \r出现在CDATA节中?

  •  1
  • mic.sca  · 技术社区  · 16 年前

    我在处理XML中的\换行符和\回车符时遇到了一个问题。 据我所知 http://www.w3.org/TR/REC-xml/#sec-line-ends ,XML处理器需要用\n替换任何\n\r“或单独的\r”序列。
    规范指出,这必须是处理任何“外部解析实体”的行为,这是否也适用于元素内部的CDATA节?
    谢谢您,

    米歇尔

    例如,我确信MSXML库将每个\n \r“或单独的\r“序列转换为\n”,而不管它们是否在CDATA节中。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Wim Coenen    16 年前

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

    为了简化应用程序的任务, XML处理器的行为必须与 标准化外部所有换行符 分析的实体(包括 文件实体)输入时, 之前 句法分析 ,通过翻译 双字符序列xd xa和任意xd 后面不是xa到单个xa字符。

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

    为了可靠地保留这些字符,必须将它们作为 
 和 
 实体。

        2
  •  1
  •   Andrew Walker    16 年前

    是-“n\r”或“r”在CDATA部分必须替换为“n”,处理器才能符合要求。XML文档中的任何CDATA部分都是文档实体的一部分,文档实体是“已分析”的。您可以找到一个未分析实体的示例 here .

    推荐文章