Xml 验证xhtml11-model-1.xsd时出现验证错误

Xml 验证xhtml11-model-1.xsd时出现验证错误,xml,eclipse,validation,xsd,Xml,Eclipse,Validation,Xsd,在生成XML文件时,我使用OMG定义的xsd文件。通过internet进行验证花费的时间太长。所以,我下载了所有这些文件进行本地验证。这适用于简单的情况。但在未来,更复杂的结构必须得到验证。这包括验证xhtml结构。从下载的大多数xsd文件都有验证错误。在试图解决这些问题时,我将重点放在要启动的文件xhtml11-model-1.xsd上,因为该文件包含许多其他xsd文件使用的基本定义。初始下载文件显示71个验证错误!下载的文件没有声明目标名称空间,因此我添加了声明。这样做将错误数量减少到4。但

在生成XML文件时,我使用OMG定义的xsd文件。通过internet进行验证花费的时间太长。所以,我下载了所有这些文件进行本地验证。这适用于简单的情况。但在未来,更复杂的结构必须得到验证。这包括验证xhtml结构。从下载的大多数xsd文件都有验证错误。在试图解决这些问题时,我将重点放在要启动的文件xhtml11-model-1.xsd上,因为该文件包含许多其他xsd文件使用的基本定义。初始下载文件显示71个验证错误!下载的文件没有声明目标名称空间,因此我添加了声明。这样做将错误数量减少到4。但在这一点上,我陷入了困境。我根本没有找到任何方法来纠正剩余的错误。我挑选了其中一个作为独立案例进行分析。请参阅下面的代码。attributeGroup name=“xhtml.dir.attrib”的声明可以在文件xhtml-bdo-1.xsd中找到。但是这个文件都没有通过验证,因此我将声明复制到测试文件中,以便将所有内容放在一个地方。但是在用eclipse Kepler验证这个简单的例子时,我在xhtml.dir.attrib的引用中得到了以下错误:

<xs:attributeGroup ref="xhtml.dir.attrib" />
s4s-elt-must-match.1: The content of 'xhtml.I18n.extra.attrib' must match (annotation?, ((attribute | attributeGroup)*, anyAttribute?)). A problem was found starting at: attributeGroup.

s4s elt必须匹配。1:“xhtml.I18n.extra.attrib”的内容必须匹配(注释?,((属性|属性组)*,anyAttribute?)。在以下位置发现问题:attributeGroup。
怎么了?当声明显示正确时,为什么引用声明错误。这是eclipse验证器的问题吗?我的误会?我是否应该忽略这些验证错误?为什么从w3.org下载的xsd文件没有targetNamespace声明,因为验证和使用这些文件似乎需要它? 谢谢你的提示

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3.org/1999/xhtml/datatypes/" 
xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/" 
elementFormDefault="qualified" >

<xs:attributeGroup name="xhtml.dir.attrib">
    <xs:annotation>
        <xs:documentation>
            "dir" Attribute from Bi Directional Text (bdo) Module
        </xs:documentation>
    </xs:annotation>
    <xs:attribute name="dir">
        <xs:simpleType>
            <xs:restriction base="xs:NMTOKEN">
                <xs:enumeration value="ltr" />
                <xs:enumeration value="rtl" />
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
</xs:attributeGroup>

<xs:attributeGroup name="xhtml.I18n.extra.attrib">
    <xs:annotation>
        <xs:documentation>Extended I18n attribute</xs:documentation>
    </xs:annotation>
    <xs:attributeGroup ref="xhtml.dir.attrib" />
    <xs:attribute name="lang" type="xh11d:LanguageCode" />
</xs:attributeGroup>
</xs:schema>

来自双向文本(bdo)模块的“dir”属性
扩展I18n属性

对于您提供的特定代码段,如果您只需确保存在与targetNamespace匹配的默认名称空间(我刚才在这里解释了这一点),并且您的XSD处理器可以使用别名为“xh11d”的名称空间,验证错误就会消失(不知何故,可以通过目录,也可以通过直接的
xs:import

我想说的是,你不应该忽视验证错误,至少在你做出明智的决定之前是这样


我将下载xsd并亲自查看;如果有什么值得一看的地方,我会在这里告诉您。

在我添加默认名称空间的代码片段中,错误已经消失。到目前为止,提示是正确的。修改是:但这对原始xsd没有帮助,问题是,我为什么要从w3修改xsd站点?我想这些文件是公开的,已经过彻底的测试,为什么它们在w3站点上工作,而不是在本地工作?此外,我观察到循环依赖,这真的没有帮助!你如何处理这种情况?我个人认为这些文件没有经过彻底的测试。至少基于我可用的工具,它们是.NET和基于Java,一些xsd是无效的。(我仍在研究它…例如,我得到的cvc枚举对于aria-attributes-1.xsd文件中的
aria relevant
属性中的默认值无效…)循环依赖项在打包方面是不好的…但这不应该是一个问题…如果您删除所有架构位置并手动将所有文件放在架构集合中…循环依赖项消失,而内容仍然正确…感谢您确认我的发现。我已经开始将所有这些文件放在本地这是一项既费力又枯燥的工作。我讨厌inutil工作,所以对我来说,听取第三方的意见是很重要的,不要弄错。