Advertisement
rdeltour

Simple EPUB 3 validation with XProc

Jun 13th, 2011
350
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XML 2.19 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <p:declare-step version="1.0"
  3.    xmlns:p="http://www.w3.org/ns/xproc"
  4.    xmlns:c="http://www.w3.org/ns/xproc-step"
  5.    xmlns:cx="http://xmlcalabash.com/ns/extensions"
  6.    xmlns:svrl="http://purl.oclc.org/dsdl/svrl">
  7.  
  8.     <p:option name="doc" required="true"/>
  9.  
  10.     <p:import href="http://xmlcalabash.com/extension/steps/library-1.0.xpl"/>
  11.  
  12.     <p:group name="relaxng-validation">
  13.         <p:exec command="java" result-is-xml="false" wrap-result-lines="true">
  14.             <p:with-option name="cwd" select="replace(resolve-uri('.',base-uri()),'^file:','')">
  15.                 <p:inline>
  16.                     <doc/>
  17.                 </p:inline>
  18.             </p:with-option>
  19.             <p:with-option name="args"
  20.                select="concat('-jar lib/jing.jar -c schemas/epub-nav-30.rnc ', $doc)"/>
  21.             <p:input port="source">
  22.                 <p:empty/>
  23.             </p:input>
  24.         </p:exec>
  25.         <p:for-each>
  26.             <p:iteration-source select="//c:line"/>
  27.             <cx:message>
  28.                 <p:with-option name="message" select="normalize-space(.)"/>
  29.             </cx:message>
  30.             <p:sink/>
  31.         </p:for-each>
  32.     </p:group>
  33.    
  34.     <p:group  name="schematron-validation">
  35.         <p:load>
  36.             <p:with-option name="href" select="$doc"/>
  37.         </p:load>
  38.         <p:validate-with-schematron name="validate-with-schematron" assert-valid="false">
  39.             <p:input port="schema">
  40.                 <p:document href="schemas/epub-nav-30.sch"/>
  41.             </p:input>
  42.             <p:input port="parameters">
  43.                 <p:empty/>
  44.             </p:input>
  45.         </p:validate-with-schematron>
  46.         <p:sink/>
  47.         <p:for-each>
  48.             <p:iteration-source select="//svrl:failed-assert">
  49.                 <p:pipe port="report" step="validate-with-schematron"/>
  50.             </p:iteration-source>
  51.             <cx:message>
  52.                 <p:with-option name="message"
  53.                    select="concat('FAILURE: ',local-name(/*),': ',normalize-space(/*/svrl:text/text()))"
  54.                />
  55.             </cx:message>
  56.             <p:sink/>
  57.         </p:for-each>
  58.     </p:group>
  59. </p:declare-step>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement