XProc Lab

index

p:add-attribute

p:add-xml-base

p:archive

p:archive-manifest

p:cast-content-type

p:compare

p:compress

p:count

p:css-formatter

p:delete

p:directory-list

p:error

p:file-copy

p:file-create-tempfile

p:file-delete

p:file-info

p:file-mkdir

p:file-move

p:file-touch

p:filter

p:hash

p:http-request

p:identity

p:insert

p:invisible-xml

p:json-join

p:json-merge

p:label-elements

p:load

p:make-absolute-uris

p:namespace-delete

p:namespace-rename

p:os-exec

p:os-info

p:pack

p:rename

p:replace

p:send-mail

p:set-attributes

p:set-properties

p:sink

p:sleep

p:split-sequence

p:store

p:string-replace

p:text-count

p:text-head

p:text-join

p:text-replace

p:text-sort

p:text-tail

p:unarchive

p:uncompress

p:unwrap

p:uuid

p:validate-with-dtd

p:validate-with-json-schema

p:validate-with-nvdl

p:validate-with-relax-ng

p:validate-with-schematron

p:validate-with-xml-schema

p:wrap

p:wrap-sequence

p:www-form-urldecode

p:www-form-urlencode

p:xinclude

p:xquery

p:xsl-formatter

p:xslt

XProc 3.0/3.1 Step List

Description

This directory to XProc steps was generated by querying the specification documents. Because those documents have machined consistency (having been maintained and produced in XProc), it is feasible for an automated, testable process to stitch them all together with links to them and to similarly derived documents, such as Erik Siegel's invaluable XProcRef.

Standard steps in this list are the core atomic steps required by the XProc Specification for all XProc engines.

Additionally the page lists all the steps defined in community specifications but not required for compliance.

At the top, find links for the core compound steps, for-each, try/catch etc.

The following documents define the optional, community-standard steps (and are also linked from their steps):

The step list here is derived from the XProc code base and may show steps not yet added to the published specification, because still in process.

To use

XProc Steps are shown with links to their definitions in libraries and references, at top right.

Visual indications (grey fading) show if a step is not implemented or not yet offered in MorganaXProc-IIIse. Because the logic determining this property may fall behind the product offering, some diligence is also called for. (XML Calabash offerings are not yet so marked: please refer to its documentation.)

The buttons provide for copying code blocks to the user's clipboard (on up-to-date browsers).

Core compound steps

STANDARD library

p:add-attribute
<p:add-attribute name="DO_add-attribute"
  attribute-name="[xs:QName]"
  attribute-value="[xs:string]"
  match="[xs:string] '/*'">
  <p:with-input port="source" content-types="xml html"/>
</p:add-attribute>
<p:with-input port="..." pipe="@DO_add-attribute"/>

p:add-attribute input

portcontent typessequence?primary?
source xml html (false) (true)

p:add-attribute output

portcontent typessequence?primary?
result xml html (false) (true)

p:add-attribute options

namedata typedefault
attribute-name xs:QName REQUIRED
attribute-value xs:string REQUIRED
match xs:string '/*'
p:add-xml-base
<p:add-xml-base name="DO_add-xml-base"
  all="[xs:boolean] false()"
  relative="[xs:boolean] true()">
  <p:with-input port="source" content-types="xml html"/>
</p:add-xml-base>
<p:with-input port="..." pipe="@DO_add-xml-base"/>

p:add-xml-base input

portcontent typessequence?primary?
source xml html (false) (true)

p:add-xml-base output

portcontent typessequence?primary?
result xml html (false) (true)

p:add-xml-base options

namedata typedefault
all xs:boolean false()
relative xs:boolean true()
p:archive
<p:archive name="DO_archive"
  format="[xs:QName] 'zip'"
  parameters="[map(xs:QName, item()*)?]"
  relative-to="[xs:anyURI?]">
  <p:with-input port="source" primary="true" content-types="any" sequence="true"/>
  <p:with-input port="archive" content-types="any" sequence="true"/>
  <p:with-input port="manifest" content-types="xml" sequence="true"/>
</p:archive>
<p:with-input port="..." pipe="result@DO_archive"/>
<p:with-input port="..." pipe="report@DO_archive"/>

p:archive inputs

portcontent typessequence?primary?
source any true true
archive any true (false)
manifest xml true (false)

p:archive outputs

portcontent typessequence?primary?
result any false true
report application/xml false (false)

p:archive options

namedata typedefault
format xs:QName 'zip'
parameters map(xs:QName, item()*)? ()
relative-to xs:anyURI? ()
p:archive-manifest
<p:archive-manifest name="DO_archive-manifest"
  format="[xs:QName?]"
  override-content-types="[array(array(xs:string))?]"
  parameters="[map(xs:QName, item()*)?]"
  relative-to="[xs:anyURI?]">
  <p:with-input port="source" primary="true" content-types="any" sequence="false"/>
</p:archive-manifest>
<p:with-input port="..." pipe="@DO_archive-manifest"/>

p:archive-manifest input

portcontent typessequence?primary?
source any false (true)

p:archive-manifest output

portcontent typessequence?primary?
result application/xml false (true)

p:archive-manifest options

namedata typedefault
format xs:QName? ()
override-content-types array(array(xs:string))? ()
parameters map(xs:QName, item()*)? ()
relative-to xs:anyURI? ()
p:cast-content-type
<p:cast-content-type name="DO_cast-content-type"
  content-type="[xs:string]"
  parameters="[map(xs:QName,item()*)?]">
  <p:with-input port="source" content-types="any"/>
</p:cast-content-type>
<p:with-input port="..." pipe="@DO_cast-content-type"/>

p:cast-content-type input

portcontent typessequence?primary?
source any (false) (true)

p:cast-content-type output

portcontent typessequence?primary?
result any (false) (true)

p:cast-content-type options

