Features: p-validate-with-dtd

ab-validate-with-dtd-006

Test DTD validation: keys in the document properties take precedence over the serialization option on the step. The document is valid, so there should be no detection element in the xvrl report.

Test is expected to pass.

The pipeline

<p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
                xmlns:t="http://xproc.org/ns/testsuite/3.0" name="pipeline" version="3.0">
   <p:output port="result"/>
   <p:validate-with-dtd serialization="map{'doctype-system' : 'i-do-not-exist'}">
      <p:with-input>
         <p:inline document-properties="map{'serialization' :                                                     map{'doctype-system' : '../documents/address.dtd'}                                                  }">
            <address>
               <first>Douglas</first>
               <last>Adams</last>
               <phone>42</phone>
            </address>
         </p:inline>
      </p:with-input>
   </p:validate-with-dtd>
   <p:identity>
      <p:with-input pipe="report"/>
   </p:identity>
</p:declare-step>

Result

<xvrl:report xmlns:t="http://xproc.org/ns/testsuite/3.0"
             xmlns:xvrl="http://www.xproc.org/ns/xvrl">
   <xvrl:metadata>
      <xvrl:timestamp>2025-06-19T18:06:07.400429231Z</xvrl:timestamp>
      <xvrl:creator name="XML Calabash"
                    version="3.0.5-SNAPSHOT"/>
      <xvrl:document href="file:/woodpecker/src/codeberg.org/xmlcalabash/xmlcalabash3/tests/3.0-test-suite/test-suite/tests/ab-validate-with-dtd-006.xml"/>
   </xvrl:metadata>
   <xvrl:digest valid="true" fatal-error-count="0"
                error-count="0" warning-count="0" info-count="0"
                unspecified-count="0" fatal-error-codes="" error-codes=""
                warning-codes="" info-codes="" unspecified-codes=""
                worst="unspecified"/>
</xvrl:report>

Schematron checks

<s:schema xmlns="http://www.w3.org/1999/xhtml"
          xmlns:s="http://purl.oclc.org/dsdl/schematron" xmlns:t="http://xproc.org/ns/testsuite/3.0"
          queryBinding="xslt2">
   <s:ns uri="http://www.xproc.org/ns/xvrl"
         prefix="xvrl"/>
   <s:pattern>
      <s:rule context="/">
         <s:assert test="//xvrl:report">There is no xvrl:report element.</s:assert>
         <s:assert test="not(exists(//xvrl:report//xvrl:detection))">There should be no element 'xvrl:detection'.</s:assert>
      </s:rule>
   </s:pattern>
</s:schema>

Revision history

14 Oct 2024, Norm Tovey-Walsh
Clarify test description.
15 Aug 2024, Achim Berndzen
Initial check in.