このタスクは、XMLファイルが有効であるか(または整形式であるのみか)をチェックします。このタスクは、デフォルトではJAXPによって提供されるSAX2パーサー実装(おそらくApache Ant自体で使用されているもの)を使用しますが、必要に応じて任意のSAX1/2パーサーを指定できます。
このタスクは、ネストされた要素の使用をサポートしています。
<xmlcatalog> 要素<dtd>要素<attribute>要素。これらは、http://xml.org/sax/features/ またはパーサーがサポートするその他の任意の機能です。<property>要素警告: デフォルトでは、JAXPは名前空間を認識しないパーサーを作成します。Antで使用されるJAXP実装では、http://xml.org/sax/features/namespaces 機能はデフォルトでfalse
に設定されています。名前空間を含むドキュメントを検証するには、次の要素をネストして、名前空間機能を明示的にtrue
に設定してください。
<attribute name="http://xml.org/sax/features/namespaces" value="true"/>
たとえば、XMLファイルでxsi:noNamespaceSchemaLocation属性を使用している場合は、この名前空間サポート機能が必要になります。
xmlvalidateのclassname属性を使用して、JAXPで生成されていないパーサーを使用している場合、この警告は適用されない場合があります。
| 属性 | 説明 | 必須 |
|---|---|---|
| file | チェックしたいファイル。 | はい、埋め込みの<fileset>が指定されていない限り |
| lenient | trueの場合、XMLドキュメントが整形式であるかどうかのみを確認します(指定されたパーサーがSAX1パーサーの場合は無視されます)。 |
いいえ |
| classname | 使用するパーサー。 | いいえ |
| classpathref | パーサークラスを見つける場所。 | いいえ、埋め込みの<classpath>要素を使用できます |
| failonerror | trueに設定されている場合、エラーが発生すると失敗します。 |
いいえ。デフォルトはtrue |
| warn | パーサーの警告イベントをログに記録します。 | いいえ |
<dtd>は、DTD解決のための異なる場所を指定するために使用されます。
| 属性 | 説明 | 必須 |
|---|---|---|
| publicId | 解決するDTDのパブリックID | はい |
| location | 使用するDTDの場所。ファイル、リソース、またはURLを指定できます | はい |
<xmlcatalog>要素は、エンティティ解決を実行するために使用されます。
<attribute>要素は、パーサーの機能を設定するために使用されます。
Xercesパーサーで使用可能な機能は、こちらで定義されています: 機能の設定
SAX機能は、こちらで定義されています: SAX2標準機能フラグ
| 属性 | 説明 | 必須 |
|---|---|---|
| name | 機能の名前 | はい |
| value | 機能のブール値 | はい |
<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>