XML 架构:'ref' 或 'name' 必须出现在局部元素声明中
XML schema : 'ref' or 'name' must be present in a local element declaration
我正在制作一个 XML 模式,但我的所有元素都发生了以下错误:
One of 'ref' or 'name' must be present in a local element declaration.
我不明白,因为我的 XSD 文档中有 name
或 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>
您可以在这里找到我的 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>
有错误告诉您问题所在:
One of 'ref' or 'name' must be present in a local element declaration.
因此
<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
属性 value 上使用它,而不是 name:
<xsd:element ref="ns0:balisesXrm"/>
或
<xsd:element name="balisesXrm" type="ns0:balisesXrmType"/>
你的 XSD 还有太多其他问题无法在一个问题中解决,但这个答案至少可以让你解决当前的问题。
我正在制作一个 XML 模式,但我的所有元素都发生了以下错误:
One of 'ref' or 'name' must be present in a local element declaration.
我不明白,因为我的 XSD 文档中有 name
或 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>
您可以在这里找到我的 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>
有错误告诉您问题所在:
One of 'ref' or 'name' must be present in a local element declaration.
因此
<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
属性 value 上使用它,而不是 name:
<xsd:element ref="ns0:balisesXrm"/>
或
<xsd:element name="balisesXrm" type="ns0:balisesXrmType"/>
你的 XSD 还有太多其他问题无法在一个问题中解决,但这个答案至少可以让你解决当前的问题。