<?xml version='1.0'?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/ns/xproc" elementFormDefault="qualified" xmlns:p="http://www.w3.org/ns/xproc">
 
 <import namespace="http://www.w3.org/XML/1998/namespace"/>
 
 <complexType name="anyProc">
  <sequence>
   <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
  </sequence>
  <attribute ref="xml:id"/>
  <attribute ref="xml:base"/>
  <anyAttribute processContents="lax"/>
 </complexType>

  <element name="component" type="p:componentType" abstract="true"/>
 
 <element name="extra" abstract="true">
  <annotation>
   <documentation>Temporary mechanism to allow for extension with
non-components -- give them p:extra as their subst. group heads.</documentation>
  </annotation>
 </element>

  <complexType name="componentType">
   <complexContent>
    <extension base="p:anyProc">
     <attribute name="name" type="NCName"/>     
    </extension>
   </complexContent>
  </complexType>

  <element name="step" type="p:stepType" abstract="true" substitutionGroup="p:component"/>

 <complexType name="stepType">
  <complexContent>
   <restriction base="p:componentType">
    <sequence>      
      <choice minOccurs="0" maxOccurs="unbounded">        
       <element ref="p:input"/>
       <element ref="p:output"/>
       <element ref="p:option"/>
       <element ref="p:log"/>
       <element ref="p:parameter"/>
       <element ref="p:documentation"/>
      </choice>     
     <group ref="p:subPipe" minOccurs="0"/>
    </sequence>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
 
 <group name="subPipe">
  <sequence>
   <element ref="p:component"/>
   <choice minOccurs="0" maxOccurs="unbounded">
    <element ref="p:component"/>
    <element ref="p:documentation"/>
   </choice>
  </sequence>
 </group>

 <element name="atomicStep" abstract="true" substitutionGroup="p:step" type="p:atomicStepType"/>
 
 <group name="atomicStepModel">  
  <sequence>
   <choice minOccurs="0" maxOccurs="unbounded">
    <element ref="p:input"/>
    <element ref="p:log"/>
    <element ref="p:option"/>
    <element ref="p:parameter"/>
    <element ref="p:documentation"/>
   </choice>
  </sequence>
 </group>
 
 <complexType name="atomicStepType">
  <complexContent>
   <restriction base="p:stepType">
    <group ref="p:atomicStepModel"/>
    <anyAttribute processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>

  <element name="compoundStep" abstract="true" substitutionGroup="p:step">
   <complexType>
    <complexContent>
     <restriction base="p:stepType">
      <sequence>
       <choice minOccurs="0" maxOccurs="unbounded">        
        <element ref="p:input"/>
        <element ref="p:output"/>
        <element ref="p:option"/>
        <element ref="p:log"/>
        <element ref="p:documentation"/>
       </choice>     
       <group ref="p:subPipe" minOccurs="0"/>
      </sequence>
      <anyAttribute namespace="##other" processContents="lax"/>
     </restriction>
    </complexContent>
   </complexType>
  </element>
 
 <group name="seqBinding">
  <sequence>
   <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
   <choice>
    <sequence>
     <element ref="p:empty"/>
     <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <sequence minOccurs="0">
     <element ref="p:oneBinding"/>
     <choice minOccurs="0" maxOccurs="unbounded">
      <element ref="p:oneBinding"/>
      <element ref="p:documentation"/>
     </choice>
    </sequence>       
   </choice>
  </sequence>
 </group>
 
 <group name="optBinding">
  <sequence>
   <choice minOccurs="0" maxOccurs="unbounded">
    <element ref="p:namespaces"/>
    <element ref="p:documentation"/>
   </choice>
   <sequence minOccurs="0">
     <element ref="p:binding"/>
     <choice minOccurs="0" maxOccurs="unbounded">
      <element ref="p:namespaces"/>
      <element ref="p:documentation"/>
     </choice>
    </sequence>
  </sequence>
 </group>

  <element name="binding" abstract="true"/> 
 <element name="oneBinding" abstract="true" substitutionGroup="p:binding"/>

  <attribute name="ignore-prefixes">
   <simpleType>
    <list itemType="NCName"/>
   </simpleType>
  </attribute>
 
 <attribute name="xpath-version" type="token"/>
 
 <element name="documentation">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <sequence>
      <any processContents="lax"/>
     </sequence>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="pipeline">
  <complexType>
   <complexContent>
    <restriction base="p:componentType">
     <sequence>
      <choice minOccurs="0" maxOccurs="unbounded">        
       <element ref="p:input"/>
       <element ref="p:output"/>
       <element ref="p:option"/>
       <element ref="p:import"/>
       <element ref="p:declare-step"/>
       <element ref="p:log"/>
       <element ref="p:serialization"/>
       <element ref="p:documentation"/>
       <element ref="p:extra"/>
      </choice>
      <group ref="p:subPipe" minOccurs="0"/>
     </sequence>
     <attribute name="type" type="QName"/>
     <attribute ref="p:ignore-prefixes"/>
     <attribute ref="p:xpath-version" default="1.0"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="input">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <group ref="p:seqBinding" minOccurs="0"/>
     <attribute name="port" type="NCName" use="required"/>
     <attribute name="sequence" type="boolean" default="false"/>
     <attribute name="primary" type="boolean" default="false"/>
     <attribute name="kind" default="document">
      <simpleType>
       <restriction base="NMTOKEN">
        <enumeration value="document"/>
        <enumeration value="parameter"/>
       </restriction>
      </simpleType>
     </attribute>
     <attribute name="select" type="p:XPathExpression"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="pipe" substitutionGroup="p:oneBinding">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <sequence>
      <element ref="p:documentation" minOccurs="0"/>
     </sequence>
     <attribute name="step" type="NCName" use="required"/>
     <attribute name="port" type="NCName" use="required"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="document" substitutionGroup="p:oneBinding">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <sequence>
      <element ref="p:documentation" minOccurs="0"/>
     </sequence>
     <attribute name="href" type="anyURI" use="required"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>
 
 <element name="empty" substitutionGroup="p:binding">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <sequence>
      <element ref="p:documentation" minOccurs="0"/>
     </sequence>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="inline" substitutionGroup="p:oneBinding">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <sequence>
      <any namespace="##any" processContents="lax"/>
     </sequence>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="output">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <group ref="p:seqBinding" minOccurs="0"/>
     <attribute name="port" type="NCName" use="required"/>
     <attribute name="sequence" type="boolean" default="false"/>
     <attribute name="primary" type="boolean" default="false"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element> 

 <element name="log">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <sequence>
      <element ref="p:documentation" minOccurs="0"/>
     </sequence>
     <attribute name="port" type="NCName" use="required"/>
     <attribute name="href" type="anyURI"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>
 
