从前我有一个有效的doctype和有效的XML。我把前者置于后者之上,cntrl-s'd并且看到:一切都应该如此。现在我有一个有效的架构(为我仍然有效的XML定制)。我尝试了同样的尝试和真实的方法 - 但唉,没有成功。
我使用的每个不同的验证器都会出现不同的错误,但是我提交的浏览器出现了新的错误(但这很有意义)。所以我不确定应该给哪一个最有帮助。 Validome说:
无法找到元素'xs:schema'的声明。
和
根元素后面的文档中的标记必须格式正确。
(但它是!)
如果拥有XML和架构是有用的,请毫不犹豫地询问,我只是认为既然它们都是W3有效且冗长,我会尝试将它们排除在外首先。我所做的就是将架构置于XML之上并通过验证器/浏览器发送。
谢谢!
答案 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声明的原因。
第二个错误表明在某处丢失了一个尖括号,或者有些元素没有正确嵌套。