我制作了一个代表 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>
有任何想法吗?
谢谢
孔泰