XML 架构:本地元素声明中必须存在'ref'或'name'



我正在制作一个XML模式,但我的所有元素都发生了以下错误:

">

ref"或"name"之一必须存在于本地元素声明中。

我不明白,因为我的 XSD 文档中存在nameref,如下所示:

<?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>

你可以在这里找到我的balisesXrm.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"/>

@ns0:ref中删除ns0

<xsd:element ref="balisesXrmType"/>

现在您将拥有一个@ref属性,因为错误表明您丢失了。 您尚未提供完整的 MCVE,但这看起来可能已关闭。 通常,引用的元素不会有Type后缀,所以也许你的意思是,

<xsd:element ref="balisesXrm"/>

请注意,若要引用另一个命名空间中的balisesXrm,请在根级别声明该命名空间的命名空间前缀,xmlns:ns0="http://NamespaceTest.com/balisesXrm"、本地或更好,因为你可能在其他地方需要它,然后在@ref属性(而不是名称(上使用它:

<xsd:element ref="ns0:balisesXrm"/>

<xsd:element name="balisesXrm" type="ns0:balisesXrmType"/>

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

最新更新