Ant xmlvalidate cvc elt.1.a:找不到元素';主题';
我制作了一个xsd,表示docbook主题的限制。下面是一个基本的xml示例。该限制应在docbook命名空间内有效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-
<?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。