Skip to content

Instantly share code, notes, and snippets.

@SilverPreece
Created March 28, 2019 03:49
Show Gist options
  • Save SilverPreece/984f9d3b02d4fea043f0be2d11249614 to your computer and use it in GitHub Desktop.
Save SilverPreece/984f9d3b02d4fea043f0be2d11249614 to your computer and use it in GitHub Desktop.
Auto-conversion of the RELAX NG schema for Phing into a W3C XML Schema document.
<?xml version="1.0" encoding="UTF-8"?>
<!--
-File $Id$
-License GNU LGPL (http://www.gnu.org/copyleft/lgpl.html)
-Author Johan Persson, johanp@aditus.nu
-->
<!--
==================================================================================
XML Schema Document For Phing build XML scripts.
Auto-converted from Phing-published RELAX NG Schema using Jing-Trang
(https://github.com/relaxng/jing-trang)
The purpose of this schema is to facilitate the writing of correct Phing build
scripts in a XML and schema aware editor. The schema will help the editor verify
the input as well as providing tag completion making it easier and faster to
write correct Phing build scripts.
It can also be used together with one of the many existing XSD validators to
validate a Phing script for adherence to the Phing syntax, like a "lint"
for Phing scripts.
Note however that it is actually impossible to write a generic schema for
Phing since it is possible to define new elements dynamically which means
that the grammar can never be complete.
However, in a particular setup only a few custom tasks is usually
used. This is easy to add at the end of this schema so it can be extended to
include those additional elements as well.
==================================================================================
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!--
===========================================================================================================
Entry point "project" element
===========================================================================================================
-->
<xs:element name="project">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="target"/>
<xs:group ref="coretasks"/>
<xs:group ref="optionaltasks"/>
<xs:group ref="coretypes"/>
</xs:choice>
<xs:attribute name="name" use="required"/>
<xs:attribute name="basedir"/>
<xs:attribute name="default" use="required"/>
<xs:attribute name="description"/>
<xs:attribute name="phingVersion"/>
</xs:complexType>
</xs:element>
<!--
===========================================================================================================
Macros for all built in tasks (both core and optional) as well as for core complex types
===========================================================================================================
-->
<xs:group name="coretypes">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="classpath"/>
<xs:element ref="dirset"/>
<xs:element ref="excludes"/>
<xs:element ref="filelist"/>
<xs:element ref="fileset"/>
<xs:element ref="path"/>
<xs:element ref="patternset"/>
</xs:choice>
</xs:sequence>
</xs:group>
<xs:group name="optionaltasks">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="apigen"/>
<xs:element ref="autoloader"/>
<xs:element ref="capsule"/>
<xs:element ref="composer"/>
<xs:element ref="coverage-merger"/>
<xs:element ref="coverage-report"/>
<xs:element ref="coverage-setup"/>
<xs:element ref="coverage-threshold"/>
<xs:element ref="dbdeploy"/>
<xs:element ref="exportproperties"/>
<xs:element ref="filehash"/>
<xs:element ref="filesize"/>
<xs:element ref="filesync"/>
<xs:element ref="ftpdeploy"/>
<xs:element ref="gitbranch"/>
<xs:element ref="gitcheckout"/>
<xs:element ref="gitclone"/>
<xs:element ref="gitcommit"/>
<xs:element ref="gitdescribe"/>
<xs:element ref="gitfetch"/>
<xs:element ref="gitgc"/>
<xs:element ref="gitinit"/>
<xs:element ref="gitlog"/>
<xs:element ref="gitmerge"/>
<xs:element ref="gitpull"/>
<xs:element ref="gitpush"/>
<xs:element ref="gittag"/>
<xs:element ref="growlnotify"/>
<xs:element ref="hgadd"/>
<xs:element ref="hgcommit"/>
<xs:element ref="hglog"/>
<xs:element ref="hgpull"/>
<xs:element ref="hgpush"/>
<xs:element ref="hgupdate"/>
<xs:element ref="httpget"/>
<xs:element ref="httprequest"/>
<xs:element ref="inifile"/>
<xs:element ref="ioncubeencoder"/>
<xs:element ref="ioncubelicense"/>
<xs:element ref="jshint"/>
<xs:element ref="jsllint"/>
<xs:element ref="jsmin"/>
<xs:element ref="liquibase"/>
<xs:element ref="liquibase-changelog"/>
<xs:element ref="liquibase-dbdoc"/>
<xs:element ref="liquibase-diff"/>
<xs:element ref="liquibase-rollback"/>
<xs:element ref="liquibase-tag"/>
<xs:element ref="liquibase-update"/>
<xs:element ref="mail"/>
<xs:element ref="manifest"/>
<xs:element ref="notifysend"/>
<xs:element ref="packageaspath"/>
<xs:element ref="parallel"/>
<xs:element ref="patch"/>
<xs:element ref="pathtofileset"/>
<xs:element ref="pdosqlexec"/>
<xs:element ref="pearpkg"/>
<xs:element ref="pearpkg2"/>
<xs:element ref="phardata"/>
<xs:element ref="pharpackage"/>
<xs:element ref="phkpackage"/>
<xs:element ref="phpcodesniffer"/>
<xs:element ref="phpcpd"/>
<xs:element ref="phpdepend"/>
<xs:element ref="phpdoc"/>
<xs:element ref="phpdocumentor"/>
<xs:element ref="phpdocumentorexternal"/>
<xs:element ref="phplint"/>
<xs:element ref="phploc"/>
<xs:element ref="phpmd"/>
<xs:element ref="phpunit"/>
<xs:element ref="phpunitreport"/>
<xs:element ref="propertyregex"/>
<xs:group ref="replaceregexp_task"/>
<xs:element ref="rst"/>
<xs:element ref="s3put"/>
<xs:element ref="s3get"/>
<xs:element ref="sass"/>
<xs:element ref="scp"/>
<xs:element ref="ssh"/>
<xs:element ref="simpletest"/>
<xs:element ref="smarty"/>
<xs:element ref="sonar"/>
<xs:element ref="stopwatch"/>
<xs:element ref="svncheckout"/>
<xs:element ref="svncommit"/>
<xs:element ref="svncopy"/>
<xs:element ref="svnexport"/>
<xs:element ref="svninfo"/>
<xs:element ref="svnlastrevision"/>
<xs:element ref="svnlist"/>
<xs:element ref="svnlog"/>
<xs:element ref="svnswitch"/>
<xs:element ref="svnupdate"/>
<xs:element ref="symfonyconsole"/>
<xs:element ref="symlink"/>
<xs:element ref="tar"/>
<xs:element ref="throw"/>
<xs:element ref="untar"/>
<xs:element ref="unzip"/>
<xs:element ref="version"/>
<xs:element ref="wikipublish"/>
<xs:element ref="xmllint"/>
<xs:element ref="xmlproperty"/>
<xs:element ref="zendcodeanalyzer"/>
<xs:element ref="zendguardencode"/>
<xs:element ref="zendguardlicense"/>
<xs:element ref="zip"/>
<xs:element ref="zsdtpack"/>
<xs:element ref="zsdtvalidate"/>
</xs:choice>
</xs:sequence>
</xs:group>
<xs:group name="coretasks">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="adhoc"/>
<xs:element ref="adhoc-task"/>
<xs:element ref="adhoc-type"/>
<xs:element ref="append"/>
<xs:element ref="apply"/>
<xs:group ref="attrib"/>
<xs:group ref="available"/>
<xs:element ref="basename"/>
<xs:element ref="chmod"/>
<xs:element ref="chown"/>
<xs:element ref="condition"/>
<xs:element ref="copy"/>
<xs:element ref="cvs"/>
<xs:element ref="cvspass"/>
<xs:element ref="delete"/>
<xs:element ref="diagnostics"/>
<xs:element ref="dirname"/>
<xs:element ref="echo"/>
<xs:element ref="echoproperties"/>
<xs:element ref="exec"/>
<xs:element ref="exit"/>
<xs:element ref="fail"/>
<xs:element ref="foreach"/>
<xs:element ref="if"/>
<xs:element ref="import"/>
<xs:element ref="includepath"/>
<xs:element ref="input"/>
<xs:element ref="loadfile"/>
<xs:element ref="mkdir"/>
<xs:element ref="move"/>
<xs:element ref="phing"/>
<xs:element ref="phingcall"/>
<xs:group ref="phingversion"/>
<xs:element ref="php"/>
<xs:group ref="property"/>
<xs:element ref="propertyprompt"/>
<xs:element ref="record"/>
<xs:element ref="reflexive"/>
<xs:element ref="resolvepath"/>
<xs:element ref="retry"/>
<xs:group ref="sleep"/>
<xs:group ref="switch"/>
<xs:element ref="taskdef"/>
<xs:element ref="tempfile"/>
<xs:element ref="touch"/>
<xs:element ref="truncate"/>
<xs:element ref="trycatch"/>
<xs:element ref="tstamp"/>
<xs:element ref="typedef"/>
<xs:element ref="uptodate"/>
<xs:element ref="waitfor"/>
<xs:element ref="warn"/>
<xs:element ref="xslt"/>
</xs:choice>
</xs:sequence>
</xs:group>
<!--
===========================================================================================================
Target element.
===========================================================================================================
-->
<xs:element name="target">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="coretasks"/>
<xs:group ref="coretypes"/>
<xs:group ref="optionaltasks"/>
</xs:choice>
<xs:attribute name="name" use="required"/>
<xs:attribute name="depends"/>
<xs:attribute name="hidden"/>
<xs:attribute name="if"/>
<xs:attribute name="unless"/>
<xs:attribute name="description"/>
</xs:complexType>
</xs:element>
<!--
===========================================================================================================
Core types
===========================================================================================================
-->
<xs:element name="filelist">
<xs:complexType>
<xs:attribute name="dir" use="required"/>
<xs:attribute name="files"/>
<xs:attribute name="listfile"/>
</xs:complexType>
</xs:element>
<xs:element name="class">
<xs:complexType>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="method">
<xs:complexType>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="file">
<xs:complexType>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="excludes">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="class"/>
<xs:element ref="method"/>
<xs:element ref="file"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="fileset">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="include"/>
<xs:element ref="exclude"/>
</xs:choice>
<xs:attribute name="refid" type="xs:IDREF"/>
<xs:attribute name="dir"/>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="includes"/>
</xs:complexType>
</xs:element>
<xs:element name="patternset">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="include"/>
<xs:element ref="exclude"/>
</xs:choice>
<xs:attribute name="refid" type="xs:IDREF"/>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="includes"/>
<xs:attribute name="excludes"/>
<xs:attribute name="includesfile"/>
<xs:attribute name="excludesfile"/>
</xs:complexType>
</xs:element>
<xs:element name="path">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="pathelement"/>
<xs:element ref="fileset"/>
<xs:element ref="dirset"/>
</xs:choice>
<xs:attribute name="id" type="xs:ID"/>
<xs:attribute name="dir"/>
<xs:attribute name="path"/>
</xs:complexType>
</xs:element>
<xs:element name="classpath">
<xs:complexType>
<xs:attribute name="refid" use="required" type="xs:IDREF"/>
</xs:complexType>
</xs:element>
<xs:element name="projdocfileset">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="include"/>
<xs:element ref="exclude"/>
</xs:choice>
<xs:attribute name="dir" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="dirset">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="include"/>
<xs:element ref="exclude"/>
</xs:choice>
<xs:attribute name="includes"/>
<xs:attribute name="includesfile"/>
<xs:attribute name="excludes"/>
<xs:attribute name="excludesfile"/>
<xs:attribute name="casesensitive" default="yes">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="yes"/>
<xs:enumeration value="no"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="followsymlinks" default="yes">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="yes"/>
<xs:enumeration value="no"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="include">
<xs:complexType>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="exclude">
<xs:complexType>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="pathelement">
<xs:complexType>
<xs:attribute name="dir" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="arg">
<xs:complexType>
<xs:attribute name="value"/>
<xs:attribute name="file"/>
<xs:attribute name="path"/>
<xs:attribute name="line"/>
</xs:complexType>
</xs:element>
<!--
===========================================================================================================
Core Tasks
===========================================================================================================
-->
<xs:element name="adhoc" type="xs:string"/>
<xs:element name="adhoc-task">
<xs:complexType>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="adhoc-type">
<xs:complexType>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="append">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:element ref="fileset"/>
<xs:element ref="filelist"/>
</xs:choice>
<xs:element ref="filterchain"/>
<xs:group ref="append-header"/>
<xs:group ref="append-footer"/>
<xs:element ref="path"/>
</xs:choice>
<xs:attribute name="destFile"/>
<xs:attribute name="append"/>
<xs:attribute name="overwrite"/>
<xs:attribute name="fixlastline"/>
<xs:attribute name="eol"/>
<xs:attribute name="text"/>
<xs:attribute name="file"/>
</xs:complexType>
</xs:element>
<xs:element name="apply">
<xs:complexType>
<xs:attribute name="executable" use="required"/>
<xs:attribute name="dir"/>
<xs:attribute name="output"/>
<xs:attribute name="error"/>
<xs:attribute name="os"/>
<xs:attribute name="escape" type="xs:boolean"/>
<xs:attribute name="passthru" type="xs:boolean"/>
<xs:attribute name="spawn" type="xs:boolean"/>
<xs:attribute name="returnProperty"/>
<xs:attribute name="outputProperty"/>
<xs:attribute name="checkReturn" type="xs:boolean"/>
<xs:attribute name="append" type="xs:boolean"/>
<xs:attribute name="parallel" type="xs:boolean"/>
<xs:attribute name="addSourceFile" type="xs:boolean"/>
<xs:attribute name="relative" type="xs:boolean"/>
<xs:attribute name="forwardSlash" type="xs:boolean"/>
<xs:attribute name="maxparallel" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:group name="attrib">
<xs:sequence>
<xs:element name="available">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fileset"/>
<xs:element ref="filelist"/>
</xs:choice>
<xs:attribute name="file"/>
<xs:attribute name="archive" type="xs:boolean"/>
<xs:attribute name="hidden" type="xs:boolean"/>
<xs:attribute name="os" type="xs:string"/>
<xs:attribute name="readonly" type="xs:boolean"/>
<xs:attribute name="system" type="xs:boolean"/>
<xs:attribute name="verbose" type="xs:boolean"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="available">
<xs:sequence>
<xs:element name="available">
<xs:complexType>
<xs:attribute name="property" use="required"/>
<xs:attribute name="value"/>
<xs:attribute name="file"/>
<xs:attribute name="resource"/>
<xs:attribute name="type"/>
<xs:attribute name="filepath"/>
<xs:attribute name="followSymlinks" type="xs:boolean"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="basename">
<xs:complexType>
<xs:attribute name="file" use="required"/>
<xs:attribute name="property" use="required"/>
<xs:attribute name="suffix"/>
</xs:complexType>
</xs:element>
<xs:element name="chmod">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="file"/>
<xs:attribute name="mode" use="required"/>
<xs:attribute name="failonerror" type="xs:boolean"/>
<xs:attribute name="quiet" type="xs:boolean"/>
<xs:attribute name="verbose" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="chown">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="file"/>
<xs:attribute name="user" use="required"/>
<xs:attribute name="failonerror" type="xs:boolean"/>
<xs:attribute name="quiet" type="xs:boolean"/>
<xs:attribute name="verbose" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="condition">
<xs:complexType>
<xs:group minOccurs="0" ref="conditions"/>
<xs:attribute name="property" use="required" type="xs:string"/>
<xs:attribute name="value" default="true"/>
<xs:attribute name="else"/>
</xs:complexType>
</xs:element>
<xs:element name="copy">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fileset"/>
<xs:element ref="filelist"/>
</xs:choice>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="mapper"/>
<xs:element ref="filterchain"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="file"/>
<xs:attribute name="tofile"/>
<xs:attribute name="todir"/>
<xs:attribute name="overwrite" type="xs:boolean"/>
<xs:attribute name="tstamp" type="xs:boolean"/>
<xs:attribute name="preservelastmodified" type="xs:boolean"/>
<xs:attribute name="includeemptydirs" type="xs:boolean"/>
<xs:attribute name="mode" type="xs:int"/>
<xs:attribute name="haltonerror" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="cvs">
<xs:complexType>
<xs:attribute name="dest" use="required"/>
<xs:attribute name="modules" use="required"/>
<xs:attribute name="cvsRoot"/>
<xs:attribute name="cvsRsh"/>
<xs:attribute name="port" type="xs:int"/>
<xs:attribute name="passfile"/>
<xs:attribute name="tag"/>
<xs:attribute name="date"/>
<xs:attribute name="quiet" type="xs:boolean"/>
<xs:attribute name="noexec" type="xs:boolean"/>
<xs:attribute name="setfailonerror" type="xs:boolean"/>
<xs:attribute name="compression" type="xs:boolean"/>
<xs:attribute name="compressionlevel" type="xs:unsignedByte"/>
<xs:attribute name="output"/>
<xs:attribute name="error"/>
<xs:attribute name="command"/>
</xs:complexType>
</xs:element>
<xs:element name="cvspass">
<xs:complexType>
<xs:attribute name="password" use="required"/>
<xs:attribute name="cvsRoot" use="required"/>
<xs:attribute name="passFile"/>
</xs:complexType>
</xs:element>
<xs:element name="delete">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="file"/>
<xs:attribute name="dir"/>
<xs:attribute name="verbose" type="xs:boolean"/>
<xs:attribute name="quiet" type="xs:boolean"/>
<xs:attribute name="failonerror" type="xs:boolean"/>
<xs:attribute name="includeemptydirs" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="diagnostics">
<xs:complexType/>
</xs:element>
<xs:element name="dirname">
<xs:complexType>
<xs:attribute name="file" use="required"/>
<xs:attribute name="property" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="echo">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element minOccurs="0" ref="fileset"/>
</xs:sequence>
<xs:attribute name="msg"/>
<xs:attribute name="message"/>
<xs:attribute name="file"/>
<xs:attribute name="append" type="xs:boolean"/>
<xs:attribute name="level"/>
</xs:complexType>
</xs:element>
<xs:element name="echoproperties">
<xs:complexType>
<xs:attribute name="srcFile"/>
<xs:attribute name="destFile"/>
<xs:attribute name="prefix"/>
<xs:attribute name="regex"/>
<xs:attribute name="failOnError" type="xs:boolean"/>
<xs:attribute name="format"/>
</xs:complexType>
</xs:element>
<xs:element name="exec">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="arg"/>
</xs:sequence>
<xs:attribute name="command"/>
<xs:attribute name="executable"/>
<xs:attribute name="passthru" type="xs:boolean"/>
<xs:attribute name="checkreturn" type="xs:boolean"/>
<xs:attribute name="dir"/>
<xs:attribute name="os"/>
<xs:attribute name="escape" type="xs:boolean"/>
<xs:attribute name="spawn" type="xs:boolean"/>
<xs:attribute name="returnProperty"/>
<xs:attribute name="outputProperty"/>
<xs:attribute name="logoutput"/>
<xs:attribute name="output"/>
<xs:attribute name="error"/>
<xs:attribute name="level">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="error"/>
<xs:enumeration value="warning"/>
<xs:enumeration value="info"/>
<xs:enumeration value="verbose"/>
<xs:enumeration value="debug"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="argument">
<xs:complexType>
<xs:attribute name="value"/>
<xs:attribute name="line"/>
</xs:complexType>
</xs:element>
<xs:element name="commandline">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="argument"/>
</xs:sequence>
<xs:attribute name="executable" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="exit">
<xs:complexType mixed="true">
<xs:attribute name="message"/>
<xs:attribute name="msg"/>
<xs:attribute name="if"/>
<xs:attribute name="unless"/>
</xs:complexType>
</xs:element>
<xs:element name="fail">
<xs:complexType>
<xs:attribute name="message"/>
<xs:attribute name="msg"/>
<xs:attribute name="if"/>
<xs:attribute name="unless"/>
</xs:complexType>
</xs:element>
<xs:element name="foreach">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fileset"/>
<xs:element ref="mapper"/>
</xs:choice>
<xs:attribute name="target" use="required"/>
<xs:attribute name="param" use="required"/>
<xs:attribute name="list"/>
<xs:attribute name="delimiter"/>
</xs:complexType>
</xs:element>
<xs:element name="if">
<xs:complexType>
<xs:sequence>
<xs:group ref="conditions"/>
<xs:element ref="then"/>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="elseif"/>
<xs:element minOccurs="0" ref="else"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="then">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="coretasks"/>
<xs:group ref="optionaltasks"/>
<xs:group ref="coretypes"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:group name="elseif">
<xs:sequence>
<xs:group ref="conditions"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="coretasks"/>
<xs:group ref="optionaltasks"/>
<xs:group ref="coretypes"/>
</xs:choice>
</xs:sequence>
</xs:group>
<xs:element name="else">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="coretasks"/>
<xs:group ref="optionaltasks"/>
<xs:group ref="coretypes"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="import">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="file" use="required"/>
<xs:attribute name="optional" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="includepath">
<xs:complexType>
<xs:attribute name="classpath"/>
<xs:attribute name="classpathref"/>
</xs:complexType>
</xs:element>
<xs:element name="input">
<xs:complexType mixed="true">
<xs:attribute name="propertyName" use="required"/>
<xs:attribute name="message"/>
<xs:attribute name="defaultValue"/>
<xs:attribute name="promptChar"/>
<xs:attribute name="validArgs"/>
</xs:complexType>
</xs:element>
<xs:element name="loadfile">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="filterchain"/>
</xs:sequence>
<xs:attribute name="property" use="required"/>
<xs:attribute name="file" use="required"/>
<xs:attribute name="failonerror" type="xs:boolean"/>
<xs:attribute name="quiet" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="mkdir">
<xs:complexType>
<xs:attribute name="dir" use="required"/>
<xs:attribute name="mode" type="xs:int"/>
</xs:complexType>
</xs:element>
<xs:element name="move">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fileset"/>
<xs:element ref="filelist"/>
</xs:choice>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="mapper"/>
<xs:element ref="filterchain"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="file"/>
<xs:attribute name="tofile"/>
<xs:attribute name="todir"/>
<xs:attribute name="overwrite" type="xs:boolean"/>
<xs:attribute name="tstamp" type="xs:boolean"/>
<xs:attribute name="preservelastmodified" type="xs:boolean"/>
<xs:attribute name="includeemptydirs" type="xs:boolean"/>
<xs:attribute name="mode" type="xs:int"/>
<xs:attribute name="haltonerror" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="phing">
<xs:complexType>
<xs:sequence>
<xs:group minOccurs="0" ref="property"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="phingfile" use="required"/>
<xs:attribute name="inheritAll" type="xs:boolean"/>
<xs:attribute name="inheritRefs" type="xs:boolean"/>
<xs:attribute name="dir"/>
<xs:attribute name="target"/>
<xs:attribute name="haltonfailure" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:group name="phingversion">
<xs:sequence>
<xs:element name="phingversion">
<xs:complexType>
<xs:attribute name="property" use="required"/>
<xs:attribute name="atLeast"/>
<xs:attribute name="exactly"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="phingcall">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="property"/>
<xs:element ref="param"/>
</xs:choice>
<xs:attribute name="target" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="php">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="param"/>
</xs:sequence>
<xs:attribute name="function"/>
<xs:attribute name="expression"/>
<xs:attribute name="class"/>
<xs:attribute name="returnProperty"/>
<xs:attribute name="level">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="error"/>
<xs:enumeration value="warning"/>
<xs:enumeration value="info"/>
<xs:enumeration value="verbose"/>
<xs:enumeration value="debug"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:group name="property">
<xs:sequence>
<xs:element name="property">
<xs:complexType>
<xs:attribute name="name"/>
<xs:attribute name="value"/>
<xs:attribute name="file"/>
<xs:attribute name="environment"/>
<xs:attribute name="override" type="xs:boolean"/>
<xs:attribute name="prefix"/>
<xs:attribute name="refid"/>
<xs:attribute name="fallback"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="propertyprompt">
<xs:complexType>
<xs:attribute name="propertyName" use="required"/>
<xs:attribute name="promptText" use="required"/>
<xs:attribute name="promptCharacter"/>
<xs:attribute name="defaultValue"/>
<xs:attribute name="useExistingValue"/>
</xs:complexType>
</xs:element>
<xs:element name="record">
<xs:complexType>
<xs:attribute name="name" use="required"/>
<xs:attribute name="action"/>
<xs:attribute name="append" type="xs:boolean"/>
<xs:attribute name="emacsMode" type="xs:boolean"/>
<xs:attribute name="loglevel"/>
</xs:complexType>
</xs:element>
<xs:element name="reflexive">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="filterchain"/>
</xs:sequence>
<xs:attribute name="file"/>
</xs:complexType>
</xs:element>
<xs:element name="resolvepath">
<xs:complexType>
<xs:attribute name="file" use="required"/>
<xs:attribute name="propertyName" use="required"/>
<xs:attribute name="dir"/>
</xs:complexType>
</xs:element>
<xs:element name="retry">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="coretasks"/>
<xs:group ref="optionaltasks"/>
</xs:choice>
<xs:attribute name="retrycount" use="required"/>
<xs:attribute name="retrydelay"/>
</xs:complexType>
</xs:element>
<xs:group name="sleep">
<xs:sequence>
<xs:element name="switch">
<xs:complexType>
<xs:attribute name="failonerror" type="xs:boolean"/>
<xs:attribute name="hours" type="xs:int"/>
<xs:attribute name="minutes" type="xs:int"/>
<xs:attribute name="seconds" type="xs:int"/>
<xs:attribute name="milliseconds" type="xs:int"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="switch">
<xs:sequence>
<xs:element name="switch">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="case"/>
<xs:element ref="default"/>
</xs:choice>
<xs:attribute name="value" use="required"/>
<xs:attribute name="caseInsensitive" type="xs:boolean"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="case">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:group ref="coretasks"/>
<xs:group ref="optionaltasks"/>
</xs:sequence>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="default">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:group ref="coretasks"/>
<xs:group ref="optionaltasks"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="taskdef">
<xs:complexType>
<xs:attribute name="classname"/>
<xs:attribute name="name"/>
<xs:attribute name="file"/>
<xs:attribute name="classpath"/>
<xs:attribute name="classpathref"/>
</xs:complexType>
</xs:element>
<xs:element name="tempfile">
<xs:complexType>
<xs:attribute name="property" use="required"/>
<xs:attribute name="destDir"/>
<xs:attribute name="prefix"/>
<xs:attribute name="suffix"/>
<xs:attribute name="deleteOnExit" type="xs:boolean"/>
<xs:attribute name="createFile" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="touch">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="fileset"/>
</xs:sequence>
<xs:attribute name="file"/>
<xs:attribute name="datetime"/>
<xs:attribute name="millis" type="xs:int"/>
<xs:attribute name="mkdirs" type="xs:boolean"/>
<xs:attribute name="verbose" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="truncate">
<xs:complexType>
<xs:attribute name="file" use="required"/>
<xs:attribute name="adjust"/>
<xs:attribute name="length"/>
<xs:attribute name="create" default="true" type="xs:boolean"/>
<xs:attribute name="mkdirs" default="false" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="trycatch">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="try"/>
<xs:element ref="catch"/>
<xs:element ref="finally"/>
</xs:choice>
<xs:attribute name="property"/>
</xs:complexType>
</xs:element>
<xs:element name="try">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:group ref="coretasks"/>
<xs:group ref="optionaltasks"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="catch">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:group ref="coretasks"/>
<xs:group ref="optionaltasks"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="finally">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:group ref="coretasks"/>
<xs:group ref="optionaltasks"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="tstamp">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="format"/>
</xs:sequence>
<xs:attribute name="prefix"/>
</xs:complexType>
</xs:element>
<xs:element name="format">
<xs:complexType>
<xs:attribute name="property" use="required"/>
<xs:attribute name="pattern" use="required"/>
<xs:attribute name="locale"/>
</xs:complexType>
</xs:element>
<xs:element name="typedef">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="classpath"/>
</xs:sequence>
<xs:attribute name="classname" use="required"/>
<xs:attribute name="name" use="required"/>
<xs:attribute name="classpath"/>
<xs:attribute name="classpathref"/>
</xs:complexType>
</xs:element>
<xs:element name="uptodate">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fileset"/>
<xs:element ref="mapper"/>
</xs:choice>
<xs:attribute name="property" use="required"/>
<xs:attribute name="value"/>
<xs:attribute name="srcfile"/>
<xs:attribute name="targetfile"/>
</xs:complexType>
</xs:element>
<xs:element name="xslt">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fileset"/>
<xs:element ref="filelist"/>
</xs:choice>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="mapper"/>
<xs:element ref="filterchain"/>
<xs:element ref="param"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="style" use="required"/>
<xs:attribute name="file"/>
<xs:attribute name="tofile"/>
<xs:attribute name="todir"/>
<xs:attribute name="overwrite" type="xs:boolean"/>
<xs:attribute name="tstamp" type="xs:boolean"/>
<xs:attribute name="preservelastmodified" type="xs:boolean"/>
<xs:attribute name="includeemptydirs" type="xs:boolean"/>
<xs:attribute name="mode" type="xs:int"/>
<xs:attribute name="haltonerror" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="waitfor">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="not"/>
<xs:element ref="equals"/>
<xs:element ref="or"/>
<xs:element ref="and"/>
<xs:element ref="isfalse"/>
<xs:element ref="istrue"/>
<xs:element ref="isset"/>
<xs:group ref="contains_cond"/>
</xs:sequence>
<xs:attribute name="maxwait" use="required" type="xs:int"/>
<xs:attribute name="maxwaitunit" default="millisecond">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="week"/>
<xs:enumeration value="day"/>
<xs:enumeration value="hour"/>
<xs:enumeration value="minute"/>
<xs:enumeration value="second"/>
<xs:enumeration value="millisecond"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="checkevery" use="required" type="xs:int"/>
<xs:attribute name="checkeveryunit" default="millisecond">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="week"/>
<xs:enumeration value="day"/>
<xs:enumeration value="hour"/>
<xs:enumeration value="minute"/>
<xs:enumeration value="second"/>
<xs:enumeration value="millisecond"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="timeoutproperty"/>
</xs:complexType>
</xs:element>
<xs:element name="warn">
<xs:complexType>
<xs:attribute name="msg"/>
<xs:attribute name="message"/>
<xs:attribute name="file"/>
<xs:attribute name="append" type="xs:boolean"/>
<xs:attribute name="level"/>
</xs:complexType>
</xs:element>
<!--
===========================================================================================================
Optional Type
===========================================================================================================
-->
<xs:element name="analyzer">
<xs:complexType>
<xs:attribute name="type" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="logger">
<xs:complexType>
<xs:attribute name="type" use="required"/>
<xs:attribute name="outfile" use="required"/>
</xs:complexType>
</xs:element>
<!--
===========================================================================================================
Optional Tasks
===========================================================================================================
-->
<xs:element name="autoloader">
<xs:complexType>
<xs:attribute name="autoloaderpath" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="capsule">
<xs:complexType>
<xs:attribute name="controlTemplate" use="required" type="xs:string"/>
<xs:attribute name="templatePath" use="required" type="xs:string"/>
<xs:attribute name="outputDirectory" use="required" type="xs:string"/>
<xs:attribute name="outputFile" use="required" type="xs:string"/>
<xs:attribute name="contextProperties" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="composer">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="arg"/>
</xs:sequence>
<xs:attribute name="php"/>
<xs:attribute name="composer"/>
<xs:attribute name="command"/>
</xs:complexType>
</xs:element>
<!--
=========================================
ApiGenTask
=========================================
-->
<xs:element name="apigen">
<xs:complexType>
<xs:attribute name="executable"/>
<xs:attribute name="action"/>
<xs:attribute name="config"/>
<xs:attribute name="source"/>
<xs:attribute name="destination"/>
<xs:attribute name="extensions"/>
<xs:attribute name="exclude"/>
<xs:attribute name="skipdocpath"/>
<xs:attribute name="skipdocprefix"/>
<xs:attribute name="charset"/>
<xs:attribute name="main"/>
<xs:attribute name="title"/>
<xs:attribute name="baseurl"/>
<xs:attribute name="googlecseid"/>
<xs:attribute name="googlecselabel"/>
<xs:attribute name="googleanalytics"/>
<xs:attribute name="templateconfig"/>
<xs:attribute name="templatetheme"/>
<xs:attribute name="allowedhtml"/>
<xs:attribute name="groups"/>
<xs:attribute name="autocomplete"/>
<xs:attribute name="accesslevels"/>
<xs:attribute name="annotationgroups" type="xs:string"/>
<xs:attribute name="internal" type="xs:boolean"/>
<xs:attribute name="php" type="xs:boolean"/>
<xs:attribute name="tree" type="xs:boolean"/>
<xs:attribute name="deprecated" type="xs:boolean"/>
<xs:attribute name="todo" type="xs:boolean"/>
<xs:attribute name="nosourcecode" type="xs:boolean"/>
<xs:attribute name="download" type="xs:boolean"/>
<xs:attribute name="report"/>
<xs:attribute name="wipeout" type="xs:boolean"/>
<xs:attribute name="quiet" type="xs:boolean"/>
<xs:attribute name="updatecheck" type="xs:boolean"/>
<xs:attribute name="debug" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
CoverageMergerTask
=========================================
-->
<xs:element name="coverage-merger">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
=========================================
CoverageReportTask
=========================================
-->
<xs:element name="coverage-report">
<xs:complexType>
<xs:complexContent>
<xs:extension base="report">
<xs:attribute name="outfile" use="required"/>
<xs:attribute name="classpath"/>
<xs:attribute name="geshipath"/>
<xs:attribute name="geshilanguagespath"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="report">
<xs:sequence>
<xs:element ref="report"/>
</xs:sequence>
</xs:complexType>
<xs:element name="report">
<xs:complexType>
<xs:attribute name="todir" use="required"/>
<xs:attribute name="styledir"/>
<xs:attribute name="title"/>
<xs:attribute name="usesorttable"/>
</xs:complexType>
</xs:element>
<!--
=========================================
CoverageSetupTask
=========================================
-->
<xs:element name="coverage-setup">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fileset"/>
<xs:element ref="filelist"/>
<xs:element ref="classpath"/>
</xs:choice>
<xs:attribute name="database" use="required"/>
</xs:complexType>
</xs:element>
<!--
=========================================
CoverageThresholdTask
=========================================
-->
<xs:element name="coverage-threshold">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="classpath"/>
<xs:element ref="excludes"/>
</xs:sequence>
<xs:attribute name="database" type="xs:string"/>
<xs:attribute name="perProject" type="xs:int"/>
<xs:attribute name="perClass" type="xs:int"/>
<xs:attribute name="perMethod" type="xs:int"/>
<xs:attribute name="verbose" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
DbDeployTask
=========================================
-->
<xs:element name="dbdeploy">
<xs:complexType>
<xs:attribute name="url" use="required"/>
<xs:attribute name="dir" use="required"/>
<xs:attribute name="userid"/>
<xs:attribute name="password"/>
<xs:attribute name="outputfile"/>
<xs:attribute name="undooutputfile"/>
<xs:attribute name="deltaset"/>
<xs:attribute name="lastchangetoapply" type="xs:int"/>
<xs:attribute name="appliedBy"/>
<xs:attribute name="checkall"/>
</xs:complexType>
</xs:element>
<!--
=========================================
ExportPropertiesTask
=========================================
-->
<xs:element name="exportproperties">
<xs:complexType>
<xs:attribute name="targetfile" use="required"/>
<xs:attribute name="disallowedpropertyprefixes"/>
</xs:complexType>
</xs:element>
<!--
=========================================
FileHashTask
=========================================
-->
<xs:element name="filehash">
<xs:complexType>
<xs:attribute name="file" use="required"/>
<xs:attribute name="hashtype">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="0"/>
<xs:enumeration value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="algorithm"/>
<xs:attribute name="propertyname"/>
</xs:complexType>
</xs:element>
<!--
=========================================
FileSizeTask
=========================================
-->
<xs:element name="filesize">
<xs:complexType>
<xs:attribute name="file" use="required"/>
<xs:attribute name="propertyname"/>
</xs:complexType>
</xs:element>
<xs:element name="filesync">
<xs:complexType>
<xs:attribute name="rsyncPath" use="required"/>
<xs:attribute name="sourceDir" use="required"/>
<xs:attribute name="destinationDir" use="required"/>
<xs:attribute name="exclude"/>
<xs:attribute name="excludeFile"/>
<xs:attribute name="backupDir"/>
<xs:attribute name="options"/>
<xs:attribute name="verbose" type="xs:boolean"/>
<xs:attribute name="dryRun" type="xs:boolean"/>
<xs:attribute name="itemizeChanges" type="xs:boolean"/>
<xs:attribute name="checksum" type="xs:boolean"/>
<xs:attribute name="delete" type="xs:boolean"/>
<xs:attribute name="identityFile"/>
</xs:complexType>
</xs:element>
<!--
=========================================
FtpDeployTask
=========================================
-->
<xs:element name="ftpdeploy">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="host" use="required"/>
<xs:attribute name="username" use="required"/>
<xs:attribute name="password" use="required"/>
<xs:attribute name="port" type="xs:int"/>
<xs:attribute name="depends" type="xs:boolean"/>
<xs:attribute name="dir"/>
<xs:attribute name="dirmode"/>
<xs:attribute name="filemode"/>
<xs:attribute name="mode">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="ascii"/>
<xs:enumeration value="binary"/>
<xs:enumeration value="bin"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="clearfirst" type="xs:boolean"/>
<xs:attribute name="passive" type="xs:boolean"/>
<xs:attribute name="rawdatafallback" type="xs:boolean"/>
<xs:attribute name="skipOnSameSize" type="xs:boolean"/>
<xs:attribute name="ssl" type="xs:boolean"/>
<xs:attribute name="level">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="error"/>
<xs:enumeration value="warning"/>
<xs:enumeration value="info"/>
<xs:enumeration value="verbose"/>
<xs:enumeration value="debug"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<!--
=========================================
git Manipulation tasks
=========================================
-->
<xs:element name="gitbranch">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="branchname" use="required"/>
<xs:attribute name="newbranch"/>
<xs:attribute name="startpoint"/>
<xs:attribute name="setupstream"/>
<xs:attribute name="track" type="xs:boolean"/>
<xs:attribute name="notrack" type="xs:boolean"/>
<xs:attribute name="force" type="xs:boolean"/>
<xs:attribute name="move" type="xs:boolean"/>
<xs:attribute name="forcemove" type="xs:boolean"/>
<xs:attribute name="delete" type="xs:boolean"/>
<xs:attribute name="forcedelete" type="xs:boolean"/>
<xs:attribute name="gitpath"/>
</xs:complexType>
</xs:element>
<xs:element name="gitcheckout">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="gitpath"/>
<xs:attribute name="forcecreate" type="xs:boolean"/>
<xs:attribute name="create" type="xs:boolean"/>
<xs:attribute name="merge" type="xs:boolean"/>
<xs:attribute name="track" type="xs:boolean"/>
<xs:attribute name="notrack" type="xs:boolean"/>
<xs:attribute name="quiet" type="xs:boolean"/>
<xs:attribute name="force" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="gitclone">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="targetpath" use="required"/>
<xs:attribute name="gitpath"/>
<xs:attribute name="bare" type="xs:boolean"/>
<xs:attribute name="depth" type="xs:int"/>
<xs:attribute name="singleBranch" type="xs:boolean"/>
<xs:attribute name="branch" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="gitcommit">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="gitpath"/>
<xs:attribute name="message"/>
<xs:attribute name="allFiles" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="gitdescribe">
<xs:complexType>
<xs:attribute name="repository" use="required" type="xs:string"/>
<xs:attribute name="all" type="xs:boolean"/>
<xs:attribute name="always" type="xs:boolean"/>
<xs:attribute name="tags" type="xs:boolean"/>
<xs:attribute name="contains" type="xs:boolean"/>
<xs:attribute name="abbrev" type="xs:int"/>
<xs:attribute name="candidates" type="xs:int"/>
<xs:attribute name="committish" type="xs:string"/>
<xs:attribute name="long" type="xs:boolean"/>
<xs:attribute name="match" type="xs:string"/>
<xs:attribute name="outputProperty" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="gitfetch">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="gitpath"/>
<xs:attribute name="source"/>
<xs:attribute name="refspec"/>
<xs:attribute name="group"/>
<xs:attribute name="quiet" type="xs:boolean"/>
<xs:attribute name="all" type="xs:boolean"/>
<xs:attribute name="keep" type="xs:boolean"/>
<xs:attribute name="prune" type="xs:boolean"/>
<xs:attribute name="tags" type="xs:boolean"/>
<xs:attribute name="notags" type="xs:boolean"/>
<xs:attribute name="force" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="gitgc">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="gitpath"/>
<xs:attribute name="aggressive" type="xs:boolean"/>
<xs:attribute name="auto" type="xs:boolean"/>
<xs:attribute name="noprune" type="xs:boolean"/>
<xs:attribute name="prune"/>
</xs:complexType>
</xs:element>
<xs:element name="gitinit">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="gitpath"/>
<xs:attribute name="bare" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="gitlog">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="gitpath"/>
<xs:attribute name="outputproperty"/>
<xs:attribute name="paths"/>
<xs:attribute name="format"/>
<xs:attribute name="date"/>
<xs:attribute name="since"/>
<xs:attribute name="until"/>
<xs:attribute name="stat"/>
<xs:attribute name="namestatus" type="xs:boolean"/>
<xs:attribute name="maxcount" type="xs:int"/>
<xs:attribute name="nomerges" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="gitmerge">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="gitpath"/>
<xs:attribute name="remote"/>
<xs:attribute name="message"/>
<xs:attribute name="strategy"/>
<xs:attribute name="strategyoption"/>
<xs:attribute name="commit" type="xs:boolean"/>
<xs:attribute name="nocommit" type="xs:boolean"/>
<xs:attribute name="fastforwardcommit" type="xs:boolean"/>
<xs:attribute name="quiet" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="gitpull">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="gitpath"/>
<xs:attribute name="all"/>
<xs:attribute name="source"/>
<xs:attribute name="refspec"/>
<xs:attribute name="strategy"/>
<xs:attribute name="strategyoption"/>
<xs:attribute name="quiet" type="xs:boolean"/>
<xs:attribute name="force" type="xs:boolean"/>
<xs:attribute name="append" type="xs:boolean"/>
<xs:attribute name="keepfiles" type="xs:boolean"/>
<xs:attribute name="notags" type="xs:boolean"/>
<xs:attribute name="tags" type="xs:boolean"/>
<xs:attribute name="norebase" type="xs:boolean"/>
<xs:attribute name="rebase" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="gitpush">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="gitpath"/>
<xs:attribute name="all"/>
<xs:attribute name="destination"/>
<xs:attribute name="refspec"/>
<xs:attribute name="mirror" type="xs:boolean"/>
<xs:attribute name="delete" type="xs:boolean"/>
<xs:attribute name="tags" type="xs:boolean"/>
<xs:attribute name="quiet" type="xs:boolean"/>
<xs:attribute name="force" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="gittag">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="gitpath"/>
<xs:attribute name="message"/>
<xs:attribute name="name"/>
<xs:attribute name="commit"/>
<xs:attribute name="object"/>
<xs:attribute name="pattern"/>
<xs:attribute name="outputproperty"/>
<xs:attribute name="file"/>
<xs:attribute name="num" type="xs:int"/>
<xs:attribute name="contains"/>
<xs:attribute name="keysign"/>
<xs:attribute name="verify" type="xs:boolean"/>
<xs:attribute name="sign" type="xs:boolean"/>
<xs:attribute name="list" type="xs:boolean"/>
<xs:attribute name="delete" type="xs:boolean"/>
<xs:attribute name="force" type="xs:boolean"/>
<xs:attribute name="annotate" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="growlnotify">
<xs:complexType>
<xs:attribute name="name"/>
<xs:attribute name="sticky" type="xs:boolean"/>
<xs:attribute name="message" use="required"/>
<xs:attribute name="title"/>
<xs:attribute name="notification"/>
<xs:attribute name="appIcon"/>
<xs:attribute name="host"/>
<xs:attribute name="password"/>
<xs:attribute name="priority"/>
<xs:attribute name="protocol"/>
<xs:attribute name="icon"/>
</xs:complexType>
</xs:element>
<!--
=========================================
Http manipulation
=========================================
-->
<xs:group name="header">
<xs:sequence>
<xs:element name="header">
<xs:complexType>
<xs:attribute name="name" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="postparameter">
<xs:complexType>
<xs:attribute name="name" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="hgadd">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="repository" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="hgcommit">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="message"/>
<xs:attribute name="user"/>
</xs:complexType>
</xs:element>
<xs:element name="hgpull">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="hgpush">
<xs:complexType>
<xs:attribute name="repository"/>
<xs:attribute name="haltonerror" type="xs:boolean"/>
<xs:attribute name="insecure" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="hglog">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="format"/>
<xs:attribute name="maxCount" type="xs:int"/>
<xs:attribute name="outputProperty" type="xs:string"/>
<xs:attribute name="revision"/>
<xs:attribute name="quiet"/>
</xs:complexType>
</xs:element>
<xs:element name="hgupdate">
<xs:complexType>
<xs:attribute name="repository" use="required"/>
<xs:attribute name="branch" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="httpget">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="config"/>
<xs:group ref="header"/>
</xs:choice>
<xs:attribute name="url" use="required"/>
<xs:attribute name="dir" use="required"/>
<xs:attribute name="filename"/>
<xs:attribute name="followredirects" type="xs:boolean"/>
<xs:attribute name="proxy"/>
<xs:attribute name="sslverifypeer" type="xs:boolean"/>
<xs:attribute name="authuser"/>
<xs:attribute name="authpassword"/>
<xs:attribute name="authschema"/>
</xs:complexType>
</xs:element>
<xs:element name="httprequest">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="config"/>
<xs:group ref="header"/>
<xs:element ref="postparameter"/>
</xs:choice>
<xs:attribute name="url" use="required"/>
<xs:attribute name="responseregex"/>
<xs:attribute name="authuser"/>
<xs:attribute name="authpassword"/>
<xs:attribute name="authschema"/>
<xs:attribute name="verbose" type="xs:boolean"/>
<xs:attribute name="observerevents"/>
<xs:attribute name="method"/>
</xs:complexType>
</xs:element>
<xs:element name="inifile">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="remove"/>
<xs:element ref="set"/>
</xs:choice>
<xs:attribute name="dest"/>
<xs:attribute name="haltOnError"/>
<xs:attribute name="source"/>
</xs:complexType>
</xs:element>
<xs:element name="remove">
<xs:complexType>
<xs:attribute name="section" use="required"/>
<xs:attribute name="property"/>
</xs:complexType>
</xs:element>
<xs:element name="set">
<xs:complexType>
<xs:attribute name="section" use="required"/>
<xs:attribute name="property" use="required"/>
<xs:attribute name="operation"/>
<xs:attribute name="value"/>
</xs:complexType>
</xs:element>
<!--
=========================================
IoncubeEncoderTask
=========================================
-->
<xs:element name="ioncubeencoder">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="comment"/>
</xs:sequence>
<xs:attribute name="ignore" use="required"/>
<xs:attribute name="fromdir" use="required"/>
<xs:attribute name="todir" use="required"/>
<xs:attribute name="allowedserver"/>
<xs:attribute name="binary" type="xs:boolean"/>
<xs:attribute name="copy"/>
<xs:attribute name="encode"/>
<xs:attribute name="encrypt"/>
<xs:attribute name="expirein"/>
<xs:attribute name="expireon"/>
<xs:attribute name="ioncubepath"/>
<xs:attribute name="keep"/>
<xs:attribute name="licensepath"/>
<xs:attribute name="nodocomments"/>
<xs:attribute name="obfuscation-key"/>
<xs:attribute name="obfuscate"/>
<xs:attribute name="optimize"/>
<xs:attribute name="passphrase"/>
<xs:attribute name="phpversion" type="xs:int"/>
<xs:attribute name="targetoption"/>
<xs:attribute name="withoutruntimeloadersupport" type="xs:boolean"/>
<xs:attribute name="noshortopentags" type="xs:boolean"/>
<xs:attribute name="callbackfile"/>
<xs:attribute name="obfuscationexclusionfile"/>
<xs:attribute name="ignoredeprecatedwarnings" type="xs:boolean"/>
<xs:attribute name="ignorestrictwarnings" type="xs:boolean"/>
<xs:attribute name="allowencodingintosource" type="xs:boolean"/>
<xs:attribute name="messageifnoloader"/>
<xs:attribute name="actionifnoloader"/>
<xs:attribute name="showcommandline" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
IoncubeLicenseTask
=========================================
-->
<xs:element name="ioncubelicense">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="comment"/>
</xs:sequence>
<xs:attribute name="licensepath"/>
<xs:attribute name="ioncubepath"/>
<xs:attribute name="passphrase"/>
<xs:attribute name="allowedserver"/>
<xs:attribute name="expirein"/>
<xs:attribute name="expireon"/>
</xs:complexType>
</xs:element>
<xs:element name="jshint">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="fileset"/>
</xs:sequence>
<xs:attribute name="file"/>
<xs:attribute name="haltOnError" type="xs:boolean"/>
<xs:attribute name="haltOnWarning" type="xs:boolean"/>
<xs:attribute name="reporter"/>
<xs:attribute name="checkstyleReportPath"/>
</xs:complexType>
</xs:element>
<!--
=========================================
JslLintTask
=========================================
-->
<xs:element name="jsllint">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="fileset"/>
</xs:sequence>
<xs:attribute name="executable"/>
<xs:attribute name="file"/>
<xs:attribute name="haltonfailure" type="xs:boolean"/>
<xs:attribute name="showwarnings" type="xs:boolean"/>
<xs:attribute name="cachefile"/>
<xs:attribute name="conffile"/>
<xs:attribute name="tofile"/>
</xs:complexType>
</xs:element>
<!--
=========================================
JsMinTask
=========================================
-->
<xs:element name="jsmin">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="targetdir" use="required"/>
<xs:attribute name="suffix"/>
<xs:attribute name="failonerror" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
Liquibase tasks
=========================================
-->
<xs:element name="liquibase">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="parameter"/>
<xs:group ref="liquibase-property"/>
</xs:choice>
<xs:attribute name="jar" use="required"/>
<xs:attribute name="classpath" use="required"/>
<xs:attribute name="changeLogFile" use="required"/>
<xs:attribute name="username" use="required"/>
<xs:attribute name="password" use="required"/>
<xs:attribute name="url" use="required"/>
<xs:attribute name="command" use="required"/>
<xs:attribute name="display" type="xs:boolean"/>
<xs:attribute name="passthru" type="xs:boolean"/>
<xs:attribute name="checkreturn" type="xs:boolean"/>
<xs:attribute name="outputProperty"/>
</xs:complexType>
</xs:element>
<xs:element name="parameter">
<xs:complexType>
<xs:attribute name="name" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:group name="liquibase-property">
<xs:sequence>
<xs:element name="property">
<xs:complexType>
<xs:attribute name="name" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="liquibase-changelog">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="parameter"/>
<xs:group ref="liquibase-property"/>
</xs:choice>
<xs:attribute name="jar" use="required"/>
<xs:attribute name="classpath" use="required"/>
<xs:attribute name="changeLogFile" use="required"/>
<xs:attribute name="username" use="required"/>
<xs:attribute name="password" use="required"/>
<xs:attribute name="url" use="required"/>
<xs:attribute name="display" type="xs:boolean"/>
<xs:attribute name="passthru" type="xs:boolean"/>
<xs:attribute name="checkreturn" type="xs:boolean"/>
<xs:attribute name="outputProperty"/>
</xs:complexType>
</xs:element>
<xs:element name="liquibase-dbdoc">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="parameter"/>
<xs:group ref="liquibase-property"/>
</xs:choice>
<xs:attribute name="jar" use="required"/>
<xs:attribute name="classpath" use="required"/>
<xs:attribute name="changeLogFile" use="required"/>
<xs:attribute name="username" use="required"/>
<xs:attribute name="password" use="required"/>
<xs:attribute name="url" use="required"/>
<xs:attribute name="outputDir" use="required"/>
<xs:attribute name="display" type="xs:boolean"/>
<xs:attribute name="passthru" type="xs:boolean"/>
<xs:attribute name="checkreturn" type="xs:boolean"/>
<xs:attribute name="outputProperty"/>
</xs:complexType>
</xs:element>
<xs:element name="liquibase-diff">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="parameter"/>
<xs:group ref="liquibase-property"/>
</xs:choice>
<xs:attribute name="jar" use="required"/>
<xs:attribute name="classpath" use="required"/>
<xs:attribute name="changeLogFile" use="required"/>
<xs:attribute name="username" use="required"/>
<xs:attribute name="password" use="required"/>
<xs:attribute name="url" use="required"/>
<xs:attribute name="referenceUsername" use="required"/>
<xs:attribute name="referencePassword" use="required"/>
<xs:attribute name="referenceUrl" use="required"/>
<xs:attribute name="display" type="xs:boolean"/>
<xs:attribute name="passthru" type="xs:boolean"/>
<xs:attribute name="checkreturn" type="xs:boolean"/>
<xs:attribute name="outputProperty"/>
</xs:complexType>
</xs:element>
<xs:element name="liquibase-rollback">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="parameter"/>
<xs:group ref="liquibase-property"/>
</xs:choice>
<xs:attribute name="jar" use="required"/>
<xs:attribute name="classpath" use="required"/>
<xs:attribute name="changeLogFile" use="required"/>
<xs:attribute name="username" use="required"/>
<xs:attribute name="password" use="required"/>
<xs:attribute name="url" use="required"/>
<xs:attribute name="rollbackTag" use="required"/>
<xs:attribute name="display" type="xs:boolean"/>
<xs:attribute name="passthru" type="xs:boolean"/>
<xs:attribute name="checkreturn" type="xs:boolean"/>
<xs:attribute name="outputProperty"/>
</xs:complexType>
</xs:element>
<xs:element name="liquibase-tag">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="parameter"/>
<xs:group ref="liquibase-property"/>
</xs:choice>
<xs:attribute name="jar" use="required"/>
<xs:attribute name="classpath" use="required"/>
<xs:attribute name="changeLogFile" use="required"/>
<xs:attribute name="username" use="required"/>
<xs:attribute name="password" use="required"/>
<xs:attribute name="url" use="required"/>
<xs:attribute name="tag" use="required"/>
<xs:attribute name="display" type="xs:boolean"/>
<xs:attribute name="passthru" type="xs:boolean"/>
<xs:attribute name="checkreturn" type="xs:boolean"/>
<xs:attribute name="outputProperty"/>
</xs:complexType>
</xs:element>
<xs:element name="liquibase-update">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="parameter"/>
<xs:group ref="liquibase-property"/>
</xs:choice>
<xs:attribute name="jar" use="required"/>
<xs:attribute name="classpath" use="required"/>
<xs:attribute name="changeLogFile" use="required"/>
<xs:attribute name="username" use="required"/>
<xs:attribute name="password" use="required"/>
<xs:attribute name="url" use="required"/>
<xs:attribute name="display" type="xs:boolean"/>
<xs:attribute name="passthru" type="xs:boolean"/>
<xs:attribute name="checkreturn" type="xs:boolean"/>
<xs:attribute name="outputProperty"/>
</xs:complexType>
</xs:element>
<!--
=========================================
MailTask
=========================================
-->
<xs:element name="mail">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="from" use="required"/>
<xs:attribute name="tolist" use="required"/>
<xs:attribute name="message"/>
<xs:attribute name="subject"/>
</xs:complexType>
</xs:element>
<xs:element name="manifest">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="salt"/>
<xs:attribute name="checksum"/>
<xs:attribute name="file" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="notifysend">
<xs:complexType>
<xs:attribute name="icon"/>
<xs:attribute name="message" use="required"/>
<xs:attribute name="title"/>
</xs:complexType>
</xs:element>
<xs:element name="packageaspath">
<xs:complexType>
<xs:attribute name="package" use="required"/>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="parallel">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:group ref="coretasks"/>
<xs:group ref="optionaltasks"/>
</xs:sequence>
<xs:attribute name="threadCount"/>
</xs:complexType>
</xs:element>
<!--
=========================================
PatchTask
=========================================
-->
<xs:element name="patch">
<xs:complexType>
<xs:attribute name="patchfile" use="required"/>
<xs:attribute name="originalfile"/>
<xs:attribute name="destfile"/>
<xs:attribute name="backups" type="xs:boolean"/>
<xs:attribute name="quiet" type="xs:boolean"/>
<xs:attribute name="reverse" type="xs:boolean"/>
<xs:attribute name="ignorewhitespace" type="xs:boolean"/>
<xs:attribute name="strip" type="xs:int"/>
<xs:attribute name="haltonfailure" type="xs:boolean"/>
<xs:attribute name="dir"/>
</xs:complexType>
</xs:element>
<xs:element name="pathtofileset">
<xs:complexType>
<xs:attribute name="dir" use="required"/>
<xs:attribute name="pathRefId" use="required"/>
<xs:attribute name="ignoreNonRelative" type="xs:boolean"/>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<!--
=========================================
PDOSQLExecTask
=========================================
-->
<xs:element name="pdosqlexec">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="transaction"/>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="formatter"/>
</xs:sequence>
<xs:attribute name="url" use="required"/>
<xs:attribute name="userid"/>
<xs:attribute name="password"/>
<xs:attribute name="encoding"/>
<xs:attribute name="src"/>
<xs:attribute name="onerror"/>
<xs:attribute name="delimiter"/>
<xs:attribute name="delimitertype"/>
<xs:attribute name="autocommit" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="transaction">
<xs:complexType>
<xs:attribute name="tsrcfile"/>
</xs:complexType>
</xs:element>
<xs:group name="formatter">
<xs:sequence>
<xs:element name="formatter">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="param"/>
</xs:sequence>
<xs:attribute name="type"/>
<xs:attribute name="classname"/>
<xs:attribute name="usefile" type="xs:boolean"/>
<xs:attribute name="outfile"/>
<xs:attribute name="output"/>
<xs:attribute name="showheaders" type="xs:boolean"/>
<xs:attribute name="coldelim"/>
<xs:attribute name="rowdelim"/>
<xs:attribute name="encoding"/>
<xs:attribute name="formatoutput" type="xs:boolean"/>
<xs:attribute name="todir"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<!--
=========================================
PearPackageTask
=========================================
-->
<xs:element name="pearpkg">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fileset"/>
<xs:element ref="mapping"/>
<xs:element ref="option"/>
</xs:choice>
<xs:attribute name="name" use="required"/>
<xs:attribute name="dir" use="required"/>
<xs:attribute name="destFile"/>
</xs:complexType>
</xs:element>
<!--
=========================================
PearPackage2Task
=========================================
-->
<xs:element name="pearpkg2">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fileset"/>
<xs:element ref="mapping"/>
<xs:element ref="option"/>
</xs:choice>
<xs:attribute name="name" use="required"/>
<xs:attribute name="dir" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="option">
<xs:complexType mixed="true">
<xs:attribute name="name" use="required"/>
<xs:attribute name="value"/>
</xs:complexType>
</xs:element>
<xs:element name="mapping">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="element"/>
</xs:sequence>
<xs:attribute name="name"/>
</xs:complexType>
</xs:element>
<xs:element name="element">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="element"/>
</xs:sequence>
<xs:attribute name="key"/>
<xs:attribute name="name"/>
<xs:attribute name="value"/>
</xs:complexType>
</xs:element>
<xs:element name="phardata">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="baseDir" use="required"/>
<xs:attribute name="destFile" use="required"/>
<xs:attribute name="compression"/>
</xs:complexType>
</xs:element>
<!--
=========================================
PharPackageTask
=========================================
-->
<xs:element name="pharpackage">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="fileset"/>
<xs:element minOccurs="0" ref="metadata"/>
</xs:sequence>
<xs:attribute name="basedir" use="required"/>
<xs:attribute name="destfile" use="required"/>
<xs:attribute name="compression"/>
<xs:attribute name="webstub"/>
<xs:attribute name="clistub"/>
<xs:attribute name="stub"/>
<xs:attribute name="alias"/>
<xs:attribute name="signature"/>
</xs:complexType>
</xs:element>
<xs:element name="metadata">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="element"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
=========================================
PhkPackageTask
=========================================
-->
<xs:element name="phkpackage">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="webaccess"/>
</xs:sequence>
<xs:attribute name="phkcreatorpath" use="required"/>
<xs:attribute name="inputdirectory" use="required"/>
<xs:attribute name="outputfile" use="required"/>
<xs:attribute name="compress"/>
<xs:attribute name="strip" type="xs:boolean"/>
<xs:attribute name="name"/>
<xs:attribute name="webrunscript"/>
<xs:attribute name="crccheck"/>
</xs:complexType>
</xs:element>
<xs:element name="webaccess">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="path"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
=========================================
PhpCodeSnifferTask
=========================================
-->
<xs:element name="phpcodesniffer">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fileset"/>
<xs:choice>
<xs:element ref="config"/>
<xs:group ref="formatter"/>
</xs:choice>
</xs:choice>
<xs:attribute name="standard"/>
<xs:attribute name="format"/>
<xs:attribute name="showSniffs" type="xs:boolean"/>
<xs:attribute name="showWarnings" type="xs:boolean"/>
<xs:attribute name="showSources" type="xs:boolean"/>
<xs:attribute name="file"/>
<xs:attribute name="sniffs"/>
<xs:attribute name="verbosity"/>
<xs:attribute name="tabwidth" type="xs:int"/>
<xs:attribute name="reportwidth" type="xs:int"/>
<xs:attribute name="docgenerator"/>
<xs:attribute name="docfile"/>
<xs:attribute name="allowedFileExtensions"/>
<xs:attribute name="allowedTypes"/>
<xs:attribute name="ignorePatterns"/>
<xs:attribute name="nosubdirectories" type="xs:boolean"/>
<xs:attribute name="haltonerror" type="xs:boolean"/>
<xs:attribute name="haltonwarning" type="xs:boolean"/>
<xs:attribute name="skipversioncheck" type="xs:boolean"/>
<xs:attribute name="cachefile"/>
</xs:complexType>
</xs:element>
<xs:element name="config">
<xs:complexType>
<xs:attribute name="name" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<!--
=========================================
PhpDocumentorTask
=========================================
-->
<xs:element name="phpdocumentor">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fileset"/>
<xs:element ref="projdocfileset"/>
</xs:choice>
<xs:attribute name="title"/>
<xs:attribute name="destdir"/>
<xs:attribute name="target"/>
<xs:attribute name="output"/>
<xs:attribute name="sourcecode" type="xs:boolean"/>
<xs:attribute name="examplesdir"/>
<xs:attribute name="parseprivate" type="xs:boolean"/>
<xs:attribute name="javadocdesc" type="xs:boolean"/>
<xs:attribute name="quiet" type="xs:boolean"/>
<xs:attribute name="packageoutput"/>
<xs:attribute name="ignoretags"/>
<xs:attribute name="defaultpackagename"/>
<xs:attribute name="defaultcategoryname"/>
<xs:attribute name="pear"/>
<xs:attribute name="templatebase"/>
<xs:attribute name="undocumentedelements"/>
<xs:attribute name="customtags"/>
</xs:complexType>
</xs:element>
<!--
=========================================
PHPLocTask
=========================================
-->
<xs:element name="phploc">
<xs:complexType>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="formatter"/>
<xs:attribute name="reportType"/>
<xs:attribute name="reportName"/>
<xs:attribute name="reportDirectory"/>
<xs:attribute name="countTests" type="xs:boolean"/>
<xs:attribute name="file"/>
<xs:attribute name="suffixes"/>
</xs:complexType>
</xs:element>
<!--
=========================================
PHPMDTask
=========================================
-->
<xs:element name="phpmd">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="file"/>
<xs:attribute name="ruleset"/>
<xs:attribute name="minimumpriority" type="xs:int"/>
<xs:attribute name="allowedfileextensions"/>
<xs:attribute name="ignorepatterns"/>
<xs:attribute name="format"/>
<xs:attribute name="cachefile"/>
<xs:attribute name="pharLocation" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="phpcpd">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fileset"/>
<xs:group ref="phpcpd-formatter"/>
</xs:choice>
<xs:attribute name="file"/>
<xs:attribute name="minTokens"/>
<xs:attribute name="minLines"/>
<xs:attribute name="format"/>
<xs:attribute name="fuzzy" type="xs:boolean"/>
<xs:attribute name="pharLocation"/>
</xs:complexType>
</xs:element>
<xs:group name="phpcpd-formatter">
<xs:sequence>
<xs:element name="formatter">
<xs:complexType>
<xs:attribute name="type" use="required"/>
<xs:attribute name="useFile" type="xs:boolean"/>
<xs:attribute name="outFile" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<!--
=========================================
PhpDependTask
=========================================
-->
<xs:element name="phpdepend">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
<xs:element maxOccurs="unbounded" ref="logger"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="analyzer"/>
</xs:sequence>
<xs:attribute name="file"/>
<xs:attribute name="configfile"/>
<xs:attribute name="allowedfileextensions"/>
<xs:attribute name="excludedirectories"/>
<xs:attribute name="excludepackages"/>
<xs:attribute name="withoutannotations" type="xs:boolean"/>
<xs:attribute name="superbaddocumentation" type="xs:boolean"/>
<xs:attribute name="debug" type="xs:boolean"/>
<xs:attribute name="haltonerror" type="xs:boolean"/>
<xs:attribute name="pharLocation" type="xs:string"/>
</xs:complexType>
</xs:element>
<!--
=========================================
PhpDocumentorTask
=========================================
-->
<xs:element name="phpdoc">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fileset"/>
<xs:element ref="projdocfileset"/>
</xs:choice>
<xs:attribute name="title"/>
<xs:attribute name="destdir"/>
<xs:attribute name="target"/>
<xs:attribute name="output"/>
<xs:attribute name="sourcecode" type="xs:boolean"/>
<xs:attribute name="examplesdir"/>
<xs:attribute name="parseprivate" type="xs:boolean"/>
<xs:attribute name="javadocdesc" type="xs:boolean"/>
<xs:attribute name="quiet" type="xs:boolean"/>
<xs:attribute name="packageoutput"/>
<xs:attribute name="ignoretags"/>
<xs:attribute name="defaultpackagename"/>
<xs:attribute name="defaultcategoryname"/>
<xs:attribute name="pear" type="xs:boolean"/>
<xs:attribute name="templatebase"/>
<xs:attribute name="undocumentedelements" type="xs:boolean"/>
<xs:attribute name="customtags" type="xs:boolean"/>
<xs:attribute name="ignore"/>
</xs:complexType>
</xs:element>
<!--
=========================================
PhpDocumentorExternalTask
=========================================
-->
<xs:element name="phpdocumentorexternal">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="title"/>
<xs:attribute name="destdir"/>
<xs:attribute name="target"/>
<xs:attribute name="output"/>
<xs:attribute name="sourcecode" type="xs:boolean"/>
<xs:attribute name="examplesdir"/>
<xs:attribute name="parseprivate" type="xs:boolean"/>
<xs:attribute name="javadocdesc" type="xs:boolean"/>
<xs:attribute name="quiet" type="xs:boolean"/>
<xs:attribute name="packageoutput"/>
<xs:attribute name="ignoretags"/>
<xs:attribute name="defaultpackagename"/>
<xs:attribute name="defaultcategoryname"/>
<xs:attribute name="pear"/>
<xs:attribute name="templatebase"/>
<xs:attribute name="undocumentedelements"/>
<xs:attribute name="customtags"/>
<xs:attribute name="programpath"/>
<xs:attribute name="ignore"/>
<xs:attribute name="sourcepath"/>
</xs:complexType>
</xs:element>
<!--
=========================================
PhpLintTask
=========================================
-->
<xs:element name="phplint">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="file"/>
<xs:attribute name="haltonfailure" type="xs:boolean"/>
<xs:attribute name="errorproperty"/>
<xs:attribute name="interpretator"/>
<xs:attribute name="cachefile"/>
<xs:attribute name="level">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="error"/>
<xs:enumeration value="warning"/>
<xs:enumeration value="info"/>
<xs:enumeration value="verbose"/>
<xs:enumeration value="debug"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="tofile"/>
<xs:attribute name="deprecatedaserror" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
PHPUnitTask
=========================================
-->
<xs:element name="phpunit">
<xs:complexType>
<xs:sequence>
<xs:group minOccurs="0" maxOccurs="unbounded" ref="formatter"/>
<xs:element minOccurs="0" ref="batchtest"/>
</xs:sequence>
<xs:attribute name="printsummary" type="xs:boolean"/>
<xs:attribute name="bootstrap"/>
<xs:attribute name="codecoverage" type="xs:boolean"/>
<xs:attribute name="haltonerror" type="xs:boolean"/>
<xs:attribute name="haltonfailure" type="xs:boolean"/>
<xs:attribute name="haltonincomplete" type="xs:boolean"/>
<xs:attribute name="haltonskipped" type="xs:boolean"/>
<xs:attribute name="failureproperty"/>
<xs:attribute name="errorproperty"/>
<xs:attribute name="incompleteproperty"/>
<xs:attribute name="skippedproperty"/>
<xs:attribute name="usecustomerrorhandler" type="xs:boolean"/>
<xs:attribute name="processisolation" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="batchtest">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="exclude"/>
<xs:attribute name="classpath"/>
</xs:complexType>
</xs:element>
<!--
=========================================
PHPUnitReporttask
=========================================
-->
<xs:element name="phpunitreport">
<xs:complexType>
<xs:attribute name="infile"/>
<xs:attribute name="format"/>
<xs:attribute name="styledir"/>
<xs:attribute name="todir" use="required"/>
<xs:attribute name="usesorttable" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="propertyregex">
<xs:complexType>
<xs:attribute name="property" use="required"/>
<xs:attribute name="override" type="xs:boolean"/>
<xs:attribute name="subject" use="required"/>
<xs:attribute name="pattern" use="required"/>
<xs:attribute name="match"/>
<xs:attribute name="replace"/>
<xs:attribute name="caseSensitive" type="xs:boolean"/>
<xs:attribute name="limit" type="xs:integer"/>
<xs:attribute name="defaultValue" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:group name="replaceregexp_task">
<xs:sequence>
<xs:element name="replaceregexp">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="file"/>
<xs:attribute name="pattern"/>
<xs:attribute name="match"/>
<xs:attribute name="replace"/>
<xs:attribute name="flags"/>
<xs:attribute name="byLine"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<!--
=========================================
rSTTask
=========================================
-->
<xs:element name="rst">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fileset"/>
<xs:element ref="mapper"/>
<xs:element ref="filterchain"/>
</xs:choice>
<xs:attribute name="file"/>
<xs:attribute name="format">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="html"/>
<xs:enumeration value="latex"/>
<xs:enumeration value="man"/>
<xs:enumeration value="odt"/>
<xs:enumeration value="s5"/>
<xs:enumeration value="xml"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="destination"/>
<xs:attribute name="uptodate" type="xs:boolean"/>
<xs:attribute name="toolpath"/>
<xs:attribute name="toolparam"/>
</xs:complexType>
</xs:element>
<!--
=========================================
S3PutTask
=========================================
-->
<xs:element name="s3put">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="source"/>
<xs:attribute name="content"/>
<xs:attribute name="key" use="required"/>
<xs:attribute name="secret" use="required"/>
<xs:attribute name="bucket" use="required"/>
<xs:attribute name="object"/>
</xs:complexType>
</xs:element>
<!--
=========================================
S3GetTask
=========================================
-->
<xs:element name="s3get">
<xs:complexType>
<xs:attribute name="key" use="required"/>
<xs:attribute name="secret" use="required"/>
<xs:attribute name="bucket" use="required"/>
<xs:attribute name="object" use="required"/>
<xs:attribute name="target" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="sass">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="file" type="xs:string"/>
<xs:attribute name="input" type="xs:string"/>
<xs:attribute name="check" type="xs:boolean"/>
<xs:attribute name="compact" type="xs:boolean"/>
<xs:attribute name="compressed" type="xs:boolean"/>
<xs:attribute name="crunched" type="xs:boolean"/>
<xs:attribute name="expand" type="xs:boolean"/>
<xs:attribute name="encoding" type="xs:string"/>
<xs:attribute name="executable" type="xs:string"/>
<xs:attribute name="extfilter" type="xs:string"/>
<xs:attribute name="failonerror" type="xs:boolean"/>
<xs:attribute name="flags" type="xs:string"/>
<xs:attribute name="force" type="xs:boolean"/>
<xs:attribute name="keepsubdirectories" type="xs:boolean"/>
<xs:attribute name="newext"/>
<xs:attribute name="linenumbers" type="xs:boolean"/>
<xs:attribute name="nested" type="xs:boolean"/>
<xs:attribute name="nocache" type="xs:boolean"/>
<xs:attribute name="output" type="xs:string"/>
<xs:attribute name="outputpath" type="xs:string"/>
<xs:attribute name="path" type="xs:string"/>
<xs:attribute name="removeoldext" type="xs:boolean"/>
<xs:attribute name="style">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="compact"/>
<xs:enumeration value="compressed"/>
<xs:enumeration value="crunched"/>
<xs:enumeration value="expanded"/>
<xs:enumeration value="nested"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="trace" type="xs:boolean"/>
<xs:attribute name="unixnewlines" type="xs:boolean"/>
<xs:attribute name="useScssphp" type="xs:boolean"/>
<xs:attribute name="useSass" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="scp">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="host" use="required"/>
<xs:attribute name="port" type="xs:int"/>
<xs:attribute name="username" use="required"/>
<xs:attribute name="password"/>
<xs:attribute name="pubkeyfile"/>
<xs:attribute name="privkeyfile"/>
<xs:attribute name="privkeyfilepassphrase"/>
<xs:attribute name="autocreate" type="xs:boolean"/>
<xs:attribute name="todir"/>
<xs:attribute name="file"/>
<xs:attribute name="fetch" type="xs:boolean"/>
<xs:attribute name="level">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="error"/>
<xs:enumeration value="warning"/>
<xs:enumeration value="info"/>
<xs:enumeration value="verbose"/>
<xs:enumeration value="debug"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<!--
=========================================
SshTask
=========================================
-->
<xs:element name="ssh">
<xs:complexType>
<xs:attribute name="host" use="required"/>
<xs:attribute name="port" type="xs:int"/>
<xs:attribute name="username" use="required"/>
<xs:attribute name="password"/>
<xs:attribute name="pubkeyfile"/>
<xs:attribute name="privkeyfile"/>
<xs:attribute name="privkeyfilepassphrase"/>
<xs:attribute name="command" use="required"/>
<xs:attribute name="property"/>
<xs:attribute name="display" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
SimpleTestTask
=========================================
-->
<xs:element name="simpletest">
<xs:complexType>
<xs:sequence>
<xs:group minOccurs="0" ref="formatter"/>
<xs:element maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="printsummary" type="xs:boolean"/>
<xs:attribute name="haltonerror" type="xs:boolean"/>
<xs:attribute name="haltonfailure" type="xs:boolean"/>
<xs:attribute name="failureproperty"/>
<xs:attribute name="errorproperty"/>
<xs:attribute name="debug" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="smarty">
<xs:complexType>
<xs:attribute name="controlTemplate" use="required"/>
<xs:attribute name="outputDirectory" use="required"/>
<xs:attribute name="outputFile" use="required"/>
<xs:attribute name="compilePath"/>
<xs:attribute name="forceCompile" type="xs:boolean"/>
<xs:attribute name="configPath"/>
<xs:attribute name="leftDelimiter"/>
<xs:attribute name="rightDelimiter"/>
<xs:attribute name="contextProperties"/>
</xs:complexType>
</xs:element>
<xs:element name="sonar">
<xs:complexType>
<xs:group maxOccurs="unbounded" ref="sonar-property"/>
<xs:attribute name="executable" use="required"/>
<xs:attribute name="errors"/>
<xs:attribute name="debug"/>
<xs:attribute name="configuration"/>
</xs:complexType>
</xs:element>
<xs:group name="sonar-property">
<xs:sequence>
<xs:element name="property">
<xs:complexType>
<xs:attribute name="name" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="stopwatch">
<xs:complexType>
<xs:attribute name="name" use="required"/>
<xs:attribute name="category"/>
<xs:attribute name="action"/>
</xs:complexType>
</xs:element>
<!--
=========================================
SvnCheckoutTask
=========================================
-->
<xs:element name="svncheckout">
<xs:complexType>
<xs:attribute name="repositoryurl" use="required"/>
<xs:attribute name="todir" use="required"/>
<xs:attribute name="svnpath"/>
<xs:attribute name="username"/>
<xs:attribute name="password"/>
<xs:attribute name="nocache" type="xs:boolean"/>
<xs:attribute name="recursive" type="xs:boolean"/>
<xs:attribute name="ignoreexternals" type="xs:boolean"/>
<xs:attribute name="trustservercert" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
SvnCommitTask
=========================================
-->
<xs:element name="svncommit">
<xs:complexType>
<xs:attribute name="message" use="required"/>
<xs:attribute name="workingcopy" use="required"/>
<xs:attribute name="svnpath"/>
<xs:attribute name="username"/>
<xs:attribute name="password"/>
<xs:attribute name="nocache" type="xs:boolean"/>
<xs:attribute name="recursive" type="xs:boolean"/>
<xs:attribute name="ignoreexternals" type="xs:boolean"/>
<xs:attribute name="propertyname"/>
<xs:attribute name="trustservercert" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
SvnCopyTask
=========================================
-->
<xs:element name="svncopy">
<xs:complexType>
<xs:attribute name="repositoryurl" use="required"/>
<xs:attribute name="todir" use="required"/>
<xs:attribute name="message"/>
<xs:attribute name="workingcopy" use="required"/>
<xs:attribute name="svnpath"/>
<xs:attribute name="username"/>
<xs:attribute name="password"/>
<xs:attribute name="force" type="xs:boolean"/>
<xs:attribute name="nocache" type="xs:boolean"/>
<xs:attribute name="recursive" type="xs:boolean"/>
<xs:attribute name="ignoreexternals" type="xs:boolean"/>
<xs:attribute name="trustservercert" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
SvnExportTask
=========================================
-->
<xs:element name="svnexport">
<xs:complexType>
<xs:attribute name="repositoryurl" use="required"/>
<xs:attribute name="todir" use="required"/>
<xs:attribute name="svnpath"/>
<xs:attribute name="username"/>
<xs:attribute name="password"/>
<xs:attribute name="nocache" type="xs:boolean"/>
<xs:attribute name="recursive" type="xs:boolean"/>
<xs:attribute name="ignoreexternals"/>
<xs:attribute name="force" type="xs:boolean"/>
<xs:attribute name="trustservercert" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
SvnInfoTask
=========================================
-->
<xs:element name="svninfo">
<xs:complexType>
<xs:attribute name="workingcopy"/>
<xs:attribute name="repositoryurl"/>
<xs:attribute name="svnpath"/>
<xs:attribute name="propertyname"/>
<xs:attribute name="element"/>
<xs:attribute name="subelement"/>
</xs:complexType>
</xs:element>
<!--
=========================================
SvnLastRevisionTask
=========================================
-->
<xs:element name="svnlastrevision">
<xs:complexType>
<xs:attribute name="workingcopy" use="required"/>
<xs:attribute name="svnpath"/>
<xs:attribute name="propertyname"/>
<xs:attribute name="lastChanged" type="xs:boolean"/>
<xs:attribute name="forcecompatible" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
SvnListTask
=========================================
-->
<xs:element name="svnlist">
<xs:complexType>
<xs:attribute name="workingcopy"/>
<xs:attribute name="repositourl"/>
<xs:attribute name="svnpath"/>
<xs:attribute name="propertyname"/>
<xs:attribute name="forcecompatible" type="xs:boolean"/>
<xs:attribute name="limit" type="xs:int"/>
<xs:attribute name="orderdescending" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
SvnLogTask
=========================================
-->
<xs:element name="svnlog">
<xs:complexType>
<xs:attribute name="workingcopy"/>
<xs:attribute name="repositourl"/>
<xs:attribute name="svnpath"/>
<xs:attribute name="propertyname"/>
<xs:attribute name="forcecompatible" type="xs:boolean"/>
<xs:attribute name="limit" type="xs:int"/>
</xs:complexType>
</xs:element>
<!--
=========================================
SvnUpdateTask
=========================================
-->
<xs:element name="svnupdate">
<xs:complexType>
<xs:attribute name="todir" use="required"/>
<xs:attribute name="svnpath"/>
<xs:attribute name="username"/>
<xs:attribute name="password"/>
<xs:attribute name="nocache" type="xs:boolean"/>
<xs:attribute name="recursive" type="xs:boolean"/>
<xs:attribute name="ignoreexternals" type="xs:boolean"/>
<xs:attribute name="revision" type="xs:int"/>
<xs:attribute name="trustservercert" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
SvnSwitchTask
=========================================
-->
<xs:element name="svnswitch">
<xs:complexType>
<xs:attribute name="todir" use="required"/>
<xs:attribute name="repositoryurl" use="required"/>
<xs:attribute name="svnpath"/>
<xs:attribute name="username"/>
<xs:attribute name="password"/>
<xs:attribute name="nocache" type="xs:boolean"/>
<xs:attribute name="recursive" type="xs:boolean"/>
<xs:attribute name="ignoreexternals" type="xs:boolean"/>
<xs:attribute name="trustservercert" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="symfonyconsole">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="arg"/>
</xs:sequence>
<xs:attribute name="command" use="required"/>
<xs:attribute name="console"/>
<xs:attribute name="debug" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="symlink">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" ref="fileset"/>
</xs:sequence>
<xs:attribute name="target"/>
<xs:attribute name="link" use="required"/>
<xs:attribute name="overwrite" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
TarTask
=========================================
-->
<xs:element name="tar">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="destfile" use="required"/>
<xs:attribute name="basedir"/>
<xs:attribute name="compression">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="gzip"/>
<xs:enumeration value="bzip2"/>
<xs:enumeration value="none"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="includeemptydirs" type="xs:boolean"/>
<xs:attribute name="longfile">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="truncate"/>
<xs:enumeration value="fail"/>
<xs:enumeration value="warn"/>
<xs:enumeration value="gnu"/>
<xs:enumeration value="omit"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="prefix"/>
</xs:complexType>
</xs:element>
<xs:element name="throw">
<xs:complexType>
<xs:attribute name="refId" use="required"/>
</xs:complexType>
</xs:element>
<!--
=========================================
UntarTask
=========================================
-->
<xs:element name="untar">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="todir" use="required"/>
<xs:attribute name="file"/>
<xs:attribute name="removepath"/>
<xs:attribute name="forceextract" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
UnzipTask
=========================================
-->
<xs:element name="unzip">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="todir" use="required"/>
<xs:attribute name="file"/>
<xs:attribute name="forceextract" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
VersionTask
=========================================
-->
<xs:element name="version">
<xs:complexType>
<xs:attribute name="releasetype" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="Major"/>
<xs:enumeration value="Minor"/>
<xs:enumeration value="Bugfix"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="file" use="required"/>
<xs:attribute name="property" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="wikipublish">
<xs:complexType>
<xs:attribute name="apiUrl" use="required"/>
<xs:attribute name="apiUser"/>
<xs:attribute name="apiPassword"/>
<xs:attribute name="id"/>
<xs:attribute name="title"/>
<xs:attribute name="content"/>
<xs:attribute name="mode"/>
</xs:complexType>
</xs:element>
<!--
=========================================
XmlLintTask
=========================================
-->
<xs:element name="xmllint">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="schema" use="required"/>
<xs:attribute name="file"/>
<xs:attribute name="useRNG" type="xs:boolean"/>
<xs:attribute name="haltonfailure" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
XmlPropertyTask
=========================================
-->
<xs:element name="xmlproperty">
<xs:complexType>
<xs:attribute name="file" use="required"/>
<xs:attribute name="prefix"/>
<xs:attribute name="keeproot" type="xs:boolean"/>
<xs:attribute name="collapseattributes" type="xs:boolean"/>
<xs:attribute name="delimiter"/>
</xs:complexType>
</xs:element>
<!--
=========================================
ZendCodeAnalyzerTask
=========================================
-->
<xs:element name="zendcodeanalyzer">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="analyzerPath" use="required"/>
<xs:attribute name="file"/>
<xs:attribute name="disable"/>
<xs:attribute name="enable"/>
<xs:attribute name="haltonwarning" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
ZendGuardEncodeTask
=========================================
-->
<xs:element name="zendguardencode">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="zendencoderpath" use="required"/>
<xs:attribute name="deletesource" type="xs:boolean"/>
<xs:attribute name="renamesourceext"/>
<xs:attribute name="expires"/>
<xs:attribute name="obfuscationlevel" type="xs:int"/>
<xs:attribute name="optmask" type="xs:int"/>
<xs:attribute name="privatekeypath"/>
<xs:attribute name="productname"/>
<xs:attribute name="prologfile"/>
<xs:attribute name="shorttags" type="xs:boolean"/>
<xs:attribute name="asptags" type="xs:boolean"/>
<xs:attribute name="noheader" type="xs:boolean"/>
<xs:attribute name="usecrypto" type="xs:boolean"/>
<xs:attribute name="encodedonly" type="xs:boolean"/>
<xs:attribute name="forceencode" type="xs:boolean"/>
<xs:attribute name="licenseproduct" type="xs:boolean"/>
<xs:attribute name="signproduct" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<!--
=========================================
ZendGuardLicenseTask
=========================================
-->
<xs:element name="zendguardlicense">
<xs:complexType>
<xs:attribute name="zendsignpath" use="required"/>
<xs:attribute name="privatekeypath" use="required"/>
<xs:attribute name="outputfile" use="required"/>
<xs:attribute name="productname" use="required"/>
<xs:attribute name="registeredto" use="required"/>
<xs:attribute name="expires" use="required"/>
<xs:attribute name="licensetemplate"/>
<xs:attribute name="iprange"/>
<xs:attribute name="hardwarelocked" type="xs:boolean"/>
<xs:attribute name="hostid"/>
<xs:attribute name="userdefinedvalues"/>
<xs:attribute name="xuserdefinedvalues"/>
</xs:complexType>
</xs:element>
<!--
=========================================
ZipTask
=========================================
-->
<xs:element name="zip">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fileset"/>
</xs:sequence>
<xs:attribute name="destfile" use="required"/>
<xs:attribute name="basedir"/>
<xs:attribute name="prefix"/>
<xs:attribute name="includeemptydirs" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:element name="zsdtpack">
<xs:complexType>
<xs:attribute name="package" use="required"/>
<xs:attribute name="scripts" use="required"/>
<xs:attribute name="descriptor" use="required"/>
<xs:attribute name="source"/>
<xs:attribute name="output"/>
<xs:attribute name="lint" type="xs:boolean"/>
<xs:attribute name="phpBin"/>
<xs:attribute name="schema"/>
</xs:complexType>
</xs:element>
<xs:element name="zsdtvalidate">
<xs:complexType>
<xs:attribute name="descriptor" use="required"/>
<xs:attribute name="schema"/>
</xs:complexType>
</xs:element>
<!--
======================================================================
Filters
======================================================================
-->
<xs:element name="mapper">
<xs:complexType>
<xs:attribute name="classname"/>
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="cutdirs"/>
<xs:enumeration value="firstmatch"/>
<xs:enumeration value="flatten"/>
<xs:enumeration value="glob"/>
<xs:enumeration value="merge"/>
<xs:enumeration value="identity"/>
<xs:enumeration value="regexp"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="from"/>
<xs:attribute name="to"/>
</xs:complexType>
</xs:element>
<xs:element name="param">
<xs:complexType>
<xs:attribute name="type"/>
<xs:attribute name="key"/>
<xs:attribute name="value"/>
<xs:attribute name="name"/>
<xs:attribute name="expression"/>
</xs:complexType>
</xs:element>
<xs:element name="filterreader">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="param"/>
</xs:sequence>
<xs:attribute name="classname" use="required"/>
<xs:attribute name="classpath"/>
<xs:attribute name="classpathref"/>
</xs:complexType>
</xs:element>
<xs:element name="expandproperties">
<xs:complexType/>
</xs:element>
<xs:element name="filterchain">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="expandproperties"/>
<xs:element ref="filterreader"/>
<xs:element ref="expandproperties"/>
<xs:element ref="headfilter"/>
<xs:element ref="iconvfilter"/>
<xs:element ref="linecontains"/>
<xs:element ref="linecontainsregexp"/>
<xs:element ref="prefixlines"/>
<xs:element ref="replacetokens"/>
<xs:group ref="replaceregexp"/>
<xs:element ref="striplinecomments"/>
<xs:element ref="stripphpcomments"/>
<xs:element ref="stripwhitespace"/>
<xs:element ref="tabtospaces"/>
<xs:element ref="tailfilter"/>
<xs:element ref="tidyfilter"/>
<xs:element ref="xincludefilter"/>
<xs:element ref="xsltfilter"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="linecontains">
<xs:complexType>
<xs:group maxOccurs="unbounded" ref="contains"/>
</xs:complexType>
</xs:element>
<xs:group name="contains">
<xs:sequence>
<xs:element name="contains">
<xs:complexType>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="linecontainsregexp">
<xs:complexType>
<xs:sequence>
<xs:element ref="regexp"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="regexp">
<xs:complexType>
<xs:attribute name="pattern" use="required"/>
<xs:attribute name="replace"/>
<xs:attribute name="ignoreCase"/>
</xs:complexType>
</xs:element>
<xs:element name="prefixlines">
<xs:complexType>
<xs:attribute name="prefix" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="replacetokens">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="token"/>
</xs:sequence>
<xs:attribute name="begintoken"/>
<xs:attribute name="endtoken"/>
</xs:complexType>
</xs:element>
<xs:element name="token">
<xs:complexType>
<xs:attribute name="key" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:group name="replaceregexp">
<xs:sequence>
<xs:element name="replaceregexp">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="regexp"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="stripwhitespace">
<xs:complexType>
<xs:attribute name="tablength" type="xs:int"/>
</xs:complexType>
</xs:element>
<xs:element name="striplinecomments">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="comment"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="comment">
<xs:complexType mixed="true">
<xs:attribute name="value"/>
</xs:complexType>
</xs:element>
<xs:element name="stripphpcomments">
<xs:complexType/>
</xs:element>
<xs:element name="tabtospaces">
<xs:complexType>
<xs:attribute name="tablength" type="xs:int"/>
</xs:complexType>
</xs:element>
<xs:element name="tailfilter">
<xs:complexType>
<xs:attribute name="lines" type="xs:int"/>
</xs:complexType>
</xs:element>
<xs:element name="headfilter">
<xs:complexType>
<xs:attribute name="lines" type="xs:int"/>
</xs:complexType>
</xs:element>
<xs:element name="iconvfilter">
<xs:complexType>
<xs:attribute name="inputencoding" use="required"/>
<xs:attribute name="outputencoding" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="tidyfilter">
<xs:complexType>
<xs:attribute name="encoding"/>
</xs:complexType>
</xs:element>
<xs:element name="xincludefilter">
<xs:complexType>
<xs:attribute name="basedir"/>
</xs:complexType>
</xs:element>
<xs:element name="xsltfilter">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="param"/>
</xs:sequence>
<xs:attribute name="style" use="required"/>
<xs:attribute name="html"/>
</xs:complexType>
</xs:element>
<!--
===========================================================================================================
Conditions
===========================================================================================================
-->
<xs:group name="conditions">
<xs:choice>
<xs:element ref="not"/>
<xs:element ref="equals"/>
<xs:element ref="or"/>
<xs:element ref="and"/>
<xs:element ref="xor"/>
<xs:element ref="isfalse"/>
<xs:element ref="istrue"/>
<xs:element ref="isset"/>
<xs:group ref="contains_cond"/>
<xs:element ref="referenceexists"/>
<xs:group ref="available"/>
<xs:element ref="filesmatch"/>
<xs:element ref="hasfreespace"/>
<xs:element ref="isfailure"/>
<xs:element ref="ispropertyfalse"/>
<xs:element ref="ispropertytrue"/>
<xs:group ref="phingversion_cond"/>
<xs:element ref="socket"/>
<xs:element ref="versioncompare"/>
<xs:group ref="available_cond"/>
<xs:element ref="http"/>
<xs:element ref="matches"/>
</xs:choice>
</xs:group>
<xs:element name="or">
<xs:complexType>
<xs:group maxOccurs="unbounded" ref="conditions"/>
</xs:complexType>
</xs:element>
<xs:element name="and">
<xs:complexType>
<xs:group maxOccurs="unbounded" ref="conditions"/>
</xs:complexType>
</xs:element>
<xs:element name="xor">
<xs:complexType>
<xs:group maxOccurs="unbounded" ref="conditions"/>
</xs:complexType>
</xs:element>
<xs:element name="not">
<xs:complexType>
<xs:group ref="conditions"/>
</xs:complexType>
</xs:element>
<xs:element name="isfalse">
<xs:complexType>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="istrue">
<xs:complexType>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="isset">
<xs:complexType>
<xs:attribute name="property" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="referenceexists">
<xs:complexType>
<xs:attribute name="ref" use="required"/>
</xs:complexType>
</xs:element>
<xs:group name="contains_cond">
<xs:sequence>
<xs:element name="contains">
<xs:complexType>
<xs:attribute name="string" use="required"/>
<xs:attribute name="substring" use="required"/>
<xs:attribute name="casesensitive"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="equals">
<xs:complexType>
<xs:attribute name="arg1" use="required"/>
<xs:attribute name="arg2" use="required"/>
<xs:attribute name="casesensitive"/>
<xs:attribute name="trim"/>
</xs:complexType>
</xs:element>
<xs:element name="filesmatch">
<xs:complexType>
<xs:attribute name="file1" use="required"/>
<xs:attribute name="file2" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="hasfreespace">
<xs:complexType>
<xs:attribute name="partition" use="required"/>
<xs:attribute name="needed" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="isfailure">
<xs:complexType>
<xs:attribute name="code" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="ispropertyfalse">
<xs:complexType>
<xs:attribute name="property" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="ispropertytrue">
<xs:complexType>
<xs:attribute name="property" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="socket">
<xs:complexType>
<xs:attribute name="server" use="required"/>
<xs:attribute name="port" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="versioncompare">
<xs:complexType>
<xs:attribute name="version" use="required"/>
<xs:attribute name="desiredVersion" use="required"/>
<xs:attribute name="operator"/>
<xs:attribute name="debug" type="xs:boolean"/>
</xs:complexType>
</xs:element>
<xs:group name="phingversion_cond">
<xs:sequence>
<xs:element name="phingversion">
<xs:complexType>
<xs:attribute name="atLeast"/>
<xs:attribute name="exactly"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="available_cond">
<xs:sequence>
<xs:element name="available">
<xs:complexType>
<xs:attribute name="file"/>
<xs:attribute name="resource"/>
<xs:attribute name="type"/>
<xs:attribute name="filepath"/>
<xs:attribute name="followSymlinks" type="xs:boolean"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:element name="http">
<xs:complexType>
<xs:attribute name="url" use="required"/>
<xs:attribute name="errorsBeginAt"/>
</xs:complexType>
</xs:element>
<xs:element name="matches">
<xs:complexType>
<xs:attribute name="string" use="required"/>
<xs:attribute name="pattern" use="required"/>
<xs:attribute name="casesensitive"/>
<xs:attribute name="multiline"/>
<xs:attribute name="modifiers"/>
</xs:complexType>
</xs:element>
<xs:group name="append-header">
<xs:sequence>
<xs:element name="header">
<xs:complexType>
<xs:attribute name="filtering"/>
<xs:attribute name="file"/>
<xs:attribute name="trim"/>
<xs:attribute name="trimleading"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="append-footer">
<xs:sequence>
<xs:element name="header">
<xs:complexType>
<xs:attribute name="filtering"/>
<xs:attribute name="file"/>
<xs:attribute name="trim"/>
<xs:attribute name="trimleading"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:group>
</xs:schema>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment