XProc-Steps

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

p:validate-with-relaxng

<p:declare-step type="p:validate-with-relax-ng">
   <p:input port="source" primary="true"/>
   <p:input port="schema"/>
   <p:output port="result"/>
   <p:option name="dtd-attribute-values" select="'false'"/> <!-- boolean -->
   <p:option name="dtd-id-idref-warnings" select="'false'"/> <!-- boolean -->
   <p:option name="assert-valid" select="'true'"/> <!-- boolean -->
</p:declare-step>

Der <p:validate-with-relax-ng>-Step ermöglicht die Validierung der XML-Dokumente vom Input-Port (“source“) gegen ein RELAX NG-Schema, welches an einem weiteren Input-Port (“schema“) übergeben wird. Die entsprechenden Ergebnisse bzw. Ausgaben, resultierend aus der Validierung, werden auf den Output-Port (“result“) geschickt. Je nach Implementierung des Prozessors kann die Ausgabe zusätzliche Informationen (PSVI) in Bezug auf die Validierung haben. Weiterhin verfügt der Step über drei Optionen, die jeweils einen boolschen Wert erwarten.

Wenn die Option “dtd-attribute-values“ auf “true“ gesetzt ist, dann wird der Prozessor RELAX NG-bezogene Attribut-Konventionen beim Verarbeiten mit in Betracht ziehen. Ist “dtd-id-idref-warnings“ auf “true“ gestellt, dann werden Schemas, die nicht kompatibel mit der Relax NG-DTD-Kompatibilität (in Bezug auf ID/IDREF) sind, als “invalide“ behandelt und eine entsprechende Fehlermeldung wird produziert. Ist “assert-valid-true“ auf “true“ gesetzt, dann wird ein dynamischer Fehler ausgegeben, falls das Dokument nicht “valide“ ist.

Beispiel

Im folgenden Beispiel wird das Eingangsdokument gegen eine entsprechende RELAX NG-Schema-Datei validiert.

<?xml version="1.0" encoding="UTF-8"?>
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc" xmlns:c="http://www.w3.org/ns/xproc-step" version="1.0">
   <p:input port="source">
      <p:document href="filmsammlung.xml"/>
   </p:input>
   <p:output port="result"/>
   <p:validate-with-relax-ng assert-valid="true">
      <p:input port="schema">
         <p:document href="relaxngschema.rng"/>
      </p:input>
   </p:validate-with-relax-ng>
</p:declare-step>

Falls beim Durchführen dieses Stylesheets ein Validierungsfehler auftritt, dann würde die entsprechende Meldung so aussehen:

XC0053 : XC0053 It is a dynamic error if the assert-valid option is true and the input document is not valid. URL: http://www.w3.org/TR/xproc/#err.C0053
Tipp der data2type-Redaktion:
Zum Thema XProc bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: