validate – Validate XML¶
The validate script can check if an XML source conforms to an XML schema language.
You can also use validate to search for XML files that validate against an XML schema language.
Examples¶
Validate XHTML with the
XHTML 1.0 strict XSD:
curl -s https://www.webstandards.org/learn/reference/templates/xhtml10s/ | \
validate -x examples/xsd/xhtml1-strict.xsd
Validate XHTML with the
XHTML 1.0 strict DTD:
curl -s https://www.webstandards.org/learn/reference/templates/xhtml10s/ | \
validate -d examples/dtd/xhtml1-strict.dtd
Options¶
validate can be used with the following command-line options:
$ validate --help
usage: validate [-h] [-V] (-x XSD_SOURCE | -d DTD_SOURCE | -r RELAXNG_SOURCE) [-l | -L] [xml_source ...]
Validate an XML source with XSD, DTD or RELAX NG.
positional arguments:
xml_source XML source (file, <stdin>, http://...)
options:
-h, --help show this help message and exit
-V, --version show program's version number and exit
XML validator:
choose an XML validator: XSD, DTD or RELAX NG
-x XSD_SOURCE, --xsd XSD_SOURCE
XML Schema Definition (XSD) source
-d DTD_SOURCE, --dtd DTD_SOURCE
Document Type Definition (DTD) source
-r RELAXNG_SOURCE, --relaxng RELAXNG_SOURCE
RELAX NG source
file hit options:
output filenames to standard output
-l, -f, --validated-files
only the names of validated XML files are written to standard output
-L, -F, --invalidated-files
only the names of invalidated XML files are written to standard output
XML schema languages¶
validate supports the following XML schema languages.
XML Schema Definition (XSD)¶
- -x <xml_schema>, --xsd <xml_schema>¶
Use the --xsd option to validate an XML source with an XSD [1] file:
validate -x schema.xsd source.xml
Validate an XSD file with the
XML Schema schema document:
validate -x examples/xsd/XMLSchema.xsd schema_file.xsd
Validate the XML Schema 1.1 XSD with the (identical) XML Schema schema document:
validate -x examples/xsd/XMLSchema.xsd http://www.w3.org/2009/XMLSchema/XMLSchema.xsd
And vice versa:
validate -x http://www.w3.org/2009/XMLSchema/XMLSchema.xsd examples/xsd/XMLSchema.xsd
Document Type Definition (DTD)¶
- -d <dtd_schema>, --dtd <dtd_schema>¶
Validate an XML source with a DTD [2] file with the --dtd option:
validate -d doctype.dtd source.xml
Validate the XML Schema XSD with the
DTD for XML Schema:
validate -d examples/dtd/XMLSchema.dtd examples/xsd/XMLSchema.xsd
RELAX NG¶
- -r <relax_ng_schema>, --relaxng <relax_ng_schema>¶
The --relaxng option validates an XML source with a RELAX NG [3] file:
validate -r relaxng.rng source.xml
Validation Errors¶
If an XML source doesn’t validate the validate script will show the
reason with some additional information:
validate -x TV-Anytime.xsd NED120200816E.xml
XML source 'NED120200816E.xml' does not validate
line 92, column 0: Element '{urn:tva:metadata:2019}Broadcaster': This element is not expected.
Expected is one of ( {urn:tva:metadata:2019}FirstShowing, {urn:tva:metadata:2019}LastShowing, {urn:tva:metadata:2019}Free ).
Searching XML files¶
validate can print the names of validated or invalidated XML files to standard output.
Validated XML files¶
- -l, -f, --validated-files¶
The --validated-files command-line option only prints the names of validated XML files
(similar to grep --files-with-matches).
Find XML files that validate:
validate -lx schema.xsd *.xml
Invalidated XML files¶
- -L, -F, --invalidated-files¶
The --invalidated-files command-line option only prints the names of invalidated XML files
(similar to grep --files-without-match).
Remove XML files that fail to validate:
validate -Lx schema.xsd *.xml | xargs rm
Footnotes