我正在使用XSLT将XML文档转换为文本。 XML文档的文本节点具有<其中的人物,当然会轰炸变革。无论如何都要让XSLT转换与<文本节点中的字符?在这种情况下,所有这些字符后跟空格。
答案 0 :(得分:1)
使用实体而不是字符
<myTextTag> 1 < 2, and 4 > 2. This is how numbers work</myTextTag>
您的API中应该有一个选项可以在转换/输出上转换它们
答案 1 :(得分:0)
只要生成的XML文档替换&lt;与&amp; lt;和&gt;与&amp; gt;任何正确实现的XML解析API都将加载文档并将实体正确转换为&lt;和&gt;字符。
答案 2 :(得分:0)
如果它是正确格式化的XML,则&lt;字符应已使用&amp; lt 进行转义;实体。所有xml处理器都应该正确声明预定义的实体。查看recommendation:
所有XML处理器都必须识别 这些实体是否是 声明与否。为了互操作性, 应该声明有效的XML文档 这些实体和其他实体一样, 在使用它们之前。
这应该对XSLT都是透明的,很可能是这样的,无论是什么/谁生成XML都没有按照建议的标准来做。
答案 3 :(得分:0)
如果您正在输出文字,您可以使用IIRC <xsl:text disable-ouput-escaping="yes">...</xsl:text>
的某些变体 - 我没有任何“牵手”,但是......也许在中间尝试<
?
答案 4 :(得分:0)
这并不能帮助你。如果你无法修复源代码,我建议考虑预先处理传入的数据,以便用其他答案中描述的实体引用替换,或者将有问题的部分包含在CDATA标记中。您可以将领域知识与正则表达式或标记化一起使用来纠正可能包含错误数据的字段。
我认为你可以使XSLT与格式错误的XML一起工作。
答案 5 :(得分:0)
如果你的XML文件有文字&lt;运行文本中的字符,然后您没有XML文件。你有一些几乎是XML文件的东西。修复创建文件的过程,或者预处理它以修复它。