0

我制作了一个代表 docbook 主题限制的 xsd。这是一个基本的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:找不到元素“主题”的声明。

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

<?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>

有任何想法吗?

谢谢

孔泰

4

0 回答 0