XMLValidate

説明

このタスクは、XMLファイルが有効であるか(または整形式であるのみか)をチェックします。このタスクは、デフォルトではJAXPによって提供されるSAX2パーサー実装(おそらくApache Ant自体で使用されているもの)を使用しますが、必要に応じて任意のSAX1/2パーサーを指定できます。

このタスクは、ネストされた要素の使用をサポートしています。

警告: デフォルトでは、JAXPは名前空間を認識しないパーサーを作成します。Antで使用されるJAXP実装では、http://xml.org/sax/features/namespaces 機能はデフォルトでfalseに設定されています。名前空間を含むドキュメントを検証するには、次の要素をネストして、名前空間機能を明示的にtrueに設定してください。

<attribute name="http://xml.org/sax/features/namespaces" value="true"/>

たとえば、XMLファイルでxsi:noNamespaceSchemaLocation属性を使用している場合は、この名前空間サポート機能が必要になります。

xmlvalidateclassname属性を使用して、JAXPで生成されていないパーサーを使用している場合、この警告は適用されない場合があります。

パラメータ

属性 説明 必須
file チェックしたいファイル。 はい、埋め込みの<fileset>が指定されていない限り
lenient trueの場合、XMLドキュメントが整形式であるかどうかのみを確認します(指定されたパーサーがSAX1パーサーの場合は無視されます)。 いいえ
classname 使用するパーサー。 いいえ
classpathref パーサークラスを見つける場所。 いいえ、埋め込みの<classpath>要素を使用できます
failonerror trueに設定されている場合、エラーが発生すると失敗します。 いいえ。デフォルトはtrue
warn パーサーの警告イベントをログに記録します。 いいえ

ネストされた要素として指定されたパラメータ

dtd

<dtd>は、DTD解決のための異なる場所を指定するために使用されます。

属性 説明 必須
publicId 解決するDTDのパブリックID はい
location 使用するDTDの場所。ファイル、リソース、またはURLを指定できます はい

xmlcatalog

<xmlcatalog>要素は、エンティティ解決を実行するために使用されます。

attribute

<attribute>要素は、パーサーの機能を設定するために使用されます。

Xercesパーサーで使用可能な機能は、こちらで定義されています: 機能の設定

SAX機能は、こちらで定義されています: SAX2標準機能フラグ

属性 説明 必須
name 機能の名前 はい
value 機能のブール値 はい

property

<property>要素は、プロパティを設定するために使用されます。これらのプロパティは、Xerces XMLパーサー実装ではこちらで定義されています: XMLパーサープロパティ。プロパティは、XMLファイルの検証に使用されるスキーマを設定するために使用できます。

属性 説明 必須
name 機能の名前 はい
value プロパティの文字列値 はい

toto.xmlを検証する

<xmlvalidate file="toto.xml"/>

src/style内のすべての.xslファイルを検証しますが、エラーが発生した場合はビルドを停止するのではなく、警告のみを発行します。

<xmlvalidate failonerror="no" lenient="yes" warn="yes"
             classname="org.apache.xerces.parsers.SAXParser">
             classpath="lib/xerces.jar">
  <fileset dir="src" includes="style/*.xsl"/>
</xmlvalidate>

DTDのローカルコピーを使用して、struts構成を検証します。

<xmlvalidate file="struts-config.xml" warn="false">
  <dtd publicId="-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
       location="struts-config_1_0.dtd"/>
</xmlvalidate>

事前定義されたカタログを使用して、URIをローカルファイルにマップし、プロジェクト内のすべてのXMLファイルをスキャンします。

<xmlvalidate failonerror="no">
  <fileset dir="${project.dir}" includes="**/*.xml"/>
  <xmlcatalog refid="mycatalog"/>
</xmlvalidate>

インラインで定義されたカタログを使用して、プロジェクト内のすべてのXMLファイルをスキャンします。

<xmlvalidate failonerror="no">
  <fileset dir="${project.dir}" includes="**/*.xml"/>
  <xmlcatalog>
    <dtd publicId="-//ArielPartners//DTD XML Article V1.0//EN"
         location="com/arielpartners/knowledgebase/dtd/article.dtd"/>
  </xmlcatalog>
</xmlvalidate>

XSD検証を実行するように構成されたパーサーを使用して、xmlディレクトリ内のすべての.xmlファイルを検証します。注: パーサーは機能https://apache.dokyumento.jp/xml/features/validation/schemaをサポートする必要があります。schemavalidateタスクは、このタスクを適切なオプションが自動的に有効になるように拡張し、ソースとして機能するスキーマファイル/URLのリストを簡単に追加できるため、W3C XMLスキーマを検証するのに適しています。

<xmlvalidate failonerror="yes" lenient="no" warn="yes">
  <fileset dir="xml" includes="**/*.xml"/>
  <attribute name="http://xml.org/sax/features/validation" value="true"/>
  <attribute name="https://apache.dokyumento.jp/xml/features/validation/schema"  value="true"/>
  <attribute name="http://xml.org/sax/features/namespaces" value="true"/>
</xmlvalidate>

スキーマxml/doc.xsdに対してファイルxml/endpiece-noSchema.xmlを検証します。

<!-- Convert path to URL format -->
<pathconvert dirsep="/" property="xsd.file">
<path>
   <pathelement location="xml/doc.xsd"/>
</path>
</pathconvert>

<xmlvalidate file="xml/endpiece-noSchema.xml" lenient="false" failonerror="true" warn="true">
  <attribute name="https://apache.dokyumento.jp/xml/features/validation/schema" value="true"/>
  <attribute name="http://xml.org/sax/features/namespaces" value="true"/>
  <property name="https://apache.dokyumento.jp/xml/properties/schema/external-noNamespaceSchemaLocation"
            value="${xsd.file}"/>
</xmlvalidate>