XML验证:是否需要前缀?
我正在尝试验证以下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 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>