XML验证:是否需要前缀?

XML验证:是否需要前缀?,xml,xsd,Xml,Xsd,我正在尝试验证以下XML文档的有效性: <?xml version="1.0" encoding="UTF-8"?> <xrm:plugin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.moss.fr/2011/connecteur_xrm testplugin.xsd" xmlns:tech="http://www.moss.fr/2011/m

我正在尝试验证以下XML文档的有效性:

<?xml version="1.0" encoding="UTF-8"?>
<xrm:plugin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.moss.fr/2011/connecteur_xrm testplugin.xsd" xmlns:tech="http://www.moss.fr/2011/moteur-xrm" xmlns:SCCOAMCD="urn:SCCOA-schemaInfo" xmlns:attribut="http://www.moss.fr/2012/attribut" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:mcd="urn:SCCOA-schemaInfo" xmlns:xrm="http://www.moss.fr/2011/connecteur_xrm" xmlns:variable="http://www.moss.fr/2012/variable" xmlns:doc="http://www.moss.fr/2011/documentation" xmlns:mtf2xsd="http://www.moss.fr/2010/mtf2xsd" xmlns:conv="http://www.moss.fr2010/conversion" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:SBEGestionZonesAeriennesSYSCA="urn:SBEGestionZonesAeriennesSYSCA-schema" xmlns:info="http://www.moss.fr/2011/information" xmlns="urn:SBEGestionZonesAeriennesSYSCA-schema">
<xrm:mapping occurs="xrm:mapping">
  <SBEGestionZonesAeriennesSYSCA xmlns=""
                                 info:obligatoire="true"
                                 occurs="/grappe"
                                 info:contexte="/grappe">
  </SBEGestionZonesAeriennesSYSCA>
 </xrm:mapping>
</xrm:plugin>
我正在使用这个主模式testplugin.xsd:

使用import metier1.xsd:

尝试验证XML时出现以下错误:

发现以元素“sbegestionZoneSeriennessysca”开头的无效内容。应为{urn:sbegestionzoneseriennessysca架构:sbegestionzoneseriennessysca}之一

我尝试在XML文档中通过xmlns:s=urn:sbegestionzoneseriennessysca模式更改xmlns=urn:sbegestionzoneseriennessysca模式,并将前缀s:添加到sbegestionzoneseriennessysca中,效果良好。 但我不明白为什么在这种情况下我必须加前缀。实际上,如果可能的话,我不想修改XML文档,而是想修改XSD。 非常感谢。

您应该删除XML中SBegestionZoneSeriennessysca标记上的xmlns=属性,它将标记设置在空命名空间中

如果没有它,您的xrm:plugin标记上指定的xmlns,即预期的urn:sbegestionzoneseriensysca模式,将正确地考虑到sbegestionzoneseriensysca标记

修改XSD而不是XML似乎不是一个好主意,但如果确实需要,则需要让XSD在空命名空间中定义sbegestionZoneSeriennessysca元素,可以通过删除metier1.xsd根目录上的targetNamespace=urn:sbegestionZoneSeriennessysca schema属性并更新testplugin.xsd中对元素的引用来实现

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xrm="http://www.moss.fr/2011/connecteur_xrm" xmlns:nr0="http://NamespaceTest.com/balisesXrm" xmlns:SCCOAMCD="urn:SCCOA-schemaInfo" xmlns:metier="urn:SBEGestionZonesAeriennesSYSCA-schema"  targetNamespace="http://www.moss.fr/2011/connecteur_xrm" elementFormDefault="qualified" attributeFormDefault="unqualified" >
 <xsd:import namespace="http://NamespaceTest.com/balisesXrm"  schemaLocation="balisesXrm.xsd" />
 <xsd:import namespace="urn:SBEGestionZonesAeriennesSYSCA-schema" schemaLocation="metier1.xsd"/>

<xsd:complexType name="mapping">
      <xsd:sequence>
         <xsd:element ref="metier:SBEGestionZonesAeriennesSYSCA"/>
      </xsd:sequence>
</xsd:complexType>

 <xsd:element name="plugin">
  <xsd:complexType>
     <xsd:sequence>
        <xsd:element name="mapping" type="xrm:mapping"/>
     </xsd:sequence>
  </xsd:complexType>
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:nr0="http://NamespaceTest.com/balisesXrm" xmlns:xalan="http://xml.apache.org/xslt" xmlns:SCCOAMCD="urn:SCCOA-schemaInfo" xmlns="urn:SBEGestionZonesAeriennesSYSCA-schema" xmlns:SBEGestionZonesAeriennesSYSCA="urn:SBEGestionZonesAeriennesSYSCA-schema"  attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:SBEGestionZonesAeriennesSYSCA-schema" version="3.2.1ec">

  <xsd:element name="SBEGestionZonesAeriennesSYSCA" type="SBEGestionZonesAeriennesSYSCA:type_SBEGestionZonesAeriennesSYSCA"/>


 <xsd:complexType name="type_SBEGestionZonesAeriennesSYSCA">

   <xsd:sequence>

     <xsd:element maxOccurs="unbounded" name="Entities" type="SBEGestionZonesAeriennesSYSCA:type_Data_SBEGestionZonesAeriennesSYSCA"/>

   </xsd:sequence>

  <xsd:attributeGroup ref="attributsXrm"/>
 </xsd:complexType>

<xsd:attributeGroup name="attributsXrm">
  <xsd:attribute name="group-by"/>
  <xsd:attribute name="id"/>
  <xsd:attribute name="occurs"/>
</xsd:attributeGroup>

</xsd:schema>