<attributeGroup name="coreSerializationAttrs">
  <attribute name="cdata-section-elements" type="NMTOKENS"/>
  <attribute name="doctype-public" type="string"/>
  <attribute name="doctype-system" type="anyURI"/>
  <attribute name="encoding" type="NMTOKEN"/>
  <attribute name="escape-uri-attributes" type="boolean"/>
  <attribute name="include-content-type" type="boolean"/>
  <attribute name="indent" type="boolean"/>
  <attribute name="media-type" type="token"/>
  <attribute name="method" type="QName"/>
  <attribute name="omit-xml-declaration" type="boolean"/>
  <attribute name="standalone">
   <simpleType>
    <restriction base="NMTOKEN">
     <enumeration value="true"/>
     <enumeration value="false"/>
     <enumeration value="omit"/>
    </restriction>
   </simpleType>
  </attribute>
  <attribute name="undeclare-prefixes" type="boolean"/>
  <attribute name="version" type="token"/>
</attributeGroup>

 <attributeGroup name="serializationAttrs">
  <attributeGroup ref="p:coreSerializationAttrs"/>
  <attribute name="byte-order-mark" type="boolean"/>
  <attribute name="normalization-form" type="NMTOKEN">
   <annotation>
    <documentation>
     NFC|NFD|NFKC|NFKD|fully-normalized|none|impl-def...
    </documentation>
   </annotation>
  </attribute>
 </attributeGroup>
 
 <element name="serialization">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <sequence>
      <element ref="p:documentation" minOccurs="0"/>
     </sequence>
     <attributeGroup ref="p:serializationAttrs"/>
     <attribute name="port" type="NCName" use="required"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <complexType name="poType">
  <complexContent>
   <restriction base="p:anyProc">
    <group ref="p:optBinding"/>
    <attribute name="name" type="QName" use="required"/>
    <attribute name="required" type="boolean" default="false"/>
    <attribute name="value" type="string"/>
    <attribute name="select" type="p:XPathExpression"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
  </complexType>
 
 <element name="namespaces">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <sequence>
      <element ref="p:documentation" minOccurs="0"/>
     </sequence>
     <attribute name="option" type="QName"/>
     <attribute name="element" type="p:XPathExpression"/>
     <attribute name="except-prefixes" type="NMTOKENS"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>
 
 <element name="option" type="p:poType"/>
 <element name="parameter">
  <complexType>
   <complexContent>
    <restriction base="p:poType">
     <group ref="p:optBinding"/>
     <attribute name="required" use="prohibited"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="for-each" substitutionGroup="p:component">
  <complexType>
   <complexContent>
    <restriction base="p:componentType">
     <sequence>
      <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
      <sequence minOccurs="0">
       <element ref="p:iteration-source"/>
       <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
      <sequence minOccurs="0">
       <choice>
        <element ref="p:output"/>
        <element ref="p:option"/>
        <element ref="p:log"/>
       </choice>
       <choice minOccurs="0" maxOccurs="unbounded">
        <element ref="p:output"/>
        <element ref="p:option"/>
        <element ref="p:log"/>
        <element ref="p:documentation"/>
       </choice>
      </sequence>
      <group ref="p:subPipe" minOccurs="0"/>
     </sequence>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="iteration-source">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <group ref="p:seqBinding" minOccurs="0"/>
     <attribute name="select" type="p:XPathExpression"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="viewport" substitutionGroup="p:component">
  <complexType>
   <complexContent>
    <restriction base="p:componentType">
     <sequence>
      <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
      <sequence minOccurs="0">       
       <element ref="p:viewport-source"/>
       <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
      <sequence minOccurs="0">       
       <element ref="p:output"/>
       <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
      <sequence minOccurs="0">       
       <element ref="p:log"/>
       <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
      </sequence>      
      <sequence minOccurs="0">
       <element ref="p:option"/>
       <choice minOccurs="0" maxOccurs="unbounded">
        <element ref="p:option"/>
        <element ref="p:documentation"/>
       </choice>
      </sequence>
      <group ref="p:subPipe" minOccurs="0"/>
     </sequence>
     <attribute name="match" type="p:XPathMatchPattern" use="required"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="viewport-source">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <sequence>
      <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
      <sequence minOccurs="0">
       <element ref="p:oneBinding"/>
       <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
     </sequence>
     <attribute name="match" type="p:XPathMatchPattern" use="required"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="choose" substitutionGroup="p:component">
  <complexType>
   <complexContent>
    <restriction base="p:componentType">
     <sequence>
      <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
      <sequence minOccurs="0">
       <element ref="p:xpath-context"/>
       <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
      <sequence minOccurs="0">
       <element ref="p:when"/>
       <choice minOccurs="0" maxOccurs="unbounded">
        <element ref="p:when"/>
        <element ref="p:documentation"/>
       </choice>
      </sequence>
      <sequence minOccurs="0">
       <element ref="p:otherwise"/>
       <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
     </sequence>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="when">
  <complexType>
   <complexContent>
    <restriction base="p:componentType">
     <sequence>
      <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
      <element ref="p:xpath-context" minOccurs="0"/>
      <sequence minOccurs="0">
       <choice>
        <element ref="p:output"/>
        <element ref="p:option"/>
        <element ref="p:log"/>
       </choice>
       <choice minOccurs="0" maxOccurs="unbounded">
        <element ref="p:output"/>
        <element ref="p:option"/>
        <element ref="p:log"/>
        <element ref="p:documentation"/>
       </choice>
      </sequence>
      <group ref="p:subPipe" minOccurs="0"/>
     </sequence>
     <attribute name="name" use="prohibited"/>
     <attribute name="test" type="p:XPathExpression" use="required"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>
 
 <group name="groupModel">
  <sequence>
   <choice minOccurs="0" maxOccurs="unbounded">
    <element ref="p:output"/>
    <element ref="p:option"/>
    <element ref="p:log"/>
    <element ref="p:documentation"/>
   </choice>
   <group ref="p:subPipe" minOccurs="0"/>
  </sequence>
 </group>

 <element name="otherwise">
  <complexType>
   <complexContent>
    <restriction base="p:componentType">
     <group ref="p:groupModel"/>
     <attribute name="name" use="prohibited"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>
 
 <element name="xpath-context">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <group ref="p:optBinding"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>   
  </complexType>
 </element>

 <element name="group" substitutionGroup="p:component">
  <complexType>
   <complexContent>
    <restriction base="p:componentType">
     <group ref="p:groupModel"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="try" substitutionGroup="p:component">
  <complexType>
   <complexContent>
    <restriction base="p:componentType">
     <sequence>
      <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
      <element ref="p:group"/>
      <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
      <element ref="p:catch"/>
      <element ref="p:documentation" minOccurs="0" maxOccurs="unbounded"/>
     </sequence>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="catch">
  <complexType>
   <complexContent>
    <restriction base="p:componentType">
     <group ref="p:groupModel"/>
     <attribute name="name" use="prohibited"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>
 
 <element name="vanillaStep" abstract="true" substitutionGroup="p:atomicStep">
  <complexType>
   <complexContent>
    <restriction base="p:atomicStepType">
     <sequence>
      <choice minOccurs="0" maxOccurs="unbounded">
       <element ref="p:input"/>
       <element ref="p:log"/>
       <element ref="p:option"/>
       <element ref="p:parameter"/>
       <element ref="p:documentation"/>
      </choice>
     </sequence>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

