Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant xmlvalidate cvc elt.1.a:找不到元素';主题';_Ant_Xsd Validation - Fatal编程技术网

Ant xmlvalidate cvc elt.1.a:找不到元素';主题';

Ant xmlvalidate cvc elt.1.a:找不到元素';主题';,ant,xsd-validation,Ant,Xsd Validation,我制作了一个xsd,表示docbook主题的限制。下面是一个基本的xml示例。该限制应在docbook命名空间内有效 <?xml version="1.0" encoding="UTF-8"?> <topic xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xmlns:math="http://www.w3.org/2005/xpath-

我制作了一个xsd,表示docbook主题的限制。下面是一个基本的xml示例。该限制应在docbook命名空间内有效

<?xml version="1.0" encoding="UTF-8"?>
<topic 
    xmlns:xlink="http://www.w3.org/1999/xlink" 
    xmlns="http://docbook.org/ns/docbook"
    xmlns:math="http://www.w3.org/2005/xpath-functions/math" 
    xml:id="TT_LONDON002-003CONTEN" role="imprint">
    <title>title</title>
</topic>

标题
xsd限制的顶部如下所示。在氧气中,xml可以很好地验证

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           elementFormDefault="qualified" 
           targetNamespace="http://docbook.org/ns/docbook" 
           xmlns:docbook="http://docbook.org/ns/docbook" 
           xmlns:xlink="http://www.w3.org/1999/xlink">
  <xs:import namespace="http://www.w3.org/1999/xlink" 
             schemaLocation="xlink.xsd"/>
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" 
             schemaLocation="xml.xsd"/>
  <xs:element name="topic">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" 
                    maxOccurs="unbounded" 
                    ref="docbook:title"/>
        <xs:choice>
          <xs:element ref="docbook:mediaobject"/>
          <xs:element minOccurs="0" 
                      maxOccurs="unbounded" 
                      ref="docbook:para"/>
        </xs:choice>
      </xs:sequence>

然而,我正试图编写以下ant脚本来验证整个目录

我得到错误输出:cvc elt.1.a:找不到元素“topic”的声明。

我一直在网上搜索,但找不到解决方案

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="dist" name="ANTProject">
 <target name="dist">

  <property name="xmlDir" value="../xml/"/>


  <pathconvert dirsep="/" property="xsd.file">
   <path>
    <pathelement location="../xsd/topic.xsd"/>
   </path>
  </pathconvert>


  <xmlvalidate lenient="true" 
               failonerror="false" 
               warn="true" 
               classname="org.apache.xerces.parsers.SAXParser" 
               classpath="../../lib/xercesImpl.jar">
   <fileset dir="${xmlDir}" includes="**/*.xml"/>
   <attribute name="http://xml.org/sax/features/validation" 
              value="true"/>
   <attribute name="http://xml.org/sax/features/namespaces" 
              value="true"/>
   <attribute name="http://apache.org/xml/features/validation/schema" 
              value="true"/>  
   <property name="http://apache.org/xml/properties/schema/external-schemaLocation" 
             value="${xsd.file}"/>
  </xmlvalidate>

 </target>
</project>

有什么想法吗

谢谢


Conteh

您确定Xerces正在成功读取您的XSD模式文档吗?(尝试将语法错误放入其中,并查看错误消息是否发生了更改。)我注意到
xsd.file
属性是使用相对路径设置的;您是否有信心知道解析该相对路径的基本路径是什么?@C.M.Sperberg-McQueen您的权利,即使我硬编码目录路径,也无法让它找到xsd。但是,我注意到它将使用外部noNamespaceSchemaLocation属性查找模式。但是,随后我得到了消息“TargetNamespace.2:不需要名称空间,但模式文档的目标名称空间为“[”。我现在想知道外部schemaLocation是否需要是URI。