namedata typedefault
content-type xs:string REQUIRED
parameters map(xs:QName,item()*)? ()
p:compare
<p:compare name="DO_compare"
  fail-if-not-equal="[xs:boolean] false()"
  method="[xs:QName?]"
  parameters="[map(xs:QName,item()*)?]">
  <p:with-input port="source" primary="true" content-types="any"/>
  <p:with-input port="alternate" content-types="any"/>
</p:compare>
<p:with-input port="..." pipe="result@DO_compare"/>
<p:with-input port="..." pipe="differences@DO_compare"/>

p:compare inputs

portcontent typessequence?primary?
source any (false) true
alternate any (false) (false)

p:compare outputs

portcontent typessequence?primary?
result application/xml (false) true
differences any true (false)

p:compare options

namedata typedefault
fail-if-not-equal xs:boolean false()
method xs:QName? ()
parameters map(xs:QName,item()*)? ()
p:compress
<p:compress name="DO_compress"
  format="[xs:QName] 'gzip'"
  parameters="[map(xs:QName, item()*)?]"
  serialization="[map(xs:QName,item()*)?]">
  <p:with-input port="source" primary="true" content-types="any" sequence="false"/>
</p:compress>
<p:with-input port="..." pipe="@DO_compress"/>

p:compress input

portcontent typessequence?primary?
source any false (true)

p:compress output

portcontent typessequence?primary?
result any false (true)

p:compress options

namedata typedefault
format xs:QName 'gzip'
parameters map(xs:QName, item()*)? ()
serialization map(xs:QName,item()*)? ()
p:count
<p:count name="DO_count"
  limit="[xs:integer] 0">
  <p:with-input port="source" content-types="any" sequence="true"/>
</p:count>
<p:with-input port="..." pipe="@DO_count"/>

p:count input

portcontent typessequence?primary?
source any true (true)

p:count output

portcontent typessequence?primary?
result application/xml (false) (true)

p:count option

namedata typedefault
limit xs:integer 0
p:delete
<p:delete name="DO_delete"
  match="[xs:string]">
  <p:with-input port="source" content-types="xml html"/>
</p:delete>
<p:with-input port="..." pipe="@DO_delete"/>

p:delete input

portcontent typessequence?primary?
source xml html (false) (true)

p:delete output

portcontent typessequence?primary?
result text xml html (false) (true)

p:delete option

namedata typedefault
match xs:string REQUIRED
p:error
<p:error name="DO_error"
  code="[xs:QName]">
  <p:with-input port="source" sequence="true" content-types="text xml"/>
</p:error>
<p:with-input port="..." pipe="@DO_error"/>

p:error input

portcontent typessequence?primary?
source text xml true (true)

p:error output

portcontent typessequence?primary?
result any true (true)

p:error option

namedata typedefault
code xs:QName REQUIRED
p:filter
<p:filter name="DO_filter"
  select="[xs:string]">
  <p:with-input port="source" content-types="xml html"/>
</p:filter>
<p:with-input port="..." pipe="@DO_filter"/>

p:filter input

portcontent typessequence?primary?
source xml html (false) (true)

p:filter output

portcontent typessequence?primary?
result text xml html true (true)

p:filter option

namedata typedefault
select xs:string REQUIRED
p:hash
<p:hash name="DO_hash"
  algorithm="[xs:QName]"
  match="[xs:string] '/*/node()'"
  parameters="[map(xs:QName,item()*)?]"
  value="[xs:string]"
  version="[xs:string?]">
  <p:with-input port="source" primary="true" content-types="xml html"/>
</p:hash>
<p:with-input port="..." pipe="@DO_hash"/>

p:hash input

portcontent typessequence?primary?
source xml html (false) (true)

p:hash output

portcontent typessequence?primary?
result text xml html (false) (true)

p:hash options

namedata typedefault
algorithm xs:QName REQUIRED
match xs:string '/*/node()'
parameters map(xs:QName,item()*)? ()
value xs:string REQUIRED
version xs:string? ()
p:http-request
<p:http-request name="DO_http-request"
  assert="[xs:string] '.?status-code lt 400'"
  auth="[map(xs:string, item()+)?]"
  headers="[map(xs:string, xs:string)?]"
  href="[xs:anyURI]"
  method="[xs:string?] 'GET'"
  parameters="[map(xs:QName, item()*)?]"
  serialization="[map(xs:QName,item()*)?]">
  <p:with-input port="source" content-types="any" sequence="true"/>
</p:http-request>
<p:with-input port="..." pipe="result@DO_http-request"/>
<p:with-input port="..." pipe="report@DO_http-request"/>

p:http-request input

portcontent typessequence?primary?
source any true (true)

p:http-request outputs

portcontent typessequence?primary?
result any true true
report application/json (false) (false)

p:http-request options

namedata typedefault
assert xs:string '.?status-code lt 400'
auth map(xs:string, item()+)? ()
headers map(xs:string, xs:string)? ()
href xs:anyURI REQUIRED
method xs:string? 'GET'
parameters map(xs:QName, item()*)? ()
serialization map(xs:QName,item()*)? ()
p:identity
<p:identity name="DO_identity">
  <p:with-input port="source" sequence="true" content-types="any"/>
</p:identity>
<p:with-input port="..." pipe="@DO_identity"/>

p:identity input

portcontent typessequence?primary?
source any true (true)

p:identity output

portcontent typessequence?primary?
result any true (true)
p:insert
<p:insert name="DO_insert"
  match="[xs:string] '/*'"
  position="[] 'after'">
  <p:with-input port="source" primary="true" content-types="xml html"/>
  <p:with-input port="insertion" sequence="true" content-types="xml html text"/>
</p:insert>
<p:with-input port="..." pipe="@DO_insert"/>

p:insert inputs

portcontent typessequence?primary?
source xml html (false) true
insertion xml html text true (false)

p:insert output

portcontent typessequence?primary?
result xml html text (false) (true)

p:insert options

