<grammar xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.daisy.org/ns/pipeline/data" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <start> <ref name="document-validation-report"/> </start> <define name="document-validation-report"> <element name="document-validation-report"> <ref name="document-info"/> <ref name="reports"/> </element> </define> <define name="document-info"> <element name="document-info"> <interleave> <optional> <attribute name="internal"> <data type="string"/> </attribute> </optional> <element name="document-name"> <text/> </element> <element name="document-type"> <text/> </element> <element name="document-path"> <data type="anyURI"/> </element> <element name="error-count"> <data type="nonNegativeInteger"/> </element> <optional> <element name="report-path"> <data type="anyURI"/> </element> </optional> <optional> <ref name="properties"/> </optional> </interleave> </element> </define> <define name="properties"> <element name="properties"> <zeroOrMore> <ref name="property"/> </zeroOrMore> </element> </define> <define name="property"> <element name="property"> <attribute name="name"> <data type="string"/> </attribute> <choice> <attribute name="content"> <data type="string"/> </attribute> <oneOrMore> <ref name="property"/> </oneOrMore> </choice> </element> </define> <define name="reports"> <element name="reports"> <zeroOrMore> <ref name="report"/> </zeroOrMore> </element> </define> <define name="report"> <element name="report"> <interleave> <attribute name="type"> </attribute> <oneOrMore> <choice> <ref name="report-content"/> <ref name="svrl-report"/> </choice> </oneOrMore> </interleave> </element> </define> <define name="report-content"> <choice> <element name="errors"> <zeroOrMore> <ref name="error"/> </zeroOrMore> </element> <group> <zeroOrMore> <ref name="message"/> </zeroOrMore> </group> </choice> </define> <define name="message"> <element name="message"> <attribute name="severity"> <choice> <value>debug</value> <value>info</value> <value>warn</value> <value>error</value> </choice> </attribute> <ref name="message.content"/> </element> </define> <define name="message.content"> <interleave> <attribute name="type"> </attribute> <element name="desc"> <text/> </element> <optional> <element name="file"> <data type="anyURI"/> </element> </optional> <element name="location"> <choice> <interleave> <attribute name="line"> <data type="integer"/> </attribute> <attribute name="column"> <data type="integer"/> </attribute> </interleave> <attribute name="href"> <data type="anyURI"/> </attribute> </choice> </element> <optional> <element name="was"> <choice> <text/> <ref name="anyElement"/> </choice> </element> </optional> <optional> <element name="expected"> <choice> <text/> <ref name="anyElement"/> </choice> </element> </optional> </interleave> </define> <define name="anyElement"> <element> <anyName/> <zeroOrMore> <choice> <attribute> <anyName/> </attribute> <text/> <ref name="anyElement"/> </choice> </zeroOrMore> </element> </define> <define name="error"> <element name="error"> <ref name="message.content"/> </element> </define> <define name="svrl-report"> <ref name="anyElement"/> </define> </grammar>