<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
           xmlns:p='http://www.w3.org/2002/02/xml-pipeline'
           targetNamespace='http://www.w3.org/2002/02/xml-pipeline'
           elementFormDefault='qualified'>

  <!-- $Id: xml-pipeline.xsd,v 1.1 2002/02/28 09:31:18 dom Exp $ -->

  <xs:complexType name='pipeline'>
    <xs:choice minOccurs='1' maxOccurs='unbounded'>
      <xs:element ref='p:processdef'/>
      <xs:element ref='p:param'/>
      <xs:element ref='p:process'/>
      <xs:element ref='p:document'/>
      <xs:any namespace='##other' processContents='skip'/>
    </xs:choice>
    <xs:attribute name='id' type='xs:ID'/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name='processdef'>
    <xs:choice minOccurs='0' maxOccurs='unbounded'>
      <xs:any namespace='##other' processContents='skip'/>
    </xs:choice>
    <xs:attribute name='id' type='xs:ID'/>
    <xs:attribute name="name" type="xs:ID" use="required"/>
    <xs:attribute name="definition" type="xs:string"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name='process'>
    <xs:choice minOccurs='0' maxOccurs='unbounded'>
      <xs:element ref='p:input'/>
      <xs:element ref='p:output'/>
      <xs:element ref='p:error'/>
      <xs:element ref='p:param'/>
      <xs:any namespace='##other' processContents='skip'/>
    </xs:choice>
    <xs:attribute name='id' type='xs:ID'/>
    <xs:attribute name='type' type='xs:IDREF' use="required"/>
    <xs:attribute name='ignore-errors' type='xs:boolean'/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name='input' mixed="true">
    <xs:choice minOccurs='0' maxOccurs='unbounded'>
      <xs:any namespace='##other' processContents='skip'/>
    </xs:choice>
    <xs:attribute name='id' type='xs:ID'/>
    <xs:attribute name='name' type='xs:string'/>
    <xs:attribute name='label' type='xs:anyURI'/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name='output'>
    <xs:choice minOccurs='0' maxOccurs='unbounded'>
      <xs:any namespace='##other' processContents='skip'/>
    </xs:choice>
    <xs:attribute name='id' type='xs:ID'/>
    <xs:attribute name='name' type='xs:string'/>
    <xs:attribute name='label' type='xs:anyURI' use="required"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name='error'>
    <xs:choice minOccurs='0' maxOccurs='unbounded'>
      <xs:any namespace='##other' processContents='skip'/>
    </xs:choice>
    <xs:attribute name='id' type='xs:ID'/>
    <xs:attribute name='name' type='xs:string'/>
    <xs:attribute name='label' type='xs:anyURI'/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name='document'>
    <xs:choice minOccurs='0' maxOccurs='unbounded'>
      <xs:any namespace='##other' processContents='skip'/>
    </xs:choice>
    <xs:attribute name='id' type='xs:ID'/>
    <xs:attribute name='label' type='xs:anyURI' use="required"/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:complexType name='param' mixed="true">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:any namespace='##other' processContents='skip'/>
    </xs:choice>
    <xs:attribute name='id' type='xs:ID'/>
    <xs:attribute name='name' type='xs:string' use="required"/>
    <xs:attribute name='select' type='xs:string'/>
    <xs:anyAttribute namespace="##other" processContents="lax"/>
  </xs:complexType>

  <xs:element name="pipeline" type="p:pipeline"/>
  <xs:element name="processdef" type="p:processdef"/>
  <xs:element name="process" type="p:process"/>
  <xs:element name="input" type="p:input"/>
  <xs:element name="output" type="p:output"/>
  <xs:element name="error" type="p:error"/>
  <xs:element name="document" type="p:document"/>
  <xs:element name="param" type="p:param"/>
</xs:schema>