<element name="add-attribute" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="match" type="p:XPathMatchPattern"/>
    <attribute name="attribute-name" type="QName"/>
    <attribute name="attribute-value" type="string"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="add-xml-base" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="all" type="boolean"/>
    <attribute name="relative" type="boolean"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="compare" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="fail-if-not-equal" type="boolean"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="count" substitutionGroup="p:vanillaStep"/>
<element name="delete" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="match" type="p:XPathMatchPattern"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="directory-list" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="filter" type="string"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="error" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="code" type="string"/>
    <attribute name="description" type="string"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="escape-markup" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attributeGroup ref="p:coreSerializationAttrs"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="http-request" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attributeGroup ref="p:serializationAttrs"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="identity" substitutionGroup="p:vanillaStep"/>
<element name="insert" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="match" type="p:XPathMatchPattern"/>
    <attribute name="position">
     <simpleType>
      <restriction base="NMTOKEN">
       <enumeration value="first-child"/>
       <enumeration value="last-child"/>
       <enumeration value="before"/>
       <enumeration value="after"/>
      </restriction>
     </simpleType>
    </attribute>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="label-elements" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="prefix" type="string"/>
    <attribute name="suffix" type="string"/>
    <attribute name="select" type="string"/>
    <attribute name="scheme" type="QName"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="load" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="validate" type="boolean"/>
    <attribute name="href" type="anyURI"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="make-absolute-uris" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="match" type="p:XPathMatchPattern"/>
    <attribute name="base-uri" type="anyURI"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="namespace-rename" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="to" type="string"/>
    <attribute name="from" type="string"/>
    <attribute name="elements-only" type="boolean"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="pack" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="wrapper" type="QName"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="parameters" substitutionGroup="p:vanillaStep"/>
