SchemaValidate

描述

schemavalidate 任务使用 XML Schema 验证 XML 文件。该任务扩展了 XmlValidate 任务,并添加了 XSD 特定功能。

  1. 解析器在验证和命名空间感知的情况下创建。
  2. 验证已开启。
  3. Schema 验证已开启。
  4. 任何提供的无命名空间 Schema URL 或文件都用作无命名空间 Schema。
  5. 所有嵌套的 Schema 声明都将转换为 Schema 查找的命名空间-URL 绑定列表。

请注意,嵌套目录仍用于查找作为 Schema 文档来源提供的 URL,因此您仍然可以将查找委托给目录,您只需要列出所有 Schema URI 及其 URL 等效项。

此任务支持使用嵌套的

该任务仅支持 SAX2 或更高版本的解析器:指定 SAX1 解析器将导致错误。

参数

属性 描述 必需
classname 要使用的解析器。
classpathref 在何处查找解析器类。可以选择使用嵌入的 <classpath> 元素。
disableDTD 禁用 DTD 支持的标志。DTD 支持是验证 XSD 文件本身(以及其他文件)所必需的。 否;默认值 false
failonerror 如果设置为 true,则在发生错误时失败。 否;默认为 true
file 要检查的文件(可以选择使用嵌入的文件集)。
fullchecking 启用完整的 Schema 检查。速度慢但严格。 否;默认值 true
lenient 如果为 true,则仅检查 XML 文档是否格式良好。
noNamespaceFile 无命名空间 XSD 文件的文件名,用于为无命名空间 XML 内容提供 Schema。
noNamespaceURL 无命名空间 XSD 文件的 URL,用于为无命名空间 XML 内容提供 Schema。
warn 记录解析器警告事件。

作为嵌套元素指定的参数

schema

标识在验证文档时可能使用的 Schema 的名称和位置。

属性 描述 必需
namespace Schema 命名空间的 URI
url Schema 的 URL 两者之一
file Schema 的文件

dtd

<dtd> 用于指定 DTD 解析的不同位置。

属性 描述 必需
publicId 要解析的 DTD 的公共 ID
location 要使用的 DTD 的位置,可以是文件、资源或 URL

xmlcatalog

<xmlcatalog> 元素用于执行实体解析。

attribute

<attribute> 元素用于设置解析器功能。
此处定义了可与 Xerces 解析器一起使用的功能:设置功能
此处定义了 SAX 功能:http://xml.org/sax/features/

属性 描述 必需
name 功能的名称
value 功能的布尔值

property

<property> 元素用于设置属性。这些属性在 Xerces XML 解析器实现中定义:XML 解析器属性。属性可用于设置用于验证 XML 文件的 Schema。

属性 描述 必需
name 功能的名称
value 属性的字符串值

示例

根据 XML Schema 验证文档。该文档本身没有声明任何 Schema,这就是为什么需要 noNamespaceFile 的原因。

<schemavalidate noNamespaceFile="document.xsd"
                file="xml/endpiece.xml"/>

声明一个新的预设任务 <validate-soap>,它根据相关规范验证 XSD 和 WSDL 文档。要验证 XSD 文档,您还需要 XMLSchema.dtddatatypes.dtdXMLSchema.xsd 位于同一目录中,或者通过目录指向它们。所有这些文件都可以从 W3C 获取。

<presetdef name="validate-soap">
  <schemavalidate>
    <schema namespace="http://schemas.xmlsoap.org/ws/2003/03/addressing"
            file="${soap.dir}/ws-addressing.xsd"/>
    <schema namespace="http://www.w3.org/2003/05/soap-envelope"
            file="${soap.dir}/soap12.xsd"/>
    <schema namespace="http://schemas.xmlsoap.org/wsdl/"
            file="${soap.dir}/wsdl.xsd"/>
    <schema namespace="http://www.w3.org/2001/XMLSchema"
            file="${soap.dir}/XMLSchema.xsd"/>
    </schemavalidate>
</presetdef>

使用上面定义的预设任务验证 XML Schema 文档。

<validate-soap file="xml/test.xsd"/>