| <xs:element name="pipeline">
  <xs:complexType>
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:sequence>
          <xs:element ref="p:input"/>
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="p:output"/>
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="p:option"/>
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="p:log"/>
        </xs:sequence>
        <xs:sequence>
          <xs:element ref="p:serialization"/>
        </xs:sequence>
        <xs:choice>
          <xs:element ref="p:documentation"/>
          <xs:element ref="p:pipeinfo"/>
        </xs:choice>
      </xs:choice>
      <xs:sequence minOccurs="0" maxOccurs="unbounded">
        <xs:choice>
          <xs:sequence>
            <xs:element ref="p:import"/>
          </xs:sequence>
          <xs:sequence>
            <xs:element ref="p:declare-step"/>
          </xs:sequence>
          <xs:sequence>
            <xs:element ref="p:pipeline"/>
          </xs:sequence>
        </xs:choice>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="p:documentation"/>
          <xs:element ref="p:pipeinfo"/>
        </xs:choice>
      </xs:sequence>
      <xs:sequence>
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
          <xs:element ref="p:variable"/>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element ref="p:documentation"/>
            <xs:element ref="p:pipeinfo"/>
          </xs:choice>
        </xs:sequence>
        <xs:sequence maxOccurs="unbounded">
          <xs:choice>
            <xs:element ref="p:for-each"/>
            <xs:element ref="p:viewport"/>
            <xs:element ref="p:choose"/>
            <xs:element ref="p:group"/>
            <xs:element ref="p:try"/>
            <xs:choice>
              <xs:element ref="p:add-attribute"/>
              <xs:element ref="p:add-xml-base"/>
              <xs:element ref="p:compare"/>
              <xs:element ref="p:count"/>
              <xs:element ref="p:delete"/>
              <xs:element ref="p:directory-list"/>
              <xs:element ref="p:error"/>
              <xs:element ref="p:escape-markup"/>
              <xs:element ref="p:filter"/>
              <xs:element ref="p:http-request"/>
              <xs:element ref="p:identity"/>
              <xs:element ref="p:insert"/>
              <xs:element ref="p:label-elements"/>
              <xs:element ref="p:load"/>
              <xs:element ref="p:make-absolute-uris"/>
              <xs:element ref="p:namespace-rename"/>
              <xs:element ref="p:pack"/>
              <xs:element ref="p:parameters"/>
              <xs:element ref="p:rename"/>
              <xs:element ref="p:replace"/>
              <xs:element ref="p:set-attributes"/>
              <xs:element ref="p:sink"/>
              <xs:element |