有效的XML,有效的架构。我哪里出错了?

时间:2009-10-11 16:59:08

标签: xml validation schema combinations

从前我有一个有效的doctype和有效的XML。我把前者置于后者之上,cntrl-s'd并且看到:一切都应该如此。现在我有一个有效的架构(为我仍然有效的XML定制)。我尝试了同样的尝试和真实的方法 - 但唉,没有成功。

我使用的每个不同的验证器都会出现不同的错误,但是我提交的浏览器出现了新的错误(但这很有意义)。所以我不确定应该给哪一个最有帮助。 Validome说:

  

无法找到元素'xs:schema'的声明。

  

根元素后面的文档中的标记必须格式正确。

(但它是!)

如果拥有XML和架构是有用的,请毫不犹豫地询问,我只是认为既然它们都是W3有效且冗长,我会尝试将它们排除在外首先。我所做的就是将架构置于XML之上并通过验证器/浏览器发送。

谢谢!

3 个答案:

答案 0 :(得分:3)

@Nona架构是一个格式正确的文档,您的实例也是如此。但是,如果你将它们连接起来,结果将不再是格式良好的。

如果您拥有的是:

<xs:schema ...>...</xs:schema>
<myxml ...>...</myxml>

这个格式不正确(没有单个根元素)

DTD方法不同的原因是内部子集被特别允许被添加到根元素之前。所以:

<DOCTYPE myxml [
... my DTD ...
]>
<myxml ...>...</myxml>

状态良好。

不幸的是,将模式与实例相关联并非完全无关紧要。您可能需要查看xsi:schema-location

<强>更新 不幸的是,答案取决于您使用的软件框架。 AFAIK无法打包文档和架构,以便任何软件都可以接受并尝试验证。这就是为什么模式比DTD更省力。

这是一个简单的网站,您可以在其中提交两个文档并进行测试。

除此之外的任何事情都可能需要了解该软件。根据您使用的是ORACLE,Microsoft等,将有不同的方法。这可以通过调用加载文档,加载模式然后验证或设置属性的方法来完成(可以在Xerces中完成)。 p>

答案可能取决于你为什么这样做。如果您要向架构的所有者提交文档,那么他们将会有一个验证系统。如果你必须对其他人的架构进行valiadte,那么你需要获得schemavalidation软件并运行它。你是MS还是Unix / Java?

MORE UPDATE 建议What's the best way to validate an XML file against an XSD file? 正如他们所说,没有超简单的方法。

答案 1 :(得分:0)

在黑暗中只是一个刺,但你是否在根元素上声明了XML Schema名称空间前缀?它是xmlns:xs =“http://www.w3.org/2001/XMLSchema”。如果名称空间前缀未绑定到名称空间名称,则该文档无效。

答案 2 :(得分:0)

冒着说明问题的风险,您可能想要考虑验证器无法找到元素xs:schema声明的原因。

第二个错误表明在某处丢失了一个尖括号,或者有些元素没有正确嵌套。