XML模式中根元素的定义不正确

时间:2010-01-14 12:34:14

标签: xml xsd msxml msxml6

有一个模式包含以下枯燥的根元素:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

就我而言,架构是有效的,例如,Excel读它没问题。

然而,当我尝试使用MSXML(v3或v4或v6)来验证这个模式时,我得到了主题错误。 (我创建了XMLSchemaCache,当我向其添加加载的模式时会发生错误。)

来自Google我了解到MS XML引擎存在概念问题,不符合W3标准,必须使用不同的命名空间定义。但是,我找不到更正确的定义,也找不到任何正确的解释。我只能在论坛上找到很多没有回复的帖子。

任何人都可以如此友善地解释这个问题吗?

修改

出于某种原因,尽管我通过版本3,4和6循环了项目引用,但仍然一直使用版本3。强制切换到4/6解决了它。所以v3无法解析模式,其他人也没问题。我相信现在可以关闭了。

4 个答案:

答案 0 :(得分:5)

好的,问题是我在没有意识到的情况下使用MSXML版本3。版本4和6工作正常。

可以找到示例代码here。那些人here并没有太大的帮助。

答案 1 :(得分:1)

补充GSerg的自动答案(这很有帮助)我正在添加一些源信息。首先,我们在wiki中得到明确的解释:

  

不同版本的MSXML支持稍微不同的功能集。例如,虽然MSXML 3.0仅支持XDR架构,但它不支持XSD架构。 MSXML 4.0,MSXML 5.0和MSXML 6.0支持XSD架构。但是,MSXML 6.0不支持XDR架构

然后我们有What's New in MSXML msdn页面,确认仅在4.0中引入xsd。

最后,作为一般性建议,我们在msdn:Why Version-Independent GUIDs and ProgIDs Were Removed上有这样的文章。所以我认为我们应该坚持6.0。

答案 2 :(得分:0)

有趣的是,MSXML版本6仍然会在XDR架构上引发此错误,因为我已经删除了对它的支持,因为我学习了here,更多信息here

答案 3 :(得分:0)

我知道这是一个老问题......但我刚刚尝试解决这个问题,xmlns(名称空间)属性值不正确也会导致错误。

例如,schema元素的开始标记应如下所示:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

但是,如果您的值中有拼写错误,例如你错过了冒号:

<xsd:schema xmlns:xsd="http//www.w3.org/2001/XMLSchema">

您将收到“架构中根元素的错误定义”错误。