如何使用Ant使用xmlvalidate任务验证这些xml和xsd文件。我已经尝试但没有得到解决方案。我可以得到一个解决方案
<property name="doc.xsd" location="${basedir}/test.xsd" />
<target name="FindDesc" >
<xmlvalidate file="ab.xml" lenient="yes" failonerror="yes" warn="yes">
<fileset dir="${basedir}" includes="ab.xsl" />
<attribute name="http://xml.org/sax/features/validation" value="true"/>
<attribute name="http://apache.org/xml/features/validation/schema" value="true"/>
<attribute name="http://xml.org/sax/features/namespaces" value="true"/>
<property name="http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation" value="${doc.xsd}" />
</xmlvalidate>
</target>
ab.xml文件
<?xml version="1.0"?>
<books xmlns="http://www.example.org/Test" xmlns:xsi="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="test.xsd">
<book id="bk001">
<author>Writer</author>
<title>The First Book</title>
<genre>Fiction</genre>
<price>44.95</price>
<pub_date>2000-10-01</pub_date>
<review>An amazing story of nothing.</review>
</book>
<book id="bk002">
<author>Poet</author>
<title>The Poet's First Poem</title>
<genre>Poem</genre>
<price>24.95</price>
<review>Least poetic poems.</review>
</book>
</books>
test.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" targetNamespace="http://www.example.org/Test"
>
<xsd:element name="books" >
<xsd:complexType >
<xsd:sequence>
<xsd:element name="book" maxOccurs="unbounded" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="author" type="xsd:string"/>
<xsd:element name="title" type="xsd:string"/>
<xsd:element name="genre" type="xsd:string"/>
<xsd:element name="price" type="xsd:float" />
<xsd:element name="pub_date" type="xsd:date" />
<xsd:element name="review" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
我试图使用带有Ant脚本的xsd架构测试xml我得到它不能正常工作我得到这样的错误
cvc-elt.1: Cannot find the declaration of element 'books'.
和这些
TargetNamespace.2: Expecting no namespace, but the schema document has a target namespace of 'http://www.example.org/Test'.
没有命名空间的xml,但我想尝试通过ant脚本验证命名空间。 如果有任何错误我该怎么办请给出建议用ant脚本测试这些xml和xsd文件我已经通过xml验证和模式验证
答案 0 :(得分:0)
我们可以使用SchemaValidation以简单快捷的方式使用xsd文件验证xml
如果有一个文件我们可以通过这个
<schemavalidate>
<schema namespace="<schema_nameSpace>">
file="abc.xml"/>
</schemavalidate>
如果有多个文件,我们可以使用fileset
<schemavalidate warn="true" failonerror="true" fullchecking="true">
<fileset dir="<Src_dir_for_Xml>">
<include name="*.xml" />
</fileset>
<schema namespace="<Your schema name space>" file="<schema_src_dir_For_schema" />
</schemavalidate>