【问题标题】:How to declare element如何声明元素
【发布时间】:2018-12-17 02:53:18
【问题描述】:

我正在寻找验证带有 xrm 前缀的 XML 文档,您可以在此处阅读:

我编写了以下 XML 模式:

     </xsd:extension>

  </xsd:complexContent>

</xsd:complexType>


</xsd:schema>

但是,当我检查我的 XML 文档时,我收到以下错误:

“xrm:plugin”不是“NCName”的有效值

我知道我不能将 xrm: 放在我的名字中,但我如何验证我的 xrm:pluginxrm:header ? 因为,如果我尝试验证我的 XML 文档,我会收到以下错误:

找不到元素“xrm:plugin”的声明。

【问题讨论】:

    标签: xml xsd xml-namespaces xsd-validation xml-validation


    【解决方案1】:

    xrm 是命名空间前缀,是命名空间的缩写。正如语法错误所示,命名空间前缀不是通过xsd:element/@name 声明的。相反,只声明本地名称 (plugin) 并在 XSD 级别处理命名空间前缀声明...

    这是您的 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 result.xsd"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:xrm="http://www.moss.fr/2011/connecteur_xrm">
      <xrm:header>
        <xrm:tracabilite>
          <xrm:reference_moss>MPD_4.1.1.0</xrm:reference_moss>
          <xrm:document_lie> </xrm:document_lie>
          <xrm:document_interface>SC-DIF-OT3402-0002-MOSS 1.8 - DIF COSCA Inc.2.doc</xrm:document_interface>
          <xrm:intervention>
            <xrm:auteur>Générateur de mapping v1.0</xrm:auteur>
            <xrm:date>14/01/2013</xrm:date>
            <xrm:commentaire>Génération du fichier de mapping</xrm:commentaire>
          </xrm:intervention>
        </xrm:tracabilite>
      </xrm:header>
    </xrm:plugin>
    

    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:SCCOAMCD="urn:SCCOA-schemaInfo"
                xmlns:SBEGestionZonesAeriennesSYSCA="urn:SBEGestionZonesAeriennesSYSCA-schema"
                SCCOAMCD:desc="  implémentation du MCD pivot du SCCOA 3.2.1ec  production par SCCOA mcd2mpd 4.1.1, le 11/12/2007  règles spécifiques production schémas 1.2  diagramme : A-SC.SBE GestionZonesAeriennes SYSCA  entité racine      : A-SC.ZoneAerienne "
                attributeFormDefault="unqualified"
                elementFormDefault="qualified"
                targetNamespace="http://www.moss.fr/2011/connecteur_xrm"
                version="3.2.1ec">
      <xsd:complexType name="header">
        <xsd:sequence>
          <xsd:any minOccurs="1" processContents="lax"/>
        </xsd:sequence>
      </xsd:complexType>
      <xsd:element name="plugin">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="header" type="xrm:header"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>
    

    【讨论】:

    • 感谢您的回答。我不确定会得到它。我导入我的架构 &lt;xsd:import namespace="http://www.moss.fr/2011/connecteur_xrm"/&gt; 并添加 xmlns:xrm="http://www.moss.fr/2011/connecteur_xrm" 没有成功。我很难理解,因为我只想检查我的 XML 文档的前缀,而不是真正创建另一个带有 xrm 前缀的 XSD。
    • 我已经用一组简化的 XML 和 XSD 更新了答案,其中 XML 针对 XSD 成功验证。
    • 很抱歉,我总是遇到同样的错误:cannot find the declaration of element 'xrm:plugin'。不知道是不是EditiX的问题……
    • 您可以尝试为xsi:schemaLocation="http://www.moss.fr/2011/connecteur_xrm result.xsd" 中的 XSD 指定绝对 URI 而不是相对 URI。请参阅How to referene a local XML Schema file correctly? 以上 XML/XSD 使用基于 Xerces 的验证解析器成功验证,XSD 和 XML 文档位于同一目录中。
    • 感谢您的帮助。我明天试试。
    猜你喜欢
    • 1970-01-01
    • 2014-07-22
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    相关资源
    最近更新 更多