有没有一种简单的方法可以使用XSLT来检测和纠正格式不正确的XML?

时间:2011-04-20 21:07:58

标签: xml xslt

例如:

<doc xmlns="http://www.foo.org">
  <div id>
    <title>Mr. Title</title>
    <paragraph>This is one paragraph.</paragraph>
  </div>
</doc>

请注意,div标签具有未分配值的属性id。我想用XSLT来解决它,但是当我将XSL应用于这个XML时,它会在处理之前出错“XML Parsing Error:not wellform”。有人知道解决这个问题吗?

谢谢!

4 个答案:

答案 0 :(得分:3)

你想要的是不可能的。即使XSL应用程序的结果不必很好地形成,它的输入也必须是。

答案 1 :(得分:2)

答案说,开始XSLT转换的先决条件是拥有格式良好(并且已解析)的XML文档,这是正确的。

<强>然而

  1. 在XSLT 2.0中,不需要源XML文档。

  2. 如果document()函数无法解析URI(由参数构造)标识的文件,那么XSLT 1.0和XSLT 2.0都会向实现提供帮助。如果您的XSLT处理器没有引发错误并且仅返回空节点集,这可以用作确定特定URI标识的文件是否格式良好的XML文档的技术

答案 2 :(得分:1)

没有。在将XSLT应用于XML之前,必须先解析XML。

答案 3 :(得分:1)

在XSLT 2.0中,您可以使用doc-available()函数,如果不存在具有给定URI的资源,或者资源存在但不是XML,则返回false。如果您知道需要哪种修复工作,则可以使用unparsed-text()函数读取资源并将结果作为文本进行操作来尝试。但是,一般情况下,如果有人向您发送了错误的XML,那么推荐的方法是说服他们停止这样做。