【问题标题】:cvc-elt.1.a: Cannot find the declaration of element 'xxx'cvc-elt.1.a:找不到元素“xxx”的声明
【发布时间】:2013-05-08 09:03:48
【问题描述】:

我必须为我的 xsd 手写一个示例 xml,但我总是收到无效消息:cvc-elt.1.a: 找不到元素“RS_WMS_GET_PO_DATA_v2.0”的声明。 p>

我的 XSD:

<?xml version="1.0" encoding="utf-16"?>
<schema xmlns:ns0="http://www.rossinc.com/" xmlns:msbtsdml="http://schemas.rossinc.com/BizTalk" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.rossinc.com/" xmlns="http://www.w3.org/2001/XMLSchema">
  <annotation>
    <appinfo>
      <msbtsdml:StoredProcedureName xmlns:msbtsdml="http://schemas.rossinc.com/BizTalk/DMLAdapter">RS_WMS_GET_PO_DATA</msbtsdml:StoredProcedureName>
      <msbtsdml:ResponseRootName xmlns:msbtsdml="http://schemas.rossinc.com/BizTalk/DMLAdapter">poData</msbtsdml:ResponseRootName>
    </appinfo>
  </annotation>
  <element name="RS_WMS_GET_PO_DATA_v2.0">
    <complexType>
      <sequence>
        <element minOccurs="1" maxOccurs="1" name="Parameters">
          <complexType>
            <sequence>
              <element default="0" name="ERROR_OCCURRED" type="string">
                <annotation>
                  <appinfo>
                    <msbtsdml:ParamDir xmlns:msbtsdml="http://schemas.microsoft.com/BizTalk/2003">In</msbtsdml:ParamDir>
                  </appinfo>
                </annotation>
              </element>
              <element default="1" name="XML_TAGS" type="int">
                <annotation>
                  <appinfo>
                    <msbtsdml:ParamDir xmlns:msbtsdml="http://schemas.microsoft.com/BizTalk/2003">In</msbtsdml:ParamDir>
                  </appinfo>
                </annotation>
              </element>
              <element default="0" name="NUM_ROWS" type="int">
                <annotation>
                  <appinfo>
                    <msbtsdml:ParamDir xmlns:msbtsdml="http://schemas.microsoft.com/BizTalk/2003">In</msbtsdml:ParamDir>
                  </appinfo>
                </annotation>
              </element>
            </sequence>
          </complexType>
        </element>
        <element name="RS_WMS_GET_PO_DATA">
          <complexType>
            <all minOccurs="1" maxOccurs="1">
              <element name="COMPANY_CODE" type="string" />
              <element name="DIVISION" type="string" />
              <element name="PO_NUMBER" type="string" />
              <element name="PO_WH_SEQUENCE" type="string" />
              <element name="ERP_ACTION_CODE" type="string" />
            </all>
          </complexType>
        </element>
        <element name="DMLAdapterConfig">
          <complexType>
            <sequence>
              <element name="EnvironmentId" type="string" />
            </sequence>
          </complexType>
        </element>
      </sequence>
    </complexType>
  </element>
</schema>

我的 XML:

<?xml version="1.0" encoding="UTF-8"?>
<RS_WMS_GET_PO_DATA_v2.0>
    <Parameters>
        <ERROR_OCCURRED>0</ERROR_OCCURRED>
        <XML_TAGS>1</XML_TAGS>
        <NUM_ROWS>0</NUM_ROWS>
    </Parameters>
    <RS_WMS_GET_PO_DATA>
        <COMPANY_CODE></COMPANY_CODE>
        <DIVISION></DIVISION>
        <PO_NUMBER></PO_NUMBER>
        <PO_WH_SEQUENCE></PO_WH_SEQUENCE>
        <ERP_ACTION_CODE></ERP_ACTION_CODE>
    </RS_WMS_GET_PO_DATA>
    <DMLAdapterConfig>
        <EnvironmentId></EnvironmentId>
    </DMLAdapterConfig>
</RS_WMS_GET_PO_DATA_v2.0>

有什么想法吗?

这是我正在使用的网站: http://www.corefiling.com/opensource/schemaValidate.html

【问题讨论】:

标签: xml xsd


【解决方案1】:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:RS_WMS_GET_PO_DATA_v2.0 xmlns:ns0="http://www.rossinc.com/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.rossinc.com/ One.xsd ">
<ns0:Parameters>
<ns0:ERROR_OCCURRED>0</ns0:ERROR_OCCURRED>
<ns0:XML_TAGS>1</ns0:XML_TAGS>
<ns0:NUM_ROWS>0</ns0:NUM_ROWS>
</ns0:Parameters>
<ns0:RS_WMS_GET_PO_DATA>
<ns0:COMPANY_CODE>ns0:COMPANY_CODE</ns0:COMPANY_CODE>
<ns0:DIVISION>ns0:DIVISION</ns0:DIVISION>
<ns0:PO_NUMBER>ns0:PO_NUMBER</ns0:PO_NUMBER>
<ns0:PO_WH_SEQUENCE>ns0:PO_WH_SEQUENCE</ns0:PO_WH_SEQUENCE>
<ns0:ERP_ACTION_CODE>ns0:ERP_ACTION_CODE</ns0:ERP_ACTION_CODE>
</ns0:RS_WMS_GET_PO_DATA>
<ns0:DMLAdapterConfig>
<ns0:EnvironmentId>ns0:EnvironmentId</ns0:EnvironmentId>
</ns0:DMLAdapterConfig>
</ns0:RS_WMS_GET_PO_DATA_v2.0>

因为您没有提到该 XML 文件使用哪个架构文件。我想这会解决你的问题。

【讨论】:

  • 再次尝试,但失败。错误:prolog 中不允许有内容。
  • 您如何验证它。我创建了您在问题中给出的 XSD,并使用 Eclipse 基于该 XSD 创建了一个 XML。
  • 使用this 链接通过xsd 在线验证xml。选中 Validate against external XML schema 复选框,然后将 xml 文件复制到文本框中。单击“验证”按钮后,它将要求您复制 xml 文件中引用的 XSD。
  • 是的,它通过了,但是,有多奇怪?我的架构验证站点的方法与您的不同? @乔希
【解决方案2】:

我有一个错误

cvc-elt.1.a: 找不到元素的声明问题!

我是这样解决的:

  1. 查找您的 XSD 文件,如果它具有 xmlns 属性,例如:

    xmlns="http://yourcompany/blablabla/rootElementName"
    
  2. 查看您的 XML 文件,如果 XSD 定义了一个,它必须有一个 xmlns 属性。

    <rootElement xmlns="http://company/xxxxxx/rootElementName">
    
  3. XML 区分大小写。检查您的 XML 标记并将它们与 XSD 标记进行比较。

问候!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 2020-05-08
    相关资源
    最近更新 更多