cvc-elt.1: 找不到元素 'change-set' 的声明

cvc-elt.1: Cannot find the declaration of element 'change-set'

几年前,我正在尝试使用一些用于 RFID 服务的开源软件 (GitHub: fosstrak capturing application),但出现了我无法修复的错误。

(null: 3, 230): cvc-elt.1: Cannot find the declaration of element 'change-set'.

我正在使用 Docker 将应用程序 运行 Tomcat7 与 Java8 容器化。

XML 看起来像这样:

<?xml version="1.0" encoding="utf-8" ?>
<change-set xmlns="http://drools.org/drools-5.0/change-set" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="http://drools.org/drools-5.0/change-set.xsd http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd">
  <add>
    <resource source="classpath:drools/SimpleEPCISDocument.drl" type="DRL" />
  </add>
</change-set>

和 XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            elementFormDefault="qualified" 
            targetNamespace="http://drools.org/drools-5.0/change-set" 
            xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns:change-set="http://drools.org/drools-5.0/change-set">
  <xsd:import namespace="http://www.w3.org/2001/XMLSchema-instance"/>
  <xsd:element name="change-set">
    <xsd:complexType>
      <xsd:choice>
        <xsd:element ref="change-set:add"/>
        <xsd:element ref="change-set:remove"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="add">
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:element minOccurs="0" maxOccurs="unbounded" ref="change-set:resource"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="remove">
    <xsd:complexType mixed="true">
      <xsd:sequence>
        <xsd:element minOccurs="0" maxOccurs="unbounded" ref="change-set:resource"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="resource">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:any minOccurs="0"/>
        <xsd:element minOccurs="0" ref="change-set:decisiontable-conf"/>
      </xsd:sequence>
      <!-- URL to the resource, can be file based -->
      <xsd:attribute name="source" use="required" type="xsd:anyURI"/>
      <!-- for example, DRL, or PKG -->
      <xsd:attribute name="type" use="required" type="xsd:string"/>
      <xsd:attribute name="basicAuthentication" type="xsd:string"/>
      <xsd:attribute name="username" type="xsd:string"/>
      <xsd:attribute name="password" type="xsd:string"/>
    </xsd:complexType>

  </xsd:element>
  <xsd:element name="decisiontable-conf">
    <xsd:complexType>
      <xsd:attribute name="input-type" use="required" type="xsd:NCName"/>
      <xsd:attribute name="worksheet-name" use="required" type="xsd:NCName"/>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

改变

xs:schemaLocation="http://drools.org/drools-5.0/change-set.xsd [...]

xs:schemaLocation="http://drools.org/drools-5.0/change-set [...]

因为 schemaLocation 必须是一系列命名空间 URI 和 XSD 位置对。在这种情况下,名称空间 URI 是 http://drools.org/drools-5.0/change-set,它与 XML 中根元素的名称空间和 XSD.

中的目标名称空间相匹配

另见

  • How to reference a local XML Schema file correctly?

您还必须处理后续的唯一粒子属性问题,但如果您无法解决,那是一个单独的问题,值得单独提问。从 .

开始