Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML模式:';参考';或';名称';必须存在于本地元素声明中_Xml_Xsd_Xsd Validation_Xml Validation - Fatal编程技术网

XML模式:';参考';或';名称';必须存在于本地元素声明中

XML模式:';参考';或';名称';必须存在于本地元素声明中,xml,xsd,xsd-validation,xml-validation,Xml,Xsd,Xsd Validation,Xml Validation,我正在创建一个XML架构,但我的所有元素都会发生以下错误: 本地元素声明中必须存在“ref”或“name”之一 我不明白,因为我的XSD文档中有一个名称或ref,您可以在这里看到: <?xml version="1.0" encoding="utf-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SCCOAMCD="urn:SCCOA-schemaInfo"> <xsd:impo

我正在创建一个XML架构,但我的所有元素都会发生以下错误:

本地元素声明中必须存在“ref”或“name”之一

我不明白,因为我的XSD文档中有一个
名称
ref
,您可以在这里看到:

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SCCOAMCD="urn:SCCOA-schemaInfo">
<xsd:import namespace="http://NamespaceTest.com/balisesXrm" schemaLocation="balisesXrm.xsd"/>
<xsd:import namespace="http://www.moss.fr/2011/connecteur_xrm"/>

<xsd:complexType xmlns="urn:SBEGestionZonesAeriennesSYSCA-schema" xmlns:SBEGestionZonesAeriennesSYSCA="urn:SBEGestionZonesAeriennesSYSCA-schema" name="typeAssociation">
    <xsd:sequence>
        <xsd:element xmlns:ns0="http://NamespaceTest.com/balisesXrm" ns0:ref="balisesXrmType"/>
  </xsd:sequence>
</xsd:complexType>

<xsd:element name="plugin">
  <xsd:complexType>
     <xsd:sequence>
        <xsd:element xmlns:ns0="http://www.moss.fr/2011/connecteur_xrm" ns0:name="xrm:header" type="header"/>
     </xsd:sequence>
  </xsd:complexType>
</xsd:element>

您可以在这里找到我的balisexrm.xsd文档:

<?xml version="1.0" encoding="UTF-8"?>


<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
       targetNamespace="http://NamespaceTest.com/balisesXrm"
       xmlns:b="http://NamespaceTest.com/balisesXrm">


<xsd:complexType name="balisesXrm">
    <xsd:choice>
        <xsd:sequence>
            <xsd:element name="attribut" />
            <xsd:element name="variable" />
            <xsd:element name="param" />
            <xsd:element name="java" />
            <xsd:element name="historisation-date" />
        </xsd:sequence>
    </xsd:choice>
</xsd:complexType>


错误告诉您问题的确切原因:

本地元素声明中必须存在“ref”或“name”之一

所以

  <xsd:element xmlns:ns0="http://NamespaceTest.com/balisesXrm" 
               ns0:ref="balisesXrmType"/>
现在您将拥有一个
@ref
属性,因为错误表明您丢失了该属性。您尚未提供完整的MCVE,但这看起来可能已关闭。通常,引用的元素不会有
类型
后缀,因此您的意思可能是

  <xsd:element ref="balisesXrm"/>



您的XSD还有太多其他问题无法在一个问题中解决,但这个答案至少可以让您克服当前的问题。

谢谢您的回答。实际上,我在本地使用了一个名称空间,因为当我导入我的balisesXrm.xsd(正如我编辑的那样)时,出现了一个新的错误:没有声明前缀“b”(我在元素中删除了名称空间创建,并将我的所有balisesXrm重命名为b:balisesXrm)。我没有指定的是我使用XSLT文档来生成此架构。很抱歉,我最初为您声明了一个新的名称空间前缀,
b
,然后才意识到您已经为此使用了
ns0
。我已将答案更新为使用您的原始
ns0
。当然,请注意,名称空间前缀仅通过其与完整名称空间URI的关联来获得其重要性,但我们必须正确绑定
b
ns0
。现在是。谢谢。XML名称空间前缀定义的范围仅扩展到声明元素所包含的元素;它不扩展到导入xsd。您的balisesXrm.xsd没有
xs:element
声明
balisesXrm
;它只有一个类型声明。重新阅读我写的关于元素与类型的文章。在您最近添加的导入XSD中,考虑用“<代码>类型< /代码>后缀命名您的类型,然后使用‘’来引用它。好的,我明白了。非常感谢你的帮助。
  <xsd:element ref="balisesXrm"/>
  <xsd:element ref="ns0:balisesXrm"/>
  <xsd:element name="balisesXrm" type="ns0:balisesXrmType"/>