<element name="rename" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="match" type="p:XPathMatchPattern"/>
    <attribute name="new-name" type="QName"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="replace" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="match" type="p:XPathMatchPattern"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="set-attributes" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="match" type="p:XPathMatchPattern"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="sink" substitutionGroup="p:vanillaStep"/>
<element name="split-sequence" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="test" type="string"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="store" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="href" type="anyURI"/>
    <attributeGroup ref="p:serializationAttrs"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="string-replace" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="replace" type="string"/>
    <attribute name="match" type="p:XPathMatchPattern"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="unescape-markup" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="content-type" type="string"/>
    <attribute name="encoding" type="NMTOKEN"/>
    <attribute name="charset" type="NMTOKEN"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="unwrap" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="match" type="p:XPathMatchPattern"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="wrap" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="match" type="p:XPathMatchPattern"/>
    <attribute name="wrapper" type="QName"/>
    <attribute name="group-adjacent" type="p:XPathExpression"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="wrap-sequence" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="wrapper" type="QName"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="xinclude" substitutionGroup="p:vanillaStep"/>
<element name="xslt" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="output-base-uri" type="anyURI"/>
    <attribute name="version" type="string"/>
    <attribute name="template-name" type="QName"/>
    <attribute name="initial-mode" type="QName"/>
   </restriction>
  </complexContent>
 </complexType>