namedata typedefault
match xs:string '/*'
position 'after'
p:json-join
<p:json-join name="DO_json-join"
  flatten-to-depth="[xs:string?] '0'">
  <p:with-input port="source" sequence="true" content-types="any"/>
</p:json-join>
<p:with-input port="..." pipe="@DO_json-join"/>

p:json-join input

portcontent typessequence?primary?
source any true (true)

p:json-join output

portcontent typessequence?primary?
result application/json (false) (true)

p:json-join option

namedata typedefault
flatten-to-depth xs:string? '0'
p:json-merge
<p:json-merge name="DO_json-merge"
  duplicates="[] 'use-first'"
  key="[xs:string] 'concat("_",$p:index)'">
  <p:with-input port="source" sequence="true" content-types="any"/>
</p:json-merge>
<p:with-input port="..." pipe="@DO_json-merge"/>

p:json-merge input

portcontent typessequence?primary?
source any true (true)

p:json-merge output

portcontent typessequence?primary?
result application/json (false) (true)

p:json-merge options

namedata typedefault
duplicates 'use-first'
key xs:string 'concat("_",$p:index)'
p:label-elements
<p:label-elements name="DO_label-elements"
  attribute="[xs:QName] 'xml:id'"
  label="[xs:string] 'concat("_",$p:index)'"
  match="[xs:string] '*'"
  replace="[xs:boolean] true()">
  <p:with-input port="source" content-types="xml html"/>
</p:label-elements>
<p:with-input port="..." pipe="@DO_label-elements"/>

p:label-elements input

portcontent typessequence?primary?
source xml html (false) (true)

p:label-elements output

portcontent typessequence?primary?
result xml html (false) (true)

p:label-elements options

namedata typedefault
attribute xs:QName 'xml:id'
label xs:string 'concat("_",$p:index)'
match xs:string '*'
replace xs:boolean true()
p:load
<p:load name="DO_load"
  content-type="[xs:string?]"
  document-properties="[map(xs:QName, item()*)?]"
  href="[xs:anyURI]"
  parameters="[map(xs:QName,item()*)?]"/>
<p:with-input port="..." pipe="@DO_load"/>

p:load output

portcontent typessequence?primary?
result any (false) (true)

p:load options

namedata typedefault
content-type xs:string? ()
document-properties map(xs:QName, item()*)? ()
href xs:anyURI REQUIRED
parameters map(xs:QName,item()*)? ()
p:make-absolute-uris
<p:make-absolute-uris name="DO_make-absolute-uris"
  base-uri="[xs:anyURI?]"
  match="[xs:string]">
  <p:with-input port="source" content-types="xml html"/>
</p:make-absolute-uris>
<p:with-input port="..." pipe="@DO_make-absolute-uris"/>

p:make-absolute-uris input

portcontent typessequence?primary?
source xml html (false) (true)

p:make-absolute-uris output

portcontent typessequence?primary?
result xml html (false) (true)

p:make-absolute-uris options

namedata typedefault
base-uri xs:anyURI? ()
match xs:string REQUIRED
p:namespace-delete
<p:namespace-delete name="DO_namespace-delete"
  prefixes="[xs:string]">
  <p:with-input port="source" content-types="xml html"/>
</p:namespace-delete>
<p:with-input port="..." pipe="@DO_namespace-delete"/>

p:namespace-delete input

portcontent typessequence?primary?
source xml html (false) (true)

p:namespace-delete output

portcontent typessequence?primary?
result xml html (false) (true)

p:namespace-delete option

namedata typedefault
prefixes xs:string REQUIRED
p:namespace-rename
<p:namespace-rename name="DO_namespace-rename"
  apply-to="[] 'all'"
  from="[xs:anyURI?]"
  to="[xs:anyURI?]">
  <p:with-input port="source" content-types="xml html"/>
</p:namespace-rename>
<p:with-input port="..." pipe="@DO_namespace-rename"/>

p:namespace-rename input

portcontent typessequence?primary?
source xml html (false) (true)

p:namespace-rename output

portcontent typessequence?primary?
result xml html (false) (true)

p:namespace-rename options

namedata typedefault
apply-to 'all'
from xs:anyURI? ()
to xs:anyURI? ()
p:pack
<p:pack name="DO_pack"
  wrapper="[xs:QName]">
  <p:with-input port="source" content-types="text xml html" sequence="true" primary="true"/>
  <p:with-input port="alternate" sequence="true" content-types="text xml html"/>
</p:pack>
<p:with-input port="..." pipe="@DO_pack"/>

p:pack inputs

portcontent typessequence?primary?
source text xml html true true
alternate text xml html true (false)

p:pack output

portcontent typessequence?primary?
result application/xml true (true)

p:pack option

namedata typedefault
wrapper xs:QName REQUIRED
p:rename
<p:rename name="DO_rename"
  match="[xs:string] '/*'"
  new-name="[xs:QName]">
  <p:with-input port="source" content-types="xml html"/>
</p:rename>
<p:with-input port="..." pipe="@DO_rename"/>

p:rename input

portcontent typessequence?primary?
source xml html (false) (true)

p:rename output

portcontent typessequence?primary?
result xml html (false) (true)

p:rename options

namedata typedefault
match xs:string '/*'
new-name xs:QName REQUIRED
p:replace
<p:replace name="DO_replace"
  match="[xs:string]">
  <p:with-input port="source" primary="true" content-types="xml html"/>
  <p:with-input port="replacement" content-types="text xml html"/>
</p:replace>
<p:with-input port="..." pipe="@DO_replace"/>

p:replace inputs

portcontent typessequence?primary?
source xml html (false) true
replacement text xml html (false) (false)

p:replace output

portcontent typessequence?primary?
result text xml html (false) (true)

p:replace option

namedata typedefault
match xs:string REQUIRED
p:set-attributes
<p:set-attributes name="DO_set-attributes"
  attributes="[map(xs:QName, xs:anyAtomicType)]"
  match="[xs:string] '/*'">
  <p:with-input port="source" primary="true" content-types="xml html"/>
