代码之家  ›  专栏  ›  技术社区  ›  chernevik

在XML输入到XSLT转换的文本节点中包含“<”字符

  •  3
  • chernevik  · 技术社区  · 15 年前

    我正在使用XSLT将XML文档转换为文本。XML文档的文本节点中有<个字符,这当然会破坏转换。是否仍要使用XSLT转换来处理文本节点中的<字符?在这种情况下,所有这些字符后面都是空白。

    6 回复  |  直到 15 年前
        1
  •  1
  •   Aiden Bell    15 年前

    使用实体而不是字符

    <myTextTag> 1 &lt; 2, and 4 &gt; 2. This is how numbers work</myTextTag>
    

    在您的API中应该有一个在转换/输出时转换它们的选项。

        2
  •  0
  •   Jherico    15 年前

    只要生成的XML文档将<替换为<和>替换为&gt;任何正确实现的XML分析API都将加载文档并将实体正确转换为<和>字符。

        3
  •  0
  •   Scott Saad    15 年前

    如果是 适当地 格式化的XML,字符应该已经用 &书信电报 实体。存在所有XML处理器都应正确声明的预定义实体。退房 recommendation :

    所有XML处理器必须识别 这些实体是否 是否申报。对于互操作性, 有效的XML文档应声明 这些实体,像其他任何实体一样, 在使用它们之前。

    这对于XSLT来说应该是透明的,而且很可能是这样的,无论是谁生成XML,都没有按照推荐的标准来做。

        4
  •  0
  •   Marc Gravell    15 年前

    如果要输出文本,可以使用IIRC <xsl:text disable-ouput-escaping="yes">...</xsl:text> -不过,我没有什么“手边”的东西……也许试试 &lt; 在中间?

        5
  •  0
  •   brabster    15 年前

    啊,真倒霉。如果格式正确,除非标记标签,否则字符<和>可能不会出现。

    这对你没有帮助。如果您无法修复源代码,我建议您考虑对传入数据进行预处理,以替换为其他答案中描述的实体引用,或者将有问题的部分括在CDATA标记中。您可以将领域知识与正则表达式结合使用,或者使用标记化技术来更正可能包含坏数据的字段。

    我不 认为 您可以使XSLT使用格式不正确的XML。

        6
  •  0
  •   Ned Batchelder    15 年前

    如果XML文件在运行文本中包含文字<字符,那么您没有XML文件。您有一些几乎是XML文件的东西。要么修复创建文件的进程,要么预处理以修复文件。