</element>

<element name="exec" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="command" type="string"/>
    <attribute name="args" type="string"/>
    <attribute name="cwd" type="string"/>
    <attribute name="source-is-xml" type="boolean"/>
    <attribute name="result-is-xml" type="boolean"/>
    <attribute name="wrap-result-lines" type="boolean"/>
    <attribute name="errors-is-xml" type="boolean"/>
    <attribute name="wrap-error-lines" type="boolean"/>
    <attribute name="fix-slashes" type="boolean"/>
    <attributeGroup ref="p:serializationAttrs"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="hash" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="value" type="string"/>
    <attribute name="algorithm" type="string"/>
    <attribute name="match" type="p:XPathMatchPattern"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="uuid" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="match" type="p:XPathMatchPattern"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="validate-with-relax-ng" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="dtd-compatibility" type="boolean"/>
    <attribute name="assert-valid" type="boolean"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="validate-with-schematron"
  substitutionGroup="p:vanillaStep"/>
<element name="validate-with-xml-schema" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="assert-valid" type="boolean"/>
    <attribute name="mode">
     <simpleType>
      <restriction base="NMTOKEN">
       <enumeration value="strict"/>
       <enumeration value="lax"/>
      </restriction>
     </simpleType>
    </attribute>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="www-form-urldecode" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="value" type="string"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="www-form-urlencode" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="match" type="p:XPathMatchPattern"/>
   </restriction>
  </complexContent>
 </complexType>
</element>
<element name="xquery" substitutionGroup="p:vanillaStep"/>
<element name="xsl-formatter" substitutionGroup="p:atomicStep">
 <complexType>
  <complexContent>
   <restriction base="p:atomicStepType">
    <group ref="p:atomicStepModel"/>
    <attribute name="content-type" type="string"/>
    <attribute name="uri" type="anyURI"/>
    <anyAttribute namespace="##other" processContents="lax"/>
   </restriction>
  </complexContent>
 </complexType>
</element>

 <element name="declare-step">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <sequence>
      <choice minOccurs="0" maxOccurs="unbounded">        
       <element ref="p:input"/>
       <element ref="p:output"/>
       <element ref="p:option"/>
       <element ref="p:parameter"/>
       <element ref="p:documentation"/>
      </choice>
     </sequence>
     <attribute name="type" type="QName" use="required"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="pipeline-library">
  <complexType>
   <complexContent>
    <restriction base="p:anyProc">
     <sequence>
      <choice minOccurs="0" maxOccurs="unbounded">        
       <element ref="p:import"/>
       <element ref="p:declare-step"/>
       <element ref="p:pipeline"/>
       <element ref="p:extra"/>
       <element ref="p:documentation"/>
      </choice>
     </sequence>
     <attribute name="name" type="NCName"/>
     <attribute ref="p:ignore-prefixes"/>
     <attribute ref="p:xpath-version" default="1.0"/>
     <attribute name="namespace" type="anyURI"/>
     <anyAttribute namespace="##other" processContents="lax"/>
    </restriction>
   </complexContent>
  </complexType>
 </element>

 <element name="import">
  <complexType>
   <sequence>
    <element ref="p:documentation" minOccurs="0"/>
   </sequence>
   <attribute name="href" type="anyURI" use="required"/>
  </complexType>
 </element>

 <simpleType name="XPathExpression">
  <restriction base="string"/>
 </simpleType>

 <simpleType name="XPathMatchPattern">
  <restriction base="string"/>
 </simpleType>
 
 <simpleType name="step-name">
  <union memberTypes="NCName QName"/>
 </simpleType>
</schema>