</p:set-attributes>
<p:with-input port="..." pipe="@DO_set-attributes"/>

p:set-attributes input

portcontent typessequence?primary?
source xml html (false) (true)

p:set-attributes output

portcontent typessequence?primary?
result xml html (false) (true)

p:set-attributes options

namedata typedefault
attributes map(xs:QName, xs:anyAtomicType) REQUIRED
match xs:string '/*'
p:set-properties
<p:set-properties name="DO_set-properties"
  merge="[xs:boolean] true()"
  properties="[map(xs:QName,item()*)]">
  <p:with-input port="source" content-types="any"/>
</p:set-properties>
<p:with-input port="..." pipe="@DO_set-properties"/>

p:set-properties input

portcontent typessequence?primary?
source any (false) (true)

p:set-properties output

portcontent typessequence?primary?
result any (false) (true)

p:set-properties options

namedata typedefault
merge xs:boolean true()
properties map(xs:QName,item()*) REQUIRED
p:sink
<p:sink name="DO_sink">
  <p:with-input port="source" content-types="any" sequence="true"/>
</p:sink>

p:sink input

portcontent typessequence?primary?
source any true (true)
p:sleep
<p:sleep name="DO_sleep"
  duration="[xs:nonNegativeInteger]">
  <p:with-input port="source" sequence="true" content-types="any"/>
</p:sleep>
<p:with-input port="..." pipe="@DO_sleep"/>

p:sleep input

portcontent typessequence?primary?
source any true (true)

p:sleep output

portcontent typessequence?primary?
result any true (true)

p:sleep option

namedata typedefault
duration xs:nonNegativeInteger REQUIRED
p:split-sequence
<p:split-sequence name="DO_split-sequence"
  initial-only="[xs:boolean] false()"
  test="[xs:string]">
  <p:with-input port="source" content-types="any" sequence="true"/>
</p:split-sequence>
<p:with-input port="..." pipe="matched@DO_split-sequence"/>
<p:with-input port="..." pipe="not-matched@DO_split-sequence"/>

p:split-sequence input

portcontent typessequence?primary?
source any true (true)

p:split-sequence outputs

portcontent typessequence?primary?
matched any true true
not-matched any true (false)

p:split-sequence options

namedata typedefault
initial-only xs:boolean false()
test xs:string REQUIRED
p:store
<p:store name="DO_store"
  href="[xs:anyURI]"
  serialization="[map(xs:QName,item()*)?]">
  <p:with-input port="source" content-types="any"/>
</p:store>
<p:with-input port="..." pipe="result@DO_store"/>
<p:with-input port="..." pipe="result-uri@DO_store"/>

p:store input

portcontent typessequence?primary?
source any (false) (true)

p:store outputs

portcontent typessequence?primary?
result any (false) true
result-uri application/xml (false) (false)

p:store options

namedata typedefault
href xs:anyURI REQUIRED
serialization map(xs:QName,item()*)? ()
p:string-replace
<p:string-replace name="DO_string-replace"
  match="[xs:string]"
  replace="[xs:string]">
  <p:with-input port="source" content-types="xml html"/>
</p:string-replace>
<p:with-input port="..." pipe="@DO_string-replace"/>

p:string-replace input

portcontent typessequence?primary?
source xml html (false) (true)

p:string-replace output

portcontent typessequence?primary?
result text xml html (false) (true)

p:string-replace options

namedata typedefault
match xs:string REQUIRED
replace xs:string REQUIRED
p:text-count
<p:text-count name="DO_text-count">
  <p:with-input port="source" primary="true" sequence="false" content-types="text"/>
</p:text-count>
<p:with-input port="..." pipe="@DO_text-count"/>

p:text-count input

portcontent typessequence?primary?
source text false (true)

p:text-count output

portcontent typessequence?primary?
result application/xml false (true)
p:text-head
<p:text-head name="DO_text-head"
  count="[xs:integer]">
  <p:with-input port="source" primary="true" sequence="false" content-types="text"/>
</p:text-head>
<p:with-input port="..." pipe="@DO_text-head"/>

p:text-head input

portcontent typessequence?primary?
source text false (true)

p:text-head output

portcontent typessequence?primary?
result text false (true)

p:text-head option

namedata typedefault
count xs:integer REQUIRED
p:text-join
<p:text-join name="DO_text-join"
  override-content-type="[xs:string?]"
  prefix="[xs:string?]"
  separator="[xs:string?]"
  suffix="[xs:string?]">
  <p:with-input port="source" sequence="true" content-types="text"/>
</p:text-join>
<p:with-input port="..." pipe="@DO_text-join"/>

p:text-join input

portcontent typessequence?primary?
source text true (true)

p:text-join output

portcontent typessequence?primary?
result text (false) (true)

p:text-join options

namedata typedefault
override-content-type xs:string? ()
prefix xs:string? ()
separator xs:string? ()
suffix xs:string? ()
p:text-replace
<p:text-replace name="DO_text-replace"
  flags="[xs:string?]"
  pattern="[xs:string]"
  replacement="[xs:string]">
  <p:with-input port="source" primary="true" sequence="false" content-types="text"/>
</p:text-replace>
<p:with-input port="..." pipe="@DO_text-replace"/>

p:text-replace input

portcontent typessequence?primary?
source text false (true)

p:text-replace output

portcontent typessequence?primary?
result text false (true)

p:text-replace options

namedata typedefault
flags xs:string? ()
pattern xs:string REQUIRED
replacement xs:string REQUIRED
p:text-sort
<p:text-sort name="DO_text-sort"
  case-order="[xs:string?]"
  collation="[xs:string] 'http://www.w3.org/2005/xpath-functions/collation/codepoint'"
  lang="[xs:language?]"
  order="[xs:string] 'ascending'"
  sort-key="[xs:string] '.'"
  stable="[xs:boolean] true()">
  <p:with-input port="source" primary="true" sequence="false" content-types="text"/>
