2

曾几何时,我有一个有效的文档类型和有效的 XML。我把前者放在后者之上,cntrl-s'd 并且看:一切都应该是。现在我有一个有效的模式(为我仍然有效的 XML 定制)。我尝试了同样的尝试和真实的方法 - 但可惜,没有成功。

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

找不到元素“xs:schema”的声明。

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

(但它是!)

如果拥有 XML 和模式有用,请不要犹豫,我只是想,因为它们都是 W3 有效且冗长的,所以我会先尝试将它们排除在外。我所做的只是将模式放在 XML 之上并通过验证器/浏览器发送它。

谢谢!

4

3 回答 3

3

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

如果您拥有的是:

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

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

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

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

形成良好。

不幸的是,将模式与实例相关联并不是一件容易的事。你可能要看看xsi:schema-location

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

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

除此之外的任何事情都可能需要软件知识。根据您使用的是 ORACLE、Microsoft 等,会有不同的方法。这可以通过调用方法来加载文档、加载架构然后验证,或者设置属性(可以在 Xerces 中完成)。

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

更多更新 建议根据 XSD 文件验证 XML 文件的最佳方法是什么? 正如他们所说,没有超简单的方法。

于 2009-10-11T17:01:59.417 回答
0

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

于 2009-10-11T17:01:58.307 回答
0

冒着陈述显而易见的风险,您可能需要考虑验证器无法找到元素 xs:schema 声明的原因。

第二个错误表明某处缺少尖括号,或者某些元素未正确嵌套。

于 2009-10-11T17:03:10.130 回答