</p:text-sort>
<p:with-input port="..." pipe="@DO_text-sort"/>

p:text-sort input

portcontent typessequence?primary?
source text false (true)

p:text-sort output

portcontent typessequence?primary?
result text false (true)

p:text-sort options

namedata typedefault
case-order xs:string? ()
collation xs:string 'http://www.w3.org/2005/xpath-functions/collation/codepoint'
lang xs:language? ()
order xs:string 'ascending'
sort-key xs:string '.'
stable xs:boolean true()
p:text-tail
<p:text-tail name="DO_text-tail"
  count="[xs:integer]">
  <p:with-input port="source" primary="true" sequence="false" content-types="text"/>
</p:text-tail>
<p:with-input port="..." pipe="@DO_text-tail"/>

p:text-tail input

portcontent typessequence?primary?
source text false (true)

p:text-tail output

portcontent typessequence?primary?
result text false (true)

p:text-tail option

namedata typedefault
count xs:integer REQUIRED
p:unarchive
<p:unarchive name="DO_unarchive"
  exclude-filter="[xs:string*]"
  format="[xs:QName?]"
  include-filter="[xs:string*]"
  override-content-types="[array(array(xs:string))?]"
  parameters="[map(xs:QName, item()*)?]"
  relative-to="[xs:anyURI?]">
  <p:with-input port="source" primary="true" content-types="any" sequence="false"/>
</p:unarchive>
<p:with-input port="..." pipe="@DO_unarchive"/>

p:unarchive input

portcontent typessequence?primary?
source any false (true)

p:unarchive output

portcontent typessequence?primary?
result any true (true)

p:unarchive options

namedata typedefault
exclude-filter xs:string* ()
format xs:QName? ()
include-filter xs:string* ()
override-content-types array(array(xs:string))? ()
parameters map(xs:QName, item()*)? ()
relative-to xs:anyURI? ()
p:uncompress
<p:uncompress name="DO_uncompress"
  content-type="[xs:string] 'application/octet-stream'"
  format="[xs:QName?]"
  parameters="[map(xs:QName,item()*)?]">
  <p:with-input port="source" primary="true" content-types="any" sequence="false"/>
</p:uncompress>
<p:with-input port="..." pipe="@DO_uncompress"/>

p:uncompress input

portcontent typessequence?primary?
source any false (true)

p:uncompress output

portcontent typessequence?primary?
result any false (true)

p:uncompress options

namedata typedefault
content-type xs:string 'application/octet-stream'
format xs:QName? ()
parameters map(xs:QName,item()*)? ()
p:unwrap
<p:unwrap name="DO_unwrap"
  match="[xs:string] '/*'">
  <p:with-input port="source" content-types="xml html"/>
</p:unwrap>
<p:with-input port="..." pipe="@DO_unwrap"/>

p:unwrap input

portcontent typessequence?primary?
source xml html (false) (true)

p:unwrap output

portcontent typessequence?primary?
result text xml html (false) (true)

p:unwrap option

namedata typedefault
match xs:string '/*'
p:uuid
<p:uuid name="DO_uuid"
  match="[xs:string] '/*'"
  parameters="[map(xs:QName, item()*)?]"
  version="[xs:integer?]">
  <p:with-input port="source" primary="true" content-types="xml html"/>
</p:uuid>
<p:with-input port="..." pipe="@DO_uuid"/>

p:uuid input

portcontent typessequence?primary?
source xml html (false) (true)

p:uuid output

portcontent typessequence?primary?
result text xml html (false) (true)

p:uuid options

namedata typedefault
match xs:string '/*'
parameters map(xs:QName, item()*)? ()
version xs:integer? ()
p:wrap-sequence
<p:wrap-sequence name="DO_wrap-sequence"
  group-adjacent="[xs:string?]"
  wrapper="[xs:QName]">
  <p:with-input port="source" content-types="text xml html" sequence="true"/>
</p:wrap-sequence>
<p:with-input port="..." pipe="@DO_wrap-sequence"/>

p:wrap-sequence input

portcontent typessequence?primary?
source text xml html true (true)

p:wrap-sequence output

portcontent typessequence?primary?
result application/xml true (true)

p:wrap-sequence options

namedata typedefault
group-adjacent xs:string? ()
wrapper xs:QName REQUIRED
p:wrap
<p:wrap name="DO_wrap"
  group-adjacent="[xs:string?]"
  match="[xs:string]"
  wrapper="[xs:QName]">
  <p:with-input port="source" content-types="xml html"/>
</p:wrap>
<p:with-input port="..." pipe="@DO_wrap"/>

p:wrap input

portcontent typessequence?primary?
source xml html (false) (true)

p:wrap output

portcontent typessequence?primary?
result application/xml (false) (true)

p:wrap options

namedata typedefault
group-adjacent xs:string? ()
match xs:string REQUIRED
wrapper xs:QName REQUIRED
p:www-form-urldecode
<p:www-form-urldecode name="DO_www-form-urldecode"
  value="[xs:string]"/>
<p:with-input port="..." pipe="@DO_www-form-urldecode"/>

p:www-form-urldecode output

portcontent typessequence?primary?
result application/json (false) (true)

p:www-form-urldecode option

namedata typedefault
value xs:string REQUIRED
p:www-form-urlencode
<p:www-form-urlencode name="DO_www-form-urlencode"
  parameters="[map(xs:string,xs:anyAtomicType+)]"/>
<p:with-input port="..." pipe="@DO_www-form-urlencode"/>

p:www-form-urlencode output

portcontent typessequence?primary?
result text/plain (false) (true)

p:www-form-urlencode option

namedata typedefault
parameters map(xs:string,xs:anyAtomicType+) REQUIRED
p:xinclude
<p:xinclude name="DO_xinclude"
  fixup-xml-base="[xs:boolean] false()"
  fixup-xml-lang="[xs:boolean] false()">
  <p:with-input port="source" content-types="xml html"/>
</p:xinclude>
<p:with-input port="..." pipe="@DO_xinclude"/>

p:xinclude input

portcontent typessequence?primary?
source xml html (false) (true)

p:xinclude output

portcontent typessequence?primary?
result xml html (false) (true)

p:xinclude options

namedata typedefault
fixup-xml-base xs:boolean false()
fixup-xml-lang xs:boolean false()
p:xquery
<p:xquery name="DO_xquery"
  parameters="[map(xs:QName,item()*)?]"
  version="[xs:string?]">
  <p:with-input port="source" content-types="any" sequence="true" primary="true"/>
  <p:with-input port="query" content-types="text xml"/>
</p:xquery>
<p:with-input port="..." pipe="@DO_xquery"/>

p:xquery inputs

portcontent typessequence?primary?
source any true true
query text xml (false) (false)

p:xquery output

portcontent typessequence?primary?
result any true (true)

p:xquery options

namedata typedefault
parameters map(xs:QName,item()*)? ()
version xs:string? ()
p:xslt
<p:xslt name="DO_xslt"
  global-context-item="[item()?]"
  initial-mode="[xs:QName?]"
  output-base-uri="[xs:anyURI?]"
  parameters="[map(xs:QName,item()*)?]"
  populate-default-collection="[xs:boolean?] true()"
  static-parameters="[map(xs:QName,item()*)?]"
  template-name="[xs:QName?]"
  version="[xs:string?]">
  <p:with-input port="source" content-types="any" sequence="true" primary="true"/>
  <p:with-input port="stylesheet" content-types="xml"/>
</p:xslt>
<p:with-input port="..." pipe="result@DO_xslt"/>
<p:with-input port="..." pipe="secondary@DO_xslt"/>

p:xslt inputs

portcontent typessequence?primary?
source any true true
stylesheet xml (false) (false)

p:xslt outputs

portcontent typessequence?primary?
result any true true
secondary any true (false)

p:xslt options

namedata typedefault
global-context-item item()? ()
initial-mode xs:QName? ()
output-base-uri xs:anyURI? ()
parameters map(xs:QName,item()*)? ()
populate-default-collection xs:boolean? true()
static-parameters map(xs:QName,item()*)? ()
template-name xs:QName? ()
version xs:string? ()

IXML library

p:invisible-xml
<p:invisible-xml name="DO_invisible-xml"
  fail-on-error="[xs:boolean] true()"
  parameters="[map(xs:QName, item()*)?]">
  <p:with-input port="source" primary="true" content-types="any -xml -html"/>
  <p:with-input port="grammar" sequence="true" content-types="text xml"/>
</p:invisible-xml>
<p:with-input port="..." pipe="@DO_invisible-xml"/>

p:invisible-xml inputs

portcontent typessequence?primary?
source any -xml -html (false) true
grammar text xml true (false)

p:invisible-xml output

portcontent typessequence?primary?
result any true (true)

p:invisible-xml options

namedata typedefault
fail-on-error xs:boolean true()
parameters map(xs:QName, item()*)? ()

MAIL library

p:send-mail

Unsupported in MorganaXProc-IIIse

<p:send-mail name="DO_send-mail"
  auth="[map(xs:string, item()+)?]"
  parameters="[map(xs:QName, item()*)?]"
  serialization="[map(xs:QName,item()*)?]">
  <p:with-input port="source" sequence="true" content-types="any"/>
</p:send-mail>
<p:with-input port="..." pipe="@DO_send-mail"/>

p:send-mail input

portcontent typessequence?primary?
source any true (true)

p:send-mail output

portcontent typessequence?primary?
result application/xml (false) (true)

p:send-mail options

namedata typedefault
auth map(xs:string, item()+)? ()
parameters map(xs:QName, item()*)? ()
serialization map(xs:QName,item()*)? ()

FILE library

p:directory-list
<p:directory-list name="DO_directory-list"
  detailed="[xs:boolean] false()"
  exclude-filter="[xs:string*]"
  include-filter="[xs:string*]"
  max-depth="[xs:string?] '1'"
  override-content-types="[array(array(xs:string))?]"
  path="[xs:anyURI]"/>
<p:with-input port="..." pipe="@DO_directory-list"/>

p:directory-list output

portcontent typessequence?primary?
result application/xml (false) (true)

p:directory-list options

namedata typedefault
detailed xs:boolean false()
exclude-filter xs:string* ()
include-filter xs:string* ()
max-depth xs:string? '1'
override-content-types array(array(xs:string))? ()
path xs:anyURI REQUIRED
p:file-copy
<p:file-copy name="DO_file-copy"
  fail-on-error="[xs:boolean] true()"
  href="[xs:anyURI]"
  overwrite="[xs:boolean] true()"
  target="[xs:anyURI]"/>
<p:with-input port="..." pipe="@DO_file-copy"/>

p:file-copy output

portcontent typessequence?primary?
result application/xml (false) (true)

p:file-copy options

namedata typedefault
fail-on-error xs:boolean true()
href xs:anyURI REQUIRED
overwrite xs:boolean true()
target xs:anyURI REQUIRED
p:file-delete
<p:file-delete name="DO_file-delete"
  fail-on-error="[xs:boolean] true()"
  href="[xs:anyURI]"
  recursive="[xs:boolean] false()"/>
<p:with-input port="..." pipe="@DO_file-delete"/>

p:file-delete output

portcontent typessequence?primary?
result application/xml (false) (true)

p:file-delete options

namedata typedefault
fail-on-error xs:boolean true()
href xs:anyURI REQUIRED
recursive xs:boolean false()
p:file-info
<p:file-info name="DO_file-info"
  fail-on-error="[xs:boolean] true()"
  href="[xs:anyURI]"
  override-content-types="[array(array(xs:string))?]"/>
<p:with-input port="..." pipe="@DO_file-info"/>

p:file-info output

portcontent typessequence?primary?
result application/xml (false) (true)

p:file-info options

namedata typedefault
fail-on-error xs:boolean true()
href xs:anyURI REQUIRED
override-content-types array(array(xs:string))? ()
p:file-mkdir
<p:file-mkdir name="DO_file-mkdir"
  fail-on-error="[xs:boolean] true()"
  href="[xs:anyURI]"/>
<p:with-input port="..." pipe="@DO_file-mkdir"/>

p:file-mkdir output

portcontent typessequence?primary?
result application/xml (false) (true)

p:file-mkdir options

namedata typedefault
fail-on-error xs:boolean true()
href xs:anyURI REQUIRED
p:file-move
<p:file-move name="DO_file-move"
  fail-on-error="[xs:boolean] true()"
  href="[xs:anyURI]"
  target="[xs:anyURI]"/>
<p:with-input port="..." pipe="@DO_file-move"/>

p:file-move output

portcontent typessequence?primary?
result application/xml (false) (true)

p:file-move options

namedata typedefault
fail-on-error xs:boolean true()
href xs:anyURI REQUIRED
target xs:anyURI REQUIRED
p:file-create-tempfile
<p:file-create-tempfile name="DO_file-create-tempfile"
  delete-on-exit="[xs:boolean] false()"
  fail-on-error="[xs:boolean] true()"
  href="[xs:anyURI?]"
  prefix="[xs:string?]"
  suffix="[xs:string?]"/>
<p:with-input port="..." pipe="@DO_file-create-tempfile"/>

p:file-create-tempfile output

portcontent typessequence?primary?
result application/xml (false) (true)

p:file-create-tempfile options

namedata typedefault
delete-on-exit xs:boolean false()
fail-on-error xs:boolean true()
href xs:anyURI? ()
prefix xs:string? ()
suffix xs:string? ()
p:file-touch
<p:file-touch name="DO_file-touch"
  fail-on-error="[xs:boolean] true()"
  href="[xs:anyURI]"
  timestamp="[xs:dateTime?]"/>
<p:with-input port="..." pipe="@DO_file-touch"/>

p:file-touch output

portcontent typessequence?primary?
result application/xml (false) (true)

p:file-touch options

namedata typedefault
fail-on-error xs:boolean true()
href xs:anyURI REQUIRED
timestamp xs:dateTime? ()

OS library

p:os-info

Unsupported in MorganaXProc-IIIse

<p:os-info name="DO_os-info"/>
<p:with-input port="..." pipe="@DO_os-info"/>

p:os-info output

portcontent typessequence?primary?
result application/xml (false) (true)
p:os-exec

Unsupported in MorganaXProc-IIIse

<p:os-exec name="DO_os-exec"
  args="[xs:string*] ()"
  command="[xs:string]"
  cwd="[xs:string?]"
  error-content-type="[xs:string] 'text/plain'"
  failure-threshold="[xs:integer?]"
  path-separator="[xs:string?]"
  result-content-type="[xs:string] 'text/plain'"
  serialization="[map(xs:QName,item()*)?]">
  <p:with-input port="source" sequence="true" content-types="any"/>
</p:os-exec>
<p:with-input port="..." pipe="result@DO_os-exec"/>
<p:with-input port="..." pipe="error@DO_os-exec"/>
<p:with-input port="..." pipe="exit-status@DO_os-exec"/>

p:os-exec input

portcontent typessequence?primary?
source any true (true)

p:os-exec outputs

portcontent typessequence?primary?
result any true true
error any true (false)
exit-status application/xml (false) (false)

p:os-exec options

namedata typedefault
args xs:string* ()
command xs:string REQUIRED
cwd xs:string? ()
error-content-type xs:string 'text/plain'
failure-threshold xs:integer? ()
path-separator xs:string? ()
result-content-type xs:string 'text/plain'
serialization map(xs:QName,item()*)? ()

PAGED-MEDIA library

p:css-formatter

Unsupported in MorganaXProc-IIIse

<p:css-formatter name="DO_css-formatter"
  content-type="[xs:string?]"
  parameters="[map(xs:QName,item()*)?]">
  <p:with-input port="source" content-types="xml html"/>
  <p:with-input port="stylesheet" content-types="text" sequence="true"/>
</p:css-formatter>
<p:with-input port="..." pipe="@DO_css-formatter"/>

p:css-formatter inputs

portcontent typessequence?primary?
source xml html (false) (false)
stylesheet text true (false)

p:css-formatter output

portcontent typessequence?primary?
result any (false) (true)

p:css-formatter options

namedata typedefault
content-type xs:string? ()
parameters map(xs:QName,item()*)? ()
p:xsl-formatter

Unsupported in MorganaXProc-IIIse

<p:xsl-formatter name="DO_xsl-formatter"
  content-type="[xs:string?]"
  parameters="[map(xs:QName,item()*)?]">
  <p:with-input port="source" content-types="xml"/>
</p:xsl-formatter>
<p:with-input port="..." pipe="@DO_xsl-formatter"/>

p:xsl-formatter input

portcontent typessequence?primary?
source xml (false) (true)

p:xsl-formatter output

portcontent typessequence?primary?
result any (false) (true)

p:xsl-formatter options

namedata typedefault
content-type xs:string? ()
parameters map(xs:QName,item()*)? ()

VALIDATION library

p:validate-with-nvdl

Unsupported in MorganaXProc-IIIse

<p:validate-with-nvdl name="DO_validate-with-nvdl"
  assert-valid="[xs:boolean] true()"
  parameters="[map(xs:QName,item()*)?]"
  report-format="[xs:string] 'xvrl'">
  <p:with-input port="source" primary="true" content-types="xml html"/>
  <p:with-input port="nvdl" content-types="xml"/>
  <p:with-input port="schemas" sequence="true" content-types="text xml"/>
</p:validate-with-nvdl>
<p:with-input port="..." pipe="result@DO_validate-with-nvdl"/>
<p:with-input port="..." pipe="report@DO_validate-with-nvdl"/>

p:validate-with-nvdl inputs

portcontent typessequence?primary?
source xml html (false) true
nvdl xml (false) (false)
schemas text xml true (false)

p:validate-with-nvdl outputs

portcontent typessequence?primary?
result xml html (false) true
report xml json true (false)

p:validate-with-nvdl options

namedata typedefault
assert-valid xs:boolean true()
parameters map(xs:QName,item()*)? ()
report-format xs:string 'xvrl'
p:validate-with-relax-ng
<p:validate-with-relax-ng name="DO_validate-with-relax-ng"
  assert-valid="[xs:boolean] true()"
  dtd-attribute-values="[xs:boolean] false()"
  dtd-id-idref-warnings="[xs:boolean] false()"
  parameters="[map(xs:QName,item()*)?]"
  report-format="[xs:string] 'xvrl'">
  <p:with-input port="source" primary="true" content-types="xml html"/>
  <p:with-input port="schema" content-types="text xml"/>
</p:validate-with-relax-ng>
<p:with-input port="..." pipe="result@DO_validate-with-relax-ng"/>
<p:with-input port="..." pipe="report@DO_validate-with-relax-ng"/>

p:validate-with-relax-ng inputs

portcontent typessequence?primary?
source xml html (false) true
schema text xml (false) (false)

p:validate-with-relax-ng outputs

portcontent typessequence?primary?
result xml html (false) true
report xml json true (false)

p:validate-with-relax-ng options

namedata typedefault
assert-valid xs:boolean true()
dtd-attribute-values xs:boolean false()
dtd-id-idref-warnings xs:boolean false()
parameters map(xs:QName,item()*)? ()
report-format xs:string 'xvrl'
p:validate-with-schematron
<p:validate-with-schematron name="DO_validate-with-schematron"
  assert-valid="[xs:boolean] true()"
  parameters="[map(xs:QName,item()*)?]"
  phase="[xs:string] '#DEFAULT'"
  report-format="[xs:string] 'svrl'">
  <p:with-input port="source" primary="true" content-types="xml html"/>
  <p:with-input port="schema" content-types="xml"/>
</p:validate-with-schematron>
<p:with-input port="..." pipe="result@DO_validate-with-schematron"/>
<p:with-input port="..." pipe="report@DO_validate-with-schematron"/>

p:validate-with-schematron inputs

portcontent typessequence?primary?
source xml html (false) true
schema xml (false) (false)

p:validate-with-schematron outputs

portcontent typessequence?primary?
result xml html (false) true
report xml json true (false)

p:validate-with-schematron options

namedata typedefault
assert-valid xs:boolean true()
parameters map(xs:QName,item()*)? ()
phase xs:string '#DEFAULT'
report-format xs:string 'svrl'
p:validate-with-xml-schema
<p:validate-with-xml-schema name="DO_validate-with-xml-schema"
  assert-valid="[xs:boolean] true()"
  mode="[] 'strict'"
  parameters="[map(xs:QName,item()*)?]"
  report-format="[xs:string] 'xvrl'"
  try-namespaces="[xs:boolean] false()"
  use-location-hints="[xs:boolean] false()"
  version="[xs:string?]">
  <p:with-input port="source" primary="true" content-types="xml html"/>
  <p:with-input port="schema" sequence="true" content-types="xml"/>
</p:validate-with-xml-schema>
<p:with-input port="..." pipe="result@DO_validate-with-xml-schema"/>
<p:with-input port="..." pipe="report@DO_validate-with-xml-schema"/>

p:validate-with-xml-schema inputs

portcontent typessequence?primary?
source xml html (false) true
schema xml true (false)

p:validate-with-xml-schema outputs

portcontent typessequence?primary?
result xml html (false) true
report xml json true (false)

p:validate-with-xml-schema options

namedata typedefault
assert-valid xs:boolean true()
mode 'strict'
parameters map(xs:QName,item()*)? ()
report-format xs:string 'xvrl'
try-namespaces xs:boolean false()
use-location-hints xs:boolean false()
version xs:string? ()
p:validate-with-json-schema
<p:validate-with-json-schema name="DO_validate-with-json-schema"
  assert-valid="[xs:boolean] true()"
  default-version="[xs:string?]"
  parameters="[map(xs:QName,item()*)?]"
  report-format="[xs:string] 'xvrl'">
  <p:with-input port="source" primary="true" content-types="json"/>
  <p:with-input port="schema" sequence="false" content-types="json"/>
</p:validate-with-json-schema>
<p:with-input port="..." pipe="result@DO_validate-with-json-schema"/>
<p:with-input port="..." pipe="report@DO_validate-with-json-schema"/>

p:validate-with-json-schema inputs

portcontent typessequence?primary?
source json (false) true
schema json false (false)

p:validate-with-json-schema outputs

portcontent typessequence?primary?
result json (false) true
report xml json true (false)

p:validate-with-json-schema options

namedata typedefault
assert-valid xs:boolean true()
default-version xs:string? ()
parameters map(xs:QName,item()*)? ()
report-format xs:string 'xvrl'
p:validate-with-dtd
<p:validate-with-dtd name="DO_validate-with-dtd"
  assert-valid="[xs:boolean] true()"
  report-format="[xs:string] 'xvrl'"
  serialization="[map(xs:QName,item()*)?]">
  <p:with-input port="source" primary="true" content-types="xml html"/>
</p:validate-with-dtd>
<p:with-input port="..." pipe="result@DO_validate-with-dtd"/>
<p:with-input port="..." pipe="report@DO_validate-with-dtd"/>

p:validate-with-dtd input

portcontent typessequence?primary?
source xml html (false) (true)

p:validate-with-dtd outputs

portcontent typessequence?primary?
result xml html (false) true
report xml json true (false)

p:validate-with-dtd options

namedata typedefault
assert-valid xs:boolean true()
report-format xs:string 'xvrl'
serialization map(xs:QName,item()*)? ()