The set of parameters is encoded as a single x-www-form-urlencoded string of name/value pairs. When parameters are encoded into name/value pairs, only the local name of each parameter is used. The namespace name is ignored and no prefix or colon appears in the name.
The parameters are encoded in document order. That is, the first parameter appears first in the resulting string, the second parameter second, etc. reading from left to right.
The matched nodes are specified with the match pattern in the match option. For each matching node, the encoded string is used in the output. Nodes that do not match are copied without change.
If the expression given in the match option matches an attribute, the encoded string is used as the new value of the attribute in the output. If the expression matches any other kind of node, the entire node (and not just its contents) is replaced by the encoded string.
The p:xquery step applies an [XQuery 1.0] query to the sequence of documents provided on the source port.
<p:declare-step
type
="
p:xquery
"
>
<p:input
port
="
source
"
sequence
="
true
"
primary
="
true
"
/>
<p:input
port
="
query
"
/>
<p:input
port
="
parameters
"
kind
="
parameter
"
/>
<p:output
port
="
result
"
sequence
="
true
"
/>
</p:declare-step>
If a sequence of documents is provided on the source port, the first document is used as the initial context item. The whole sequence is also the default collection. If no documents are provided on the source port, the initial context item is undefined and the default collection is empty.
The query port must receive a single document:
If the document root element is c:query, the text descendants of this element are considered the query.
<c:query>
string
</c:query>
If the document root element is in the XQueryX namespace, the document is treated as an XQueryX-encoded query. Support for XQueryX is implementation-defined.
If the document root element is c:data and either does not have a content-type attribute or has a content-type attribute that specifies a text content type or a media type that the implementation recognizes, then the text descendants of this element are considered the query.
If the document root element is not c:data but has a c:content-type attribute that specifies a text content type or a media type that the implementation recognizes, then the text descendants of this element are considered the query.
Otherwise, the interpretation of the query is implementation-defined.
The result of the p:xquery step
must be a sequence of documents. It is a dynamic error (err:XC0057
) if the
sequence that results from evaluating the XQuery contains items
other than documents and elements. Any elements that appear in the
result sequence will be treated as documents with the element as
their document element.
For example:
<c:query> declare namespace atom="http://www.w3.org/2005/Atom"; /atom:feed/atom:entry </c:query>
The output of this step may include PSVI annotations.
The static context of the XQuery processor is augmented in the following way:
document()*
Unchanged from the implementation defaults. No namespace declarations in the XProc pipeline are automatically exposed in the static context.
The dynamic context of the XQuery processor is augmented in the following way:
The first document that appears on the source port.
1
1
Any parameters passed on the parameters port augment any implementation-defined variable bindings known to the XQuery processor. The parameter values are passed to the XQuery processor as values of type xs:untypedAtomic.
The function implementations provided by the XQuery processor.
The point in time returned as the current dateTime is implementation-defined.
The implicit timezone is implementation-defined.
The set of available documents (those that may be retrieved with a URI) is implementation-dependent.
The set of available collections is implementation-dependent.
The sequence of documents provided on the source port.
The following pipeline applies XInclude processing and schema validation before using XQuery:
<p:pipeline xmlns:p="http://www.w3.org/ns/xproc" version="1.0"> <p:xinclude/> <p:validate-with-xml-schema name="validate"> <p:input port="schema"> <p:document href="http://example.com/path/to/schema.xsd"/> </p:input> </p:validate-with-xml-schema> <p:xquery> <p:input port="query"> <p:data href="countp.xq" /> </p:input> </p:xquery> </p:pipeline>
Where countp.xq might contain:
<count>{count(.//p)}</count>
The p:xsl-formatter step receives an [XSL 1.1] document and renders the content. The result of rendering is stored to the URI provided via the href option. A reference to that result is produced on the output port.
<p:declare-step
type
="
p:xsl-formatter
"
>
<p:input
port
="
source
"
/>
<p:input
port
="
parameters
"
kind
="
parameter
"
/>
<p:output
port
="
result
"
primary
="
false
"
/>
<p:option
name
="
href
"
required
="
true
"
/>
<!--
anyURI -->
<p:option
name
="
content-type
"
/>
<!--
string -->
</p:declare-step>
The value of the href option must be an anyURI. If it is relative, it is made absolute against the base URI of the element on which it is specified (p:with-option or p:xsl-formatter in the case of a syntactic shortcut value).
The content-type of the output is controlled by the content-type option. This option specifies a media type as defined by [IANA Media Types]. The option may include media type parameters as well (e.g. "application/someformat; charset=UTF-8"). The use of media type parameters on the content-type option is implementation-defined.
If the content-type option is not specified, the output type is implementation-defined. The default should be PDF.
A formatter may take any number of optional rendering parameters via the step's parameters; such parameters are defined by the XSL implementation used and are implementation-defined.
The output of this step is a document containing a single c:result element whose content is the absolute URI of the document stored by the step.
Several steps in this step library require serialization options to control the serialization of XML. These options are used to control serialization as in the [Serialization] specification.
The following options may be present on steps that perform serialization:
The value of this option must be a boolean. If it's not specified, the default varies by encoding: for UTF-16 it's true, for all others, it's false.
The value of this option must be a list of QNames. They are interpreted as elements name.
The value of this option must be a string. The public identifier of the doctype.
The value of this option must be an anyURI. The system identifier of the doctype. It need not be absolute, and is not resolved.
A character set name. If no encoding is specified, the encoding used is implementation defined. If the method is “xml” or “xhtml”, the implementation defined encoding must be either UTF-8 or UTF-16.
The value of this option must be a boolean. It is ignored unless the specified method is “xhtml” or “html”.
The value of this option must be a boolean. It is ignored unless the specified method is “xhtml” or “html”.
The value of this option must be a boolean.
The value of this option must be a string. It specifies the media type (MIME content type). If not specified, the default varies according to the method:
application/xml
text/html
application/xhtml+xml
text/plain
For methods other than xml, html, xhtml, and text; the media-type is implementation defined.
The value of this option must be a QName. It specifies the serialization method.
The value of this option must be an NMTOKEN, one of the enumerated values NFC, NFD, NFKC, NFKD, fully-normalized, none or an implementation-defined value.
The value of this option must be a boolean.
The value of this option must be an NMTOKEN, one of the enumerated values true, false, or omit.
The value of this option must be a boolean.
The value of this option must be a string.
In order to be consistent with the rest of this specification, boolean values for the serialization parameters must use one of the XML Schema lexical forms for boolean: "true", "false", "1", or "0". This is different from the [Serialization] specification which uses “yes” and “no”. No change in semantics is implied by this different spelling.
The method option controls the serialization method used by this component with standard values of 'html', 'xml', 'xhtml', and 'text' but only the 'xml' value is required to be supported. The interpretation of the remaining options is as specified in [Serialization].
Implementations may support other method values but their results are implementation-defined.
A minimally conforming implementation must support the xml output method with the following option values:
The version must support the value 1.0.
The encoding must support the values UTF-8.
The omit-xml-declaration must be supported. If the value is not specified or has the value no, an XML declaration must be produced.
All other option values may be ignored for the xml output method.
If a processor chooses to implement an option for serialization, it must conform to the semantics defined in the [Serialization] specification.
The use-character-maps parameter in [Serialization] specification has not been provided in the standard serialization options provided by this specification.
Conformant processors must implement all of the features described in this specification except those that are explicitly identified as optional.
Some aspects of processor behavior are not completely specified; those features are either implementation-dependent or implementation-defined.
[Definition: An implementation-dependent feature is one where the implementation has discretion in how it is performed. Implementations are not required to document or explain how implementation-dependent features are performed.]
[Definition: An implementation-defined feature is one where the implementation has discretion in how it is performed. Conformant implementations must document how implementation-defined features are performed.]
The following features are implementation-defined:
The following features are implementation-dependent:
This specification conforms to the XML Information Set [Infoset]. The information corresponding to the following information items and properties must be available to the processor for the documents that flow through the pipeline.
The Document Information Item with [base URI] and [children] properties.
Element Information Items with [base URI], [children], [attributes], [in-scope namespaces], [prefix], [local name], [namespace name], [parent] properties.
Attribute Information Items with [namespace name], [prefix], [local name], [normalized value], [attribute type], and [owner element] properties.
Character Information Items with [character code], [parent], and, optionally, [element content whitespace] properties.
Processing Instruction Information Items with [base URI], [target], [content] and [parent] properties.
Comment Information Items with [content] and [parent] properties.
Namespace Information Items with [prefix] and [namespace name] properties.
It is implementation-defined whether additional information items and properties, particularly those made available in the PSVI, are preserved between steps.
[XProc Requirements] XML Processing Model Requirements and Use Cases. Alex Milowski, editor. W3C Working Draft 11 April 2006.
[Infoset] XML Information Set (Second Edition). John Cowan, Richard Tobin, editors. W3C Working Group Note 04 February 2004.
[XML 1.0] Extensible Markup Language (XML) 1.0 (Fifth Edition). Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, et. al. editors. W3C Recommendation 26 November 2008.
[Namespaces 1.0] Namespaces in XML 1.0 (Third Edition). Tim Bray, Dave Hollander, Andrew Layman, et. al., editors. W3C Recommendation 8 December 2009.
[XML 1.1] Extensible Markup Language (XML) 1.1 (Second Edition). Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, et. al. editors. W3C Recommendation 16 August 2006.
[Namespaces 1.1] Namespaces in XML 1.1 (Second Edition). Tim Bray, Dave Hollander, Andrew Layman, et. al., editors. W3C Recommendation 16 August 2006.
[XPath 1.0] XML Path Language (XPath) Version 1.0. James Clark and Steve DeRose, editors. W3C Recommendation. 16 November 1999.
[XSLT 1.0] XSL Transformations (XSLT) Version 1.0. James Clark, editor. W3C Recommendation. 16 November 1999.
[XPath 2.0] XML Path Language (XPath) 2.0. Anders Berglund, Scott Boag, Don Chamberlin, et. al., editors. W3C Recommendation. 23 January 2007.
[XQuery 1.0 and XPath 2.0 Data Model (XDM)] XQuery 1.0 and XPath 2.0 Data Model (XDM). Mary Fernández, Ashok Malhotra, Jonathan Marsh, et. al., editors. W3C Recommendation. 23 January 2007.
[XPath 2.0 Functions and Operators] XQuery 1.0 and XPath 2.0 Functions and Operators. Ashok Malhotra, Jim Melton, and Norman Walsh, editors. W3C Recommendation. 23 January 2007.
[XSLT 2.0] XSL Transformations (XSLT) Version 2.0. Michael Kay, editor. W3C Recommendation. 23 January 2007.
[XSL 1.1] Extensible Stylesheet Language (XSL) Version 1.1. Anders Berglund, editor. W3C Recommendation. 5 December 2006.
[XQuery 1.0] XQuery 1.0: An XML Query Language. Scott Boag, Don Chamberlin, Mary Fernández, et. al., editors. W3C Recommendation. 23 January 2007.
[RELAX NG] ISO/IEC JTC 1/SC 34. ISO/IEC 19757-2:2008(E) Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG 2008.
[RELAX NG Compact Syntax] ISO/IEC JTC 1/SC 34. ISO/IEC 19757-2:2003/Amd 1:2006 Document Schema Definition Languages (DSDL) — Part 2: Grammar-based validation — RELAX NG AMENDMENT 1 Compact Syntax 2006.
[RELAX NG DTD Compatibility] RELAX NG DTD Compatibility. OASIS Committee Specification. 3 December 2001.
[Schematron] ISO/IEC JTC 1/SC 34. ISO/IEC 19757-3:2006(E) Document Schema Definition Languages (DSDL) — Part 3: Rule-based validation — Schematron 2006.
[W3C XML Schema: Part 1] XML Schema Part 1: Structures Second Edition. Henry S. Thompson, David Beech, Murray Maloney, et. al., editors. World Wide Web Consortium, 28 October 2004.
[W3C XML Schema: Part 2] XML Schema Part 2: Datatypes Second Edition. Paul V. Biron and Ashok Malhotra, editors. World Wide Web Consortium, 28 October 2004.
[xml:id] xml:id Version 1.0. Jonathan Marsh, Daniel Veillard, and Norman Walsh, editors. W3C Recommendation. 9 September 2005.
[XInclude] XML Inclusions (XInclude) Version 1.0 (Second Edition). Jonathan Marsh, David Orchard, and Daniel Veillard, editors. W3C Recommendation. 15 November 2006.
[XML Base] XML Base (Second Edition). Jonathan Marsh and Richard Tobin, editors. W3C Recommendation. 28 January 2009.
[XPointer Framework] XPointer Framework. Paul Grosso, Eve Maler, Jonathan Marsh, et. al., editors. W3C Recommendation. 25 March 2003.
[XPointer element() Scheme] XPointer element() Scheme. Paul Grosso, Eve Maler, Jonathan Marsh, et. al., editors. W3C Recommendation. 25 March 2003.
[Serialization] XSLT 2.0 and XQuery 1.0 Serialization. Scott Boag, Michael Kay, Joanne Tong, Norman Walsh, and Henry Zongaro, editors. W3C Recommendation. 23 January 2007.
[MD5] RFC 1321: The MD5 Message-Digest Algorithm. R. Rivest. Network Working Group, IETF, April 1992.
[RFC 1521] RFC 1521: MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies. N. Borenstein, N. Freed, editors. Internet Engineering Task Force. September, 1993.
[RFC 2119] Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. Network Working Group, IETF, Mar 1997.
[RFC 2396] Uniform Resource Identifiers (URI): Generic Syntax. T. Berners-Lee, R. Fielding, and L. Masinter. Network Working Group, IETF, Aug 1998.
[RFC 2616] RFC 2616: Hypertext Transfer Protocol — HTTP/1.1. R. Fielding, J. Gettys, J. Mogul, et. al., editors. Internet Engineering Task Force. June, 1999.
[RFC 2617] RFC 2617: HTTP Authentication: Basic and Digest Access Authentication. J. Franks, P. Hallam-Baker, J. Hostetler, S. Lawrence, P. Leach, A. Luotonen, L. Stewart. June, 1999 .
[RFC 3023] RFC 3023: XML Media Types. M. Murata, S. St. Laurent, and D. Kohn, editors. Internet Engineering Task Force. January, 2001.
[RFC 3548] RFC 3548: The Base16, Base32, and Base64 Data Encodings. S. Josefsson, Editor. Internet Engineering Task Force. July, 2003.
[RFC 3986] RFC 3986: Uniform Resource Identifier (URI): General Syntax. T. Berners-Lee, R. Fielding, and L. Masinter, editors. Internet Engineering Task Force. January, 2005.
[RFC 3987] RFC 3987: Internationalized Resource Identifiers (IRIs). M. Duerst and M. Suignard, editors. Internet Engineering Task Force. January, 2005.
[Unicode TR#17] Unicode Technical Report #17: Character Encoding Model. Ken Whistler, Mark Davis, and Asmus Freytag, authors. The Unicode Consortium. 11 November 2008.
[IANA Media Types] IANA MIME Media Types. Internet Engineering Task Force.
[HTML Tidy] HTML Tidy Library Project. SourceForge project.
[TagSoup] TagSoup - Just Keep On Truckin'. John Cowan.
[RFC 4122] RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace. P. Leach and M. Mealling, editors. Internet Engineering Task Force. July, 2005.
[CRC32] “32-Bit Cyclic Redundancy Codes for Internet Applications”, The International Conference on Dependable Systems and Networks: 459. 10.1109/DSN.2002.1028931. P. Koopman. June 2002.
Unless otherwise noted, the term Namespaces in XML refers equally to [Namespaces 1.0] and [Namespaces 1.1].
XProc is intended to work equally well with [XML 1.0] and [XML 1.1]. Unless otherwise noted, the term “XML” refers equally to both versions.
The ancestors of a step, if it has any, are its container and the ancestors of its container.
An atomic step is a step that performs a unit of XML processing, such as XInclude or transformation, and has no internal subpipeline.
The bag-merger of two or more bags (where a bag is an unordered list or, equivalently, something like a set except that it may contain duplicates) is a bag constructed by starting with an empty bag and adding each member of each of the input bags in turn to it. It follows that the cardinality of the result is the sum of the cardinality of all the input bags.
A document is specified by source if it references a specific port on another step.
A document is specified by URI if it is referenced with a URI.
A compound step is a step that contains a subpipeline.
A connection associates an input or output port with some data source.
The steps that occur directly within, or within non-step wrappers directly within, a step are called that step's contained steps. In other words, “container” and “contained steps” are inverse relationships.
A compound step or multi-container step is a container for the steps directly within it or within non-step wrappers directly within it.
The input ports declared on a step are its declared inputs.
The options declared on a step are its declared options.
The output ports declared on a step are its declared outputs.
The default readable port, which may be undefined, is a specific step name/port name pair from the set of readable ports.
A dynamic error is one which occurs while a pipeline is being evaluated.
The empty environment contains no readable ports, an undefined default readable port and no in-scope bindings.
An empty sequence of documents is specified with the p:empty element.
The environment is a context-dependent collection of information available within subpipelines.
An element from the XProc namespace may have any attribute not from the XProc namespace, provided that the expanded-QName of the attribute has a non-null namespace URI. Such an attribute is called an extension attribute.
The in-scope bindings are a set of name-value pairs, based on option and variable bindings.
The inherited environment of a contained step is an environment that is the same as the environment of its container with the standard modifications.
An inline document is specified directly in the body of the element to which it connects.
The last step in a subpipeline is its last step in document order.
A step matches its signature if and only if it specifies an input for each declared input, it specifies no inputs that are not declared, it specifies an option for each option that is declared to be required, and it specifies no options that are not declared.
A multi-container step is a step that contains several alternate subpipelines.
To produce a serializable XML document, the XProc processor must sometimes add additional namespace nodes, perhaps even renaming prefixes, to satisfy the constraints of Namespaces in XML. This process is referred to as namespace fixup.
An option is a name/value pair where the name is an expanded name and the value must be a string or xs:untypedAtomic.
A parameter is a name/value pair where the name is an expanded name and the value must be a string or xs:untypedAtomic.
A parameter input port is a distinguished kind of input port which accepts (only) dynamically constructed parameter name/value pairs.
A pipeline is a set of connected steps, with outputs of one step flowing into inputs of another.
If a step has a parameter input port which is explicitly marked “primary='true'”, or if it has exactly one parameter input port and that port is not explicitly marked “primary='false'”, then that parameter input port is the primary parameter input port of the step.
If a step has a document input port which is explicitly marked “primary='true'”, or if it has exactly one document input port and that port is not explicitly marked “primary='false'”, then that input port is the primary input port of the step.
If a step has a document output port which is explicitly marked “primary='true'”, or if it has exactly one document output port and that port is not explicitly marked “primary='false'”, then that output port is the primary output port of the step.
The readable ports are a set of step name/port name pairs.
The signature of a step is the set of inputs, outputs, and options that it is declared to accept.
The options on a step which have specified values, either because a p:with-option element specifies a value or because the declaration included a default value, are its specified options.
A static error is one which can be detected before pipeline evaluation is even attempted.
A step is the basic computational unit of a pipeline.
The step type exports of an XProc element, against the background of a set of URIs of resources already visited (call this set Visited), are defined by cases.
Sibling steps (and the connections between them) form a subpipeline.
A variable is a name/value pair where the name is an expanded name and the value must be a string or xs:untypedAtomic.
If two names are in the same scope, we say that they are visible to each other.
This appendix summarizes the XProc pipeline language. Machine readable descriptions of this language are available in RELAX NG (and the RELAX NG compact syntax), W3C XML Schema, and DTD syntaxes.
<p:pipeline
name? = NCName
type? = QName
psvi-required? = boolean
xpath-version? = string
exclude-inline-prefixes? = prefix list
version? = string>
(p:input |
p:output
|
p:option
|
p:log |
p:serialization)*,
(p:declare-step |
p:pipeline
|
p:import)*,
subpipeline
</p:pipeline>
<p:for-each
name? = NCName>
((p:iteration-source? &
(p:output |
p:log)*),
subpipeline)
</p:for-each>
<p:viewport
name? = NCName
match =
XSLTMatchPattern>
((p:viewport-source? &
p:output? &
p:log?),
subpipeline)
</p:viewport>
<p:choose
name? = NCName>
(p:xpath-context?,
p:variable*,
p:when*,
p:otherwise?)
</p:choose>
<p:xpath-context>
(p:empty |
p:pipe
|
p:document |
p:inline |
p:data)
</p:xpath-context>
<p:when
test =
XPathExpression>
(p:xpath-context?,
(p:output
|
p:log)*,
subpipeline)
</p:when>
<p:otherwise>
((p:output |
p:log)*,
subpipeline)
</p:otherwise>
<p:group
name? = NCName>
((p:output |
p:log)*,
subpipeline)
</p:group>
<p:try
name? = NCName>
(p:variable*,
p:group,
p:catch)
</p:try>
<p:catch
name? = NCName>
((p:output |
p:log)*,
subpipeline)
</p:catch>
<p:atomic-step
name? = NCName>
(p:input |
p:with-option |
p:with-param |
p:log)*
</p:atomic-step>
<pfx:atomic-step
name? = NCName>
(p:input |
p:with-option |
p:with-param |
p:log)*
</pfx:atomic-step>
<p:input
port = NCName
sequence? = boolean
primary? = boolean
kind? = "document"
select? = XPathExpression>
(p:empty |
(p:document |
p:inline |
p:data)+)?
</p:input>
<p:input
port = NCName
select? = XPathExpression>
(p:empty |
(p:pipe
|
p:document |
p:inline |
p:data)+)?
</p:input>
<p:input
port = NCName
sequence? = boolean
primary? = boolean
kind = "parameter">
(p:empty |
(p:document |
p:inline)+)?
</p:input>
<p:iteration-source
select? = XPathExpression>
(p:empty |
(p:pipe
|
p:document |
p:inline |
p:data)+)?
</p:iteration-source>
<p:viewport-source>
(p:pipe |
p:document |
p:inline |
p:data)?
</p:viewport-source>
<p:output
port = NCName
sequence? = boolean
primary? = boolean />
<p:output
port = NCName
sequence? = boolean
primary? = boolean>
(p:empty |
(p:pipe
|
p:document |
p:inline |
p:data)+)?
</p:output>
<p:log
port = NCName
href? = anyURI />
<p:serialization
port = NCName
byte-order-mark? = boolean
cdata-section-elements? = NMTOKENS
doctype-public? = string
doctype-system? = string
encoding? = string
escape-uri-attributes? = boolean
include-content-type? = boolean
indent? = boolean
media-type? = string
method? = QName
normalization-form? =
NFC|NFD|NFKC|NFKD|fully-normalized|none|xs:NMTOKEN
omit-xml-declaration? = boolean
standalone? = true|false|omit
undeclare-prefixes? = boolean
version? = string />
<p:variable
name = QName
select =
XPathExpression>
((p:empty |
p:pipe
|
p:document |
p:inline |
p:data)?
&
p:namespaces*)
</p:variable>
<p:option
name = QName
required? = boolean />
<p:option
name = QName
required? = boolean
select =
XPathExpression />
<p:with-option
name = QName
select =
XPathExpression>
((p:empty |
p:pipe
|
p:document |
p:inline |
p:data)?
&
p:namespaces*)
</p:with-option>
<p:with-param
name = QName
select =
XPathExpression
port? = NCName>
((p:empty |
p:pipe
|
p:document |
p:inline |
p:data)?
&
p:namespaces*)
</p:with-param>
<p:namespaces
binding? = QName
element? = XPathExpression
except-prefixes? = prefix
list />
<p:declare-step
name? = NCName
type? = QName
psvi-required? = boolean
xpath-version? = string
exclude-inline-prefixes? = prefix list
version? = string>
(p:input |
p:output
|
p:option
|
p:log |
p:serialization)*,
((p:declare-step |
p:pipeline |
p:import)*,
subpipeline)?
</p:declare-step>
<p:library
psvi-required? = boolean
xpath-version? = string
exclude-inline-prefixes? = prefix list
version? = string>
(p:import |
p:declare-step |
p:pipeline)*
</p:library>
<p:import
href =
anyURI />
<p:pipe
step = NCName
port =
NCName />
<p:inline
exclude-inline-prefixes? = prefix
list>
anyElement
</p:inline>
<p:document
href =
anyURI />
<p:data
href = anyURI
wrapper? = QName
wrapper-prefix? = string
wrapper-namespace? = string
content-type? = string />
<p:empty />
<p:documentation>
any-well-formed-content*
</p:documentation>
<p:pipeinfo>
any-well-formed-content*
</p:pipeinfo>
The core steps are also summarized here.
<p:declare-step
type
="
p:add-attribute
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
match
"
required
="
true
"
/>
<!--
XSLTMatchPattern -->
<p:option
name
="
attribute-name
"
required
="
true
"
/>
<!--
QName -->
<p:option
name
="
attribute-prefix
"
/>
<!--
NCName -->
<p:option
name
="
attribute-namespace
"
/>
<!--
anyURI -->
<p:option
name
="
attribute-value
"
required
="
true
"
/>
<!--
string -->
</p:declare-step>
<p:declare-step
type
="
p:add-xml-base
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
all
"
select
="
'false'
"
/>
<!--
boolean -->
<p:option
name
="
relative
"
select
="
'true'
"
/>
<!--
boolean -->
</p:declare-step>
<p:declare-step
type
="
p:compare
"
>
<p:input
port
="
source
"
primary
="
true
"
/>
<p:input
port
="
alternate
"
/>
<p:output
port
="
result
"
primary
="
false
"
/>
<p:option
name
="
fail-if-not-equal
"
select
="
'false'
"
/>
<!--
boolean -->
</p:declare-step>
<p:declare-step
type
="
p:count
"
>
<p:input
port
="
source
"
sequence
="
true
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
limit
"
select
="
0
"
/>
<!--
integer -->
</p:declare-step>
<p:declare-step
type
="
p:delete
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
match
"
required
="
true
"
/>
<!--
XSLTMatchPattern -->
</p:declare-step>
<p:declare-step
type
="
p:directory-list
"
>
<p:output
port
="
result
"
/>
<p:option
name
="
path
"
required
="
true
"
/>
<!--
anyURI -->
<p:option
name
="
include-filter
"
/>
<!--
RegularExpression -->
<p:option
name
="
exclude-filter
"
/>
<!--
RegularExpression -->
</p:declare-step>
<p:declare-step
type
="
p:error
"
>
<p:input
port
="
source
"
primary
="
false
"
/>
<p:output
port
="
result
"
sequence
="
true
"
/>
<p:option
name
="
code
"
required
="
true
"
/>
<!--
QName -->
<p:option
name
="
code-prefix
"
/>
<!--
NCName -->
<p:option
name
="
code-namespace
"
/>
<!--
anyURI -->
</p:declare-step>
<p:declare-step
type
="
p:escape-markup
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
cdata-section-elements
"
select
="
''
"
/>
<!--
ListOfQNames -->
<p:option
name
="
doctype-public
"
/>
<!--
string -->
<p:option
name
="
doctype-system
"
/>
<!--
anyURI -->
<p:option
name
="
escape-uri-attributes
"
select
="
'false'
"
/>
<!--
boolean -->
<p:option
name
="
include-content-type
"
select
="
'true'
"
/>
<!--
boolean -->
<p:option
name
="
indent
"
select
="
'false'
"
/>
<!--
boolean -->
<p:option
name
="
media-type
"
/>
<!--
string -->
<p:option
name
="
method
"
select
="
'xml'
"
/>
<!--
QName -->
<p:option
name
="
omit-xml-declaration
"
select
="
'true'
"
/>
<!--
boolean -->
<p:option
name
="
standalone
"
select
="
'omit'
"
/>
<!--
"true"
| "false" | "omit" -->
<p:option
name
="
undeclare-prefixes
"
/>
<!--
boolean -->
<p:option
name
="
version
"
select
="
'1.0'
"
/>
<!--
string -->
</p:declare-step>
<p:declare-step
type
="
p:filter
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
sequence
="
true
"
/>
<p:option
name
="
select
"
required
="
true
"
/>
<!--
XPathExpression -->
</p:declare-step>
<p:declare-step
type
="
p:http-request
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
byte-order-mark
"
/>
<!--
boolean -->
<p:option
name
="
cdata-section-elements
"
select
="
''
"
/>
<!--

QName -->
<p:option
name
="
normalization-form
"
select
="
'none'
"
/>
<!--
NormalizationForm -->
<p:option
name
="
omit-xml-declaration
"
select
="
'true'
"
/>
<!--
boolean -->
<p:option
name
="
standalone
"
select
="
'omit'
"
/>
<!--
"true"
| "false" | "omit" -->
<p:option
name
="
undeclare-prefixes
"
/>
<!--
boolean -->
<p:option
name
="
version
"
select
="
'1.0'
"
/>
<!--
string -->
</p:declare-step>
<p:declare-step
type
="
p:identity
"
>
<p:input
port
="
source
"
sequence
="
true
"
/>
<p:output
port
="
result
"
sequence
="
true
"
/>
</p:declare-step>
<p:declare-step
type
="
p:insert
"
>
<p:input
port
="
source
"
primary
="
true
"
/>
<p:input
port
="
insertion
"
sequence
="
true
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
match
"
select
="
'/*'
"
/>
<!--
XSLTMatchPattern -->
<p:option
name
="
position
"
required
="
true
"
/>
<!--
"first-child"
| "last-child" | "before" | "after" -->
</p:declare-step>
<p:declare-step
type
="
p:label-elements
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
attribute
"
select
="
'xml:id'
"
/>
<!--
QName -->
<p:option
name
="
attribute-prefix
"
/>
<!--
NCName -->
<p:option
name
="
attribute-namespace
"
/>
<!--
anyURI -->
<p:option
name
="
label
"
select
="
'concat("_",$p:index)'
"
/>
<!--
XPathExpression -->
<p:option
name
="
match
"
select
="
'*'
"
/>
<!--
XSLTMatchPattern -->
<p:option
name
="
replace
"
select
="
'true'
"
/>
<!--
boolean -->
</p:declare-step>
<p:declare-step
type
="
p:load
"
>
<p:output
port
="
result
"
/>
<p:option
name
="
href
"
required
="
true
"
/>
<!--
anyURI -->
<p:option
name
="
dtd-validate
"
select
="
'false'
"
/>
<!--
boolean -->
</p:declare-step>
<p:declare-step
type
="
p:make-absolute-uris
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
match
"
required
="
true
"
/>
<!--
XSLTMatchPattern -->
<p:option
name
="
base-uri
"
/>
<!--
anyURI -->
</p:declare-step>
<p:declare-step
type
="
p:namespace-rename
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
from
"
/>
<!--
anyURI -->
<p:option
name
="
to
"
/>
<!--
anyURI -->
<p:option
name
="
apply-to
"
select
="
'all'
"
/>
<!--
"all"
| "elements" | "attributes" -->
</p:declare-step>
<p:declare-step
type
="
p:pack
"
>
<p:input
port
="
source
"
sequence
="
true
"
primary
="
true
"
/>
<p:input
port
="
alternate
"
sequence
="
true
"
/>
<p:output
port
="
result
"
sequence
="
true
"
/>
<p:option
name
="
wrapper
"
required
="
true
"
/>
<!--
QName -->
<p:option
name
="
wrapper-prefix
"
/>
<!--
NCName -->
<p:option
name
="
wrapper-namespace
"
/>
<!--
anyURI -->
</p:declare-step>
<p:declare-step
type
="
p:parameters
"
>
<p:input
port
="
parameters
"
kind
="
parameter
"
primary
="
false
"
/>
<p:output
port
="
result
"
primary
="
false
"
/>
</p:declare-step>
<p:declare-step
type
="
p:rename
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
match
"
required
="
true
"
/>
<!--
XSLTMatchPattern -->
<p:option
name
="
new-name
"
required
="
true
"
/>
<!--
QName -->
<p:option
name
="
new-prefix
"
/>
<!--
NCName -->
<p:option
name
="
new-namespace
"
/>
<!--
anyURI -->
</p:declare-step>
<p:declare-step
type
="
p:replace
"
>
<p:input
port
="
source
"
primary
="
true
"
/>
<p:input
port
="
replacement
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
match
"
required
="
true
"
/>
<!--
XSLTMatchPattern -->
</p:declare-step>
<p:declare-step
type
="
p:set-attributes
"
>
<p:input
port
="
source
"
primary
="
true
"
/>
<p:input
port
="
attributes
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
match
"
required
="
true
"
/>
<!--
XSLTMatchPattern -->
</p:declare-step>
<p:declare-step
type
="
p:sink
"
>
<p:input
port
="
source
"
sequence
="
true
"
/>
</p:declare-step>
<p:declare-step
type
="
p:split-sequence
"
>
<p:input
port
="
source
"
sequence
="
true
"
/>
<p:output
port
="
matched
"
sequence
="
true
"
primary
="
true
"
/>
<p:output
port
="
not-matched
"
sequence
="
true
"
/>
<p:option
name
="
initial-only
"
select
="
'false'
"
/>
<!--
boolean -->
<p:option
name
="
test
"
required
="
true
"
/>
<!--
XPathExpression -->
</p:declare-step>
<p:declare-step
type
="
p:store
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
primary
="
false
"
/>
<p:option
name
="
href
"
required
="
true
"
/>
<!--
anyURI -->
<p:option
name
="
byte-order-mark
"
/>
<!--
boolean -->
<p:option
name
="
cdata-section-elements
"
select
="
''
"
/>
<!--

QName -->
<p:option
name
="
normalization-form
"
select
="
'none'
"
/>
<!--
NormalizationForm -->
<p:option
name
="
omit-xml-declaration
"
select
="
'true'
"
/>
<!--
boolean -->
<p:option
name
="
standalone
"
select
="
'omit'
"
/>
<!--
"true"
| "false" | "omit" -->
<p:option
name
="
undeclare-prefixes
"
/>
<!--
boolean -->
<p:option
name
="
version
"
select
="
'1.0'
"
/>
<!--
string -->
</p:declare-step>
<p:declare-step
type
="
p:string-replace
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
match
"
required
="
true
"
/>
<!--
XSLTMatchPattern -->
<p:option
name
="
replace
"
required
="
true
"
/>
<!--
XPathExpression -->
</p:declare-step>
<p:declare-step
type
="
p:unescape-markup
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
namespace
"
/>
<!--
anyURI -->
<p:option
name
="
content-type
"
select
="
'application/xml'
"
/>
<!--
string -->
<p:option
name
="
encoding
"
/>
<!--
string -->
<p:option
name
="
charset
"
/>
<!--
string -->
</p:declare-step>
<p:declare-step
type
="
p:unwrap
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
match
"
required
="
true
"
/>
<!--
XSLTMatchPattern -->
</p:declare-step>
<p:declare-step
type
="
p:wrap
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
wrapper
"
required
="
true
"
/>
<!--
QName -->
<p:option
name
="
wrapper-prefix
"
/>
<!--
NCName -->
<p:option
name
="
wrapper-namespace
"
/>
<!--
anyURI -->
<p:option
name
="
match
"
required
="
true
"
/>
<!--
XSLTMatchPattern -->
<p:option
name
="
group-adjacent
"
/>
<!--
XPathExpression -->
</p:declare-step>
<p:declare-step
type
="
p:wrap-sequence
"
>
<p:input
port
="
source
"
sequence
="
true
"
/>
<p:output
port
="
result
"
sequence
="
true
"
/>
<p:option
name
="
wrapper
"
required
="
true
"
/>
<!--
QName -->
<p:option
name
="
wrapper-prefix
"
/>
<!--
NCName -->
<p:option
name
="
wrapper-namespace
"
/>
<!--
anyURI -->
<p:option
name
="
group-adjacent
"
/>
<!--
XPathExpression -->
</p:declare-step>
<p:declare-step
type
="
p:xinclude
"
>
<p:input
port
="
source
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
fixup-xml-base
"
select
="
'false'
"
/>
<!--
boolean -->
<p:option
name
="
fixup-xml-lang
"
select
="
'false'
"
/>
<!--
boolean -->
</p:declare-step>
<p:declare-step
type
="
p:xslt
"
>
<p:input
port
="
source
"
sequence
="
true
"
primary
="
true
"
/>
<p:input
port
="
stylesheet
"
/>
<p:input
port
="
parameters
"
kind
="
parameter
"
/>
<p:output
port
="
result
"
primary
="
true
"
/>
<p:output
port
="
secondary
"
sequence
="
true
"
/>
<p:option
name
="
initial-mode
"
/>
<!--
QName -->
<p:option
name
="
template-name
"
/>
<!--
QName -->
<p:option
name
="
output-base-uri
"
/>
<!--
anyURI -->
<p:option
name
="
version
"
/>
<!--
string -->
</p:declare-step>
As are the optional steps.
<p:declare-step
type
="
p:exec
"
>
<p:input
port
="
source
"
primary
="
true
"
sequence
="
true
"
/>
<p:output
port
="
result
"
primary
="
true
"
/>
<p:output
port
="
errors
"
/>
<p:output
port
="
exit-status
"
/>
<p:option
name
="
command
"
required
="
true
"
/>
<!--
string -->
<p:option
name
="
args
"
select
="
''
"
/>
<!--
string -->
<p:option
name
="
cwd
"
/>
<!--
string -->
<p:option
name
="
source-is-xml
"
select
="
'true'
"
/>
<!--
boolean -->
<p:option
name
="
result-is-xml
"
select
="
'true'
"
/>
<!--
boolean -->
<p:option
name
="
wrap-result-lines
"
select
="
'false'
"
/>
<!--
boolean -->
<p:option
name
="
errors-is-xml
"
select
="
'false'
"
/>
<!--
boolean -->
<p:option
name
="
wrap-error-lines
"
select
="
'false'
"
/>
<!--
boolean -->
<p:option
name
="
path-separator
"
/>
<!--
string -->
<p:option
name
="
failure-threshold
"
/>
<!--
integer -->
<p:option
name
="
arg-separator
"
select
="
'
'
"
/>
<!--
string -->
<p:option
name
="
byte-order-mark
"
/>
<!--
boolean -->
<p:option
name
="
cdata-section-elements
"
select
="
''
"
/>
<!--

QName -->
<p:option
name
="
normalization-form
"
select
="
'none'
"
/>
<!--
NormalizationForm -->
<p:option
name
="
omit-xml-declaration
"
select
="
'true'
"
/>
<!--
boolean -->
<p:option
name
="
standalone
"
select
="
'omit'
"
/>
<!--
"true"
| "false" | "omit" -->
<p:option
name
="
undeclare-prefixes
"
/>
<!--
boolean -->
<p:option
name
="
version
"
select
="
'1.0'
"
/>
<!--
string -->
</p:declare-step>
<p:declare-step
type
="
p:hash
"
>
<p:input
port
="
source
"
primary
="
true
"
/>
<p:output
port
="
result
"
/>
<p:input
port
="
parameters
"
kind
="
parameter
"
/>
<p:option
name
="
value
"
required
="
true
"
/>
<!--
string -->
<p:option
name
="
algorithm
"
required
="
true
"
/>
<!--
QName -->
<p:option
name
="
match
"
required
="
true
"
/>
<!--
XSLTMatchPattern -->
<p:option
name
="
version
"
/>
<!--
string -->
</p:declare-step>
<p:declare-step
type
="
p:uuid
"
>
<p:input
port
="
source
"
primary
="
true
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
match
"
required
="
true
"
/>
<!--
XSLTMatchPattern -->
<p:option
name
="
version
"
/>
<!--
integer -->
</p:declare-step>
<p:declare-step
type
="
p:validate-with-relax-ng
"
>
<p:input
port
="
source
"
primary
="
true
"
/>
<p:input
port
="
schema
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
dtd-attribute-values
"
select
="
'false'
"
/>
<!--
boolean -->
<p:option
name
="
dtd-id-idref-warnings
"
select
="
'false'
"
/>
<!--
boolean -->
<p:option
name
="
assert-valid
"
select
="
'true'
"
/>
<!--
boolean -->
</p:declare-step>
<p:declare-step
type
="
p:validate-with-schematron
"
>
<p:input
port
="
parameters
"
kind
="
parameter
"
/>
<p:input
port
="
source
"
primary
="
true
"
/>
<p:input
port
="
schema
"
/>
<p:output
port
="
result
"
primary
="
true
"
/>
<p:output
port
="
report
"
sequence
="
true
"
/>
<p:option
name
="
phase
"
select
="
'#ALL'
"
/>
<!--
string -->
<p:option
name
="
assert-valid
"
select
="
'true'
"
/>
<!--
boolean -->
</p:declare-step>
<p:declare-step
type
="
p:validate-with-xml-schema
"
>
<p:input
port
="
source
"
primary
="
true
"
/>
<p:input
port
="
schema
"
sequence
="
true
"
/>
<p:output
port
="
result
"
/>
<p:option
name
="
use-location-hints
"
select
="
'false'
"
/>
<!--
boolean -->
<p:option
name
="
try-namespaces
"
select
="
'false'
"
/>
<!--
boolean -->
<p:option
name
="
assert-valid
"
select
="
'true'
"
/>
<!--
boolean -->
<p:option
name
="
mode
"
select
="
'strict'
"
/>
<!--
"strict"
| "lax" -->
</p:declare-step>
<p:declare-step
type
="
p:www-form-urldecode
"
>
<p:output
port
="
result
"
/>
<p:option
name
="
value
"
required
="
true
"
/>
<!--
string -->
</p:declare-step>
<p:declare-step
type
="
p:www-form-urlencode
"
>
<p:input
port
="
source
"
primary
="
true
"
/>
<p:output
port
="
result
"
/>
<p:input
port
="
parameters
"
kind
="
parameter
"
/>
<p:option
name
="
match
"
required
="
true
"
/>
<!--
XSLTMatchPattern -->
</p:declare-step>
<p:declare-step
type
="
p:xquery
"
>
<p:input
port
="
source
"
sequence
="
true
"
primary
="
true
"
/>
<p:input
port
="
query
"
/>
<p:input
port
="
parameters
"
kind
="
parameter
"
/>
<p:output
port
="
result
"
sequence
="
true
"
/>
</p:declare-step>
<p:declare-step
type
="
p:xsl-formatter
"
>
<p:input
port
="
source
"
/>
<p:input
port
="
parameters
"
kind
="
parameter
"
/>
<p:output
port
="
result
"
primary
="
false
"
/>
<p:option
name
="
href
"
required
="
true
"
/>
<!--
anyURI -->
<p:option
name
="
content-type
"
/>
<!--
string -->
</p:declare-step>
And the step vocabulary elements.
<c:param
name = QName
namespace? = anyURI
value =
string />
<c:param-set>
c:param*
</c:param-set>
<c:data
content-type? = string
charset? = string
encoding? = string>
string
</c:data>
<c:result>
string
</c:result>
<c:directory
name = string>
(c:file |
c:directory |
c:other)*
</c:directory>
<c:file
name =
string />
<c:other
name =
string />
<c:request
method = NCName
href? = anyURI
detailed? = boolean
status-only? = boolean
username? = string
password? = string
auth-method? = string
send-authorization? = boolean
override-content-type? = string>
(c:header*,
(c:multipart |
c:body)?)
</c:request>
<c:header
name = string
value =
string />
<c:multipart
content-type = string
boundary = string>
c:body+
</c:multipart>
<c:body
content-type = string
encoding? = string
id? = string
description? = string
disposition? = string>
anyElement*
</c:body>
<c:response
status? = integer>
(c:header*,
(c:multipart |
c:body)?)
</c:response>
<c:line>
string
</c:line>
<c:query>
string
</c:query>
The following error codes are defined by this specification.
The following static errors are defined:
err:XS0001
It is a static error if there are any loops in the connections between steps: no step can be connected to itself nor can there be any sequence of connections through other steps that leads back to itself.
See: Connections
err:XS0002
All steps in the same scope must have unique names: it is a static error if two steps with the same name appear in the same scope.
See: Scoping of Names
err:XS0003
It is a static error if any declared input is not connected.
See: Inputs and Outputs
err:XS0004
It is a static error if an option or variable declaration duplicates the name of any other option or variable in the same environment.
err:XS0005
It is a static error if the primary output port of any step is not connected.
See: Inputs and Outputs
err:XS0006
It is a static error if the primary output port has no explicit connection and the last step in the subpipeline does not have a primary output port.
err:XS0007
It is a static error if two subpipelines in a p:choose declare different outputs.
See: p:choose
err:XS0008
It is a static error if any element in the XProc namespace has attributes not defined by this specification unless they are extension attributes.
See: Common errors
err:XS0009
It is a static error if the p:group and p:catch subpipelines declare different outputs.
See: p:try
err:XS0010
It is a static error if a pipeline contains a step whose specified inputs, outputs, and options do not match the signature for steps of that type.
See: Extension Steps
err:XS0011
It is a static error to identify two ports with the same name on the same step.
err:XS0014
It is a static error to identify more than one output port as primary.
See: p:output
err:XS0015
It is a static error if a compound step has no contained steps.
See: Common errors
err:XS0017
It is a static error to specify that an option is both required and has a default value.
See: p:option
err:XS0018
If an option is required, it is a static error to invoke the step without specifying a value for that option.
See: p:option
err:XS0019
it is a static error for a variable's document connection to refer to the output port of any step in the surrounding container's contained steps
See: p:variable
err:XS0020
It is a static error if the binding attribute on p:namespaces is specified and its value is not the name of an in-scope binding.
err:XS0022
In all cases except the p:output of a compound step, it is a static error if the port identified by a p:pipe is not in the readable ports of the step that contains the p:pipe.
See: p:pipe
err:XS0024
It is a static error if the content of the p:inline element does not consist of exactly one element, optionally preceded and/or followed by any number of processing instructions, comments or whitespace characters.
See: p:inline
err:XS0025
It is a static error if the expanded-QName value of the type attribute is in no namespace or in the XProc namespace.
See: p:declare-step
err:XS0026
It is a static error if the port specified on the p:log is not the name of an output port on the step in which it appears or if more than one p:log element is applied to the same port.
See: p:log
err:XS0027
It is a static error if an option is specified with both the shortcut form and the long form.
err:XS0028
It is a static error to declare an option or variable in the XProc namespace.
See: p:variable, p:option
err:XS0029
It is a static error to specify a connection for a p:output inside a p:declare-step for an atomic step.
See: p:output
err:XS0030
It is a static error to specify that more than one input port is the primary.
err:XS0031
It is a static error to use an option on an atomic step that is not declared on steps of that type.
err:XS0032
It is a static error if no connection is provided and the default readable port is undefined.
See: Document Inputs
err:XS0033
It is a static error to specify any kind of input other than “document” or “parameter”.
See: Parameter Inputs
err:XS0034
It is a static error if the specified port is not a parameter input port or if no port is specified and the step does not have a primary parameter input port.
See: p:with-param
err:XS0035
It is a static error if the declaration of a parameter input port contains a connection; parameter input port declarations must be empty.
See: Parameter Inputs
err:XS0036
All the step types in a pipeline or library must have unique names: it is a static error if any step type name is built-in and/or declared or defined more than once in the same scope.
See: Scoping of Names, Handling Circular and Re-entrant Library Imports (Non-Normative), Handling Circular and Re-entrant Library Imports (Non-Normative), Handling Circular and Re-entrant Library Imports (Non-Normative)
err:XS0037
It is a static error if any step directly contains text nodes that do not consist entirely of whitespace.
See: Common errors
err:XS0038
It is a static error if any required attribute is not provided.
See: Common errors
err:XS0039
It is a static error if the port specified on the p:serialization is not the name of an output port on the pipeline in which it appears or if more than one p:serialization element is applied to the same port.
See: p:serialization
err:XS0040
It is a static error to specify any value other than true.
See: Parameter Inputs
err:XS0041
It is a static error to specify both binding and element on the same p:namespaces element.
err:XS0042
It is a static error to attempt to provide a connection for an input port on the declaration of an atomic step.
See: Document Inputs
err:XS0044
It is a static error if any element in the XProc namespace or any step has element children other than those specified for it by this specification. In particular, the presence of atomic steps for which there is no visible declaration may raise this error.
See: Common errors
err:XS0048
It is a static error to use a declared step as a compound step.
See: Extension Steps
err:XS0051
It is a static error if the except-prefixes attribute on p:namespaces does not contain a list of tokens or if any of those tokens is not a prefix bound to a namespace in the in-scope namespaces of the p:namespaces element.
err:XS0052
It is a static error if the URI of a p:import cannot be retrieved or if, once retrieved, it does not point to a p:library, p:declare-step, or p:pipeline.
See: p:import
err:XS0053
It is a static error to import a single pipeline if that pipeline does not have a type.
See: p:import
err:XS0055
It is a static error if a primary parameter input port is unconnected and the pipeline that contains the step has no primary parameter input port unless at least one explicit p:with-param is provided for that port.
See: Parameter Inputs
err:XS0057
It is a static error if the exclude-inline-prefixes attribute does not contain a list of tokens or if any of those tokens (except #all or #default) is not a prefix bound to a namespace in the in-scope namespaces of the element on which it occurs.
See: p:inline
err:XS0058
It is a static error if the value #default is used within the exclude-inline-prefixes attribute and there is no default namespace in scope.
See: p:inline
err:XS0059
It is a static error if the pipeline element is not p:pipeline, p:declare-step, or p:library.
See: Common errors
err:XS0060
It is a static error if the processor encounters an explicit request for a previous version of the language and it is unable to process the pipeline using those semantics.
err:XS0061
It is a static error if a use-when expression refers to the context or attempts to refer to any documents or collections.
err:XS0062
It is a static error if a required version attribute is not present.
err:XS0063
It is a static error if the value of the version attribute is not a xs:decimal.
The following dynamic errors are defined:
err:XD0001
It is a dynamic error if a non-XML resource is produced on a step output or arrives on a step input.
See: Inputs and Outputs
err:XD0003
It is a dynamic error if the viewport source does not provide exactly one document.
See: p:viewport, p:viewport-source
err:XD0004
It is a dynamic error if no subpipeline is selected by the p:choose and no default is provided.
See: p:choose
err:XD0005
It is a dynamic error if more than one document appears on the connection for the xpath-context.
See: p:xpath-context
err:XD0006
If sequence is not specified, or has the value false, then it is a dynamic error unless exactly one document appears on the declared port.
See: Document Inputs, p:exec
err:XD0007
If sequence is not specified on p:output, or has the value false, then it is a dynamic error if the step does not produce exactly one document on the declared port.
See: p:output
err:XD0008
It is a dynamic error if a document sequence appears where a document to be used as the context node is expected.
See: Processor XPath Context, Processor XPath Context, p:variable, p:with-option, p:with-param
err:XD0009
It is a dynamic error if the element attribute on p:namespaces is specified and it does not identify a single element node.
err:XD0010
It is a dynamic error if the match expression on p:viewport does not match an element or document.
See: p:viewport
err:XD0011
It is a dynamic error if the resource referenced by a p:document element does not exist, cannot be accessed, or is not a well-formed XML document.
See: p:document
err:XD0012
It is a dynamic error if any attempt is made to dereference a URI where the scheme of the URI reference is not supported.
See: Common errors
err:XD0013
It is a dynamic error if the specified namespace bindings are inconsistent; that is, if the same prefix is bound to two different namespace names.
err:XD0014
It is a dynamic error for any unqualified attribute names other than “name”, “namespace”, or “value” to appear on a c:param element.
err:XD0015
It is a dynamic error if the specified QName cannot be resolved with the in-scope namespace declarations.
See: System Properties
err:XD0016
It is a dynamic error if the select expression on a p:input returns atomic values or anything other than element or document nodes (or an empty sequence).
See: Document Inputs
err:XD0017
It is a dynamic error if the running pipeline attempts to invoke a step which the processor does not know how to perform.
See: Extension Steps
err:XD0018
It is a dynamic error if the parameter list contains any elements other than c:param.
err:XD0019
It is a dynamic error if any option value does not satisfy the type required for that option.
See: Common errors
err:XD0020
It is a dynamic error if the combination of serialization options specified or defaulted is not allowed.
See: p:serialization
err:XD0021
It is a dynamic error for a pipeline to attempt to access a resource for which it has insufficient privileges or perform a step which is forbidden.
err:XD0022
It is a dynamic error if a processor that does not support PSVI annotations attempts to invoke a step which asserts that they are required.
See: PSVIs in XProc
err:XD0023
It is a dynamic error if an XPath expression is encountered which cannot be evaluated (because it is syntactically incorrect, contains references to unbound variables or unknown functions, or for any other reason).
See: XPaths in XProc
err:XD0024
It is a dynamic error if a 2.0 processor encounters an XPath 1.0 expression and it does not support XPath 1.0 compatibility mode.
See: XPaths in XProc
err:XD0025
It is a dynamic error if the namespace attribute is specified, the name contains a colon, and the specified namespace is not the same as the in-scope namespace binding for the specified prefix.
See: The c:param element
err:XD0026
It is a dynamic error if the select expression makes reference to the context node, size, or position when the context item is undefined.
See: p:variable, p:option, p:with-option, p:with-param
err:XD0027
It is a dynamic error if the processor encounters an xpath-version that it does not support.
See: XPaths in XProc
err:XD0028
It is a dynamic error if any attribute value does not satisfy the type required for that attribute.
See: Common errors
err:XD0029
It is a dynamic error if the document referenced by a p:data element does not exist, cannot be accessed, or cannot be encoded as specified.
See: p:data
err:XD0030
It is a dynamic error if a step is unable or incapable of performing its function.
See: Common errors
err:XD0031
It is a dynamic error to use the XProc namespace in the name of a parameter.
See: p:with-param
err:XD0033
It is a dynamic error if the name specified is not the name of an in-scope option or variable.
See: Value Available
err:XD0034
It is a dynamic error to specify a new namespace or prefix if the lexical value of the specified name contains a colon (or if no wrapper is explicitly specified).
See: p:data, p:add-attribute, p:error, p:label-elements, p:pack, p:rename, p:wrap, p:wrap-sequence
The following dynamic errors can be raised by steps in this specification:
err:XC0002
It is a dynamic error if the value starts with the string “--”.
err:XC0003
It is a dynamic error if a username or password is specified without specifying an auth-method, if the requested auth-method isn't supported, or the authentication challenge contains an authentication method that isn't supported.
See: Specifying a request
err:XC0004
It is a dynamic error if the status-only attribute has the value true and the detailed attribute does not have the value true.
See: Specifying a request
err:XC0005
It is a dynamic error if the request contains a c:body or c:multipart but the method does not allow for an entity body being sent with the request.
See: Specifying a request
err:XC0006
It is a dynamic error if the method is not specified on a c:request.
See: Specifying a request
err:XC0010
It is a dynamic error if an encoding of base64 is specified and the character set is not specified or if the specified character set is not supported by the implementation.
See: p:unescape-markup
err:XC0012
It is a dynamic error if the contents of the directory path are not available to the step due to access restrictions in the environment in which the pipeline is run.
See: p:directory-list
err:XC0013
It is a dynamic error if the pattern matches a processing instruction and the new name has a non-null namespace.
See: p:rename
err:XC0014
It is a dynamic error if the XML namespace (http://www.w3.org/XML/1998/namespace) or the XMLNS namespace (http://www.w3.org/2000/xmlns/) is the value of either the from option or the to option.
See: p:namespace-rename
err:XC0017
It is a dynamic error if the absolute path does not identify a directory.
See: p:directory-list
err:XC0019
It is a dynamic error if the documents are not equal, and the value of the fail-if-not-equal option is true.
See: p:compare
err:XC0020
It is a dynamic error if the the user specifies a value or values that are inconsistent with each other or with the requirements of the step or protocol.
See: Specifying a request
err:XC0022
it is a dynamic error if the content of the c:body element does not consist of exactly one element, optionally preceded and/or followed by any number of processing instructions, comments or whitespace characters
err:XC0023
It is a dynamic error if a select expression or match pattern returns a node type that is not allowed by the step.
See: Common errors, p:add-attribute, p:insert, p:label-elements, p:make-absolute-uris, p:rename, p:replace, p:set-attributes, p:unwrap, p:wrap
err:XC0025
It is a dynamic error if the match pattern matches anything other than an element node and the value of the position option is “first-child” or “last-child”.
See: p:insert
err:XC0027
It is a dynamic error if the document is not valid or the step doesn't support DTD validation.
See: p:load
err:XC0028
it is a dynamic error if the content of the c:body element does not consist entirely of characters
err:XC0029
It is a dynamic error if an XInclude error occurs during processing.
See: p:xinclude
err:XC0030
It is a dynamic error if the override-content-type value cannot be used (e.g. text/plain to override image/png).
err:XC0033
It is a dynamic error if the command cannot be run.
See: p:exec
err:XC0034
It is a dynamic error if the current working directory cannot be changed to the value of the cwd option.
See: p:exec
err:XC0035
It is a dynamic error to specify both result-is-xml and wrap-result-lines.
See: p:exec
err:XC0036
It is a dynamic error if the requested hash algorithm is not one that the processor understands or if the value or parameters are not appropriate for that algorithm.
See: p:hash
err:XC0037
It is a dynamic error if the value provided is not a properly x-www-form-urlencoded value.
See: p:www-form-urldecode
err:XC0038
It is a dynamic error if the specified version of XSLT is not available.
See: p:xslt
err:XC0039
It is a dynamic error if a sequence of documents (including an empty sequence) is provided to an XSLT 1.0 step.
See: p:xslt
err:XC0040
It is a dynamic error if the document element of the document that arrives on the source port is not c:request.
See: p:http-request
err:XC0050
It is a dynamic error if the URI scheme is not supported or the step cannot store to the specified location.
See: p:store
err:XC0051
It is a dynamic error if the content-type specified is not supported by the implementation.
See: p:unescape-markup
err:XC0052
It is a dynamic error if the encoding specified is not supported by the implementation.
err:XC0053
It is a dynamic error if the assert-valid option is true and the input document is not valid.
err:XC0054
It is a dynamic error if the assert-valid option is true and any Schematron assertions fail.
err:XC0055
It is a dynamic error if the implementation does not support the specified mode.
err:XC0056
It is a dynamic error if the specified initial mode or named template cannot be applied to the specified stylesheet.
See: p:xslt
err:XC0057
It is a dynamic error if the sequence that results from evaluating the XQuery contains items other than documents and elements.
See: p:xquery
err:XC0058
It is a dynamic error if the all and relative options are both true.
See: p:add-xml-base
err:XC0059
It is a dynamic error if the QName value in the attribute-name option uses the prefix “xmlns” or any other prefix that resolves to the namespace name “http://www.w3.org/2000/xmlns/”.
See: p:add-attribute
err:XC0060
It is a dynamic error if the processor does not support the specified version of the UUID algorithm.
See: p:uuid
err:XC0061
It is a dynamic error if the name of any encoded parameter name is not a valid xs:NCName.
See: p:www-form-urldecode
err:XC0062
It is a dynamic error if the match option matches a namespace node.
See: p:delete
err:XC0063
It is a dynamic error if the path-separator option is specified and is not exactly one character long.
See: p:exec
err:XC0064
It is a dynamic error if the exit code from the command is greater than the specified failure-threshold value.
See: p:exec
err:XC0066
It is a dynamic error if the arg-separator option is specified and is not exactly one character long.
See: p:exec
An XProc processor may find it necessary to add missing namespace declarations to ensure that a document can be serialized. While this process is implementation defined, the purpose of this appendix is to provide guidance as to what an implementation might do to either prevent such situations or fix them as before serialization.
When a namespace binding is generated, the prefix associated with the QName of the element or attribute in question should be used. From an Infoset perspective, this is accomplished by setting the [prefix] on the element or attribute. Then when an implementation needs to add a namespace binding, it can reuse that prefix if possible. If reusing the prefix is not possible, the implementation must generate a new prefix that is unique to the in-scope namespace of the element or owner element of the attribute.
An implementation can avoid namespace fixup by making sure that the standard step library does not output documents that require fixup. The following list contains suggestions as to how to accomplish this within the steps:
Any step that outputs an element in the step vocabulary namespace http://www.w3.org/ns/xproc-step must ensure that namespace is declared. An implementation should generate a namespace binding using the prefix “c”.
When attributes are added by p:add-attribute or p:set-attributes, the step must ensure the namespace of the attributes added are declared. If the prefix used by the QName is not in the in-scope namespaces of the element on which the attribute was added, the step must add a namespace declaration of the prefix to the in-scope namespaces. If the prefix is amongst the in-scope namespace and is not bound to the same namespace name, a new prefix and namespace binding must be added. When a new prefix is generated, the prefix associated with the attribute should be changed to reflect that generated prefix value.
When an element is renamed by p:rename, the step must ensure the namespace of the element is declared. If the prefix used by the QName is not in the in-scope namespaces of the element being renamed, the step must add a namespace declaration of the prefix to the in-scope namespaces. If the prefix is amongst the in-scope namespace and is not bound to the same namespace name, a new prefix and namespace binding must be added. When a new prefix is generated, the prefix associated with the element should be changed to reflect that generated prefix value.
If the element does not have a namespace name and there is a default namespace, the default namespace must be undeclared. For each of the child elements, the original default namespace declaration must be preserved by adding a default namespace declaration unless the child element has a different default namespace.
When an attribute is renamed by p:rename, the step must ensure the namespace of the renamed attribute is declared. If the prefix used by the QName is not in the in-scope namespaces of the element on which the attribute was added, the step must add a namespace declaration of the prefix to the in-scope namespaces. If the prefix is amongst the in-scope namespace and is not bound to the same namespace name, a new prefix and namespace binding must be added. When a new prefix is generated, the prefix associated with the attribute should be changed to reflect that generated prefix value.
When an element wraps content via p:wrap, there may be in-scope namespaces coming from ancestor elements of the new wrapper element. The step must ensure the namespace of the element is declared properly. By default, the wrapper element will inherit the in-scope namespaces of the parent element if one exists. As such, there may be a existing namespace declaration or default namespace.
If the prefix used by the QName is not in the in-scope namespaces of the wrapper element, the step must add a namespace declaration of the prefix to the in-scope namespaces. If the prefix is amongst the in-scope namespace and is not bound to the same namespace name, a new prefix and namespace binding must be added. When a new prefix is generated, the prefix associated with the wrapper element should be changed to reflect that generated prefix value.
If the element does not have a namespace name and there is a default namespace, the default namespace must be undeclared. For each of the child elements, the original default namespace declaration must be preserved by adding a default namespace declaration unless the child element has a different default namespace.
When the wrapper element is added for p:wrap-sequence or p:pack, the prefix used by the QName must be added to the in-scope namespaces.
When a element is removed via p:unwrap, an in-scope namespaces that are declared on the element must be copied to any child element except when the child element declares the same prefix or declares a new default namespace.
In the output from p:xslt, if an element was generated from the xsl:element or an attribute from xsl:attribute, the step must guarantee that an namespace declaration exists for the namespace name used. Depending on the XSLT implementation, the namespace declaration for the namespace name of the element or attribute may not be declared. It may also be the case that the original prefix is available. If the original prefix is available, the step should attempt to re-use that prefix. Otherwise, it must generate a prefix for a namespace binding and change the prefix associated the element or attribute.
When handling imports, an implementation needs to be able to detect the following situations, and distinguish them from cases where multiple import chains produce genuinely conflicting step definitions:
Circular imports: A imports B, B imports A.
Re-entrant imports: A imports B and C, B imports D, C imports D.
One way to achieve this is as follows:
[Definition: The step type exports of an XProc element, against the background of a set of URIs of resources already visited (call this set Visited), are defined by cases.]
The step type exports of an XProc element are as follows:
A singleton bag containing the type of the element
The bag-merger of the step type exports of all the element's children
Let RU be the actual resolved URI of the resource identified by the href of the element. If RU is a member of Visited, then an empty bag, otherwise update Visited by adding RU to it, and return the step type exports of the document element of the retrieved representation
An empty bag
The changes to Visited mandated by the p:import case above are persistent, not scoped. That is, not only the recursive processing of the imported resource but also subsequent processing of siblings and ancestors must be against the background of the updated value. In practice this means either using a side-effected global variable, or not only passing Visited as an argument to any recursive or iterative processing, but also returning its updated value for subsequent use, along with the bag of step types.
Given a pipeline library document with actual resolved URI
DU, it is a static error (err:XS0036
) if the
step type
exports of the document element of the retrieved
representation, against the background of a singleton set
containing DU as the initial Visited set,
contains any duplicates.
Given a top-level pipeline document with actual resolved URI
DU, it is a static error (err:XS0036
) if the
bag-merger
of the step
type exports of the document element of the retrieved
representation with the step type exports of its children,
against the background of a singleton set containing DU as
the initial Visited set, contains any duplicates.
Given a non-top-level p:pipeline or
p:declare-step element, it is a static
error (err:XS0036
) if the bag-merger of the
step type
exports of its parent with the step type
exports of its children, against the background of a copy
of the Visited set of its parent as the initial
Visited set, contains any duplicates.
The phrase "a copy of the Visited set" in the preceding paragraph is meant to indicate that checking of non-top-level p:pipeline or p:declare-step elements does not have a persistent impact on the checking of its parent. The contrast is that whereas changes to Visited pass both up and down through p:import, they pass only down through p:pipeline and p:declare-step.
[Definition: The bag-merger of two or more bags (where a bag is an unordered list or, equivalently, something like a set except that it may contain duplicates) is a bag constructed by starting with an empty bag and adding each member of each of the input bags in turn to it. It follows that the cardinality of the result is the sum of the cardinality of all the input bags.]
XProc imposes as few constraints on the order in which steps must be evaluated as possible and almost no constraints on parallel execution.
In the simple, and we believe overwhelmingly common case, inputs flow into the pipeline, through the pipeline from one step to the next, and results are produced at the end. The order of the steps is constrained by the input/output connections between them. Implementations are free to execute them in a purely sequential fashion or in parallel, as they see fit. The results are the same in either case.
This is not true for pipelines which rely on side effects, such as the state of the filesystem or the state of the web. Consider the following pipeline:
<p:pipeline xmlns:p="http://www.w3.org/ns/xproc" version="1.0" name="main"> <p:xslt name="generate-stylesheet"> <p:input port="source"> <p:document href="someURI"/> </p:input> <p:input port="stylesheet"> <p:document href="someOtherURI"/> </p:input> </p:xslt> <p:store name="save-xslt" href="gen-style.xsl"/> <p:xslt name="style"> <p:input port="source"> <p:pipe step="main" port="source"/> </p:input> <p:input port="stylesheet"> <p:document href="gen-style.xsl"/> </p:input> </p:xslt> </p:pipeline>
There's no guarantee that “style” step will execute after the “save-xslt” step. In this case, the solution is straightforward. Even if you need the saved stylesheet, you don't need to rely on it in your pipeline:
<p:pipeline xmlns:p="http://www.w3.org/ns/xproc" version="1.0" name="main"> <p:xslt name="generate-stylesheet"> <p:input port="source"> <p:document href="someURI"/> </p:input> <p:input port="stylesheet"> <p:document href="someOtherURI"/> </p:input> </p:xslt> <p:store name="save-xslt" href="gen-style.xsl"/> <p:xslt name="style"> <p:input port="source"> <p:pipe step="main" port="source"/> </p:input> <p:input port="stylesheet"> <p:pipe step="generate-stylesheet" port="result"/> </p:input> </p:xslt> </p:pipeline>
Now the result is independent of the implementation strategy.
Implementations are free to invent additional control structures using p:pipeinfo and extension attributes to provide greater control over parallelism in their implementations.
This appendix registers a new MIME media type, “application/xproc+xml”.
application
xproc+xml
None.
This parameter has identical semantics to the charset parameter of the application/xml media type as specified in [RFC 3023] or its successors.
By virtue of XProc content being XML, it has the same considerations when sent as “application/xproc+xml” as does XML. See [RFC 3023], Section 3.2.
Several XProc elements may refer to arbitrary URIs. In this case, the security issues of [RFC 2396], section 7, should be considered.
In addition, because of the extensibility features of XProc, it is possible that “application/xproc+xml” may describe content that has security implications beyond those described here. However, only in the case where the processor recognizes and processes the additional content, or where further processing of that content is dispatched to other processors, would security issues potentially arise. And in that case, they would fall outside the domain of this registration document.
This specification describes processing semantics that dictate behavior that must be followed when dealing with, among other things, unrecognized elements.
Because XProc is extensible, conformant "application/xproc+xml" processors can expect that content received is well-formed XML, but it cannot be guaranteed that the content is valid XProc or that the processor will recognize all of the elements and attributes in the document.
This media type registration is for XProc documents as described by this specification which is located at http://www.w3.org/TR/xproc.
There is no experimental, vendor specific, or personal tree predecessor to “application/xproc+xml”, reflecting the fact that no applications currently recognize it. This new type is being registered in order to allow for the deployment of XProc on the World Wide Web, as a first class XML application.
There is no single initial octet sequence that is always present in XProc documents.
XProc documents are most often identified with the extension “.xpl”.
TEXT
Norman Walsh<EMAIL_ADDRESS>COMMON
The XProc specification is a work product of the World Wide Web Consortium's XML Processing Model Working Group. The W3C has change control over these specifications.
For documents labeled as “application/xproc+xml”, the fragment identifier notation is exactly that for “application/xml”, as specified in [RFC 3023] or its successors.


Danebook
Email
Password
Log In
Connect with all your friends!
See photos and updates
in your newsfeed
Post your status for the world to see
from your profile
Get in touch with your friends
by "friending" them
Like things
because you're a positive person
Sign Up
Birthday
Female
Male
Sign Up!


The World Wide Web is a collection of HTML documents. HTML, HyperText Markup Language is the foundation to build everything we access on the WWW.
We can find any kind of file (media, text etc.) on the web but HTML is the is building block of the actual webpages. Other file types or links are embedded into
the HTML document (or webpage). Here's an embedded link to a picture found on the WWW, as an example:
Winter Tiger
HTML is made up of text content, markup, references to other docs and links to other pages. Within the HTML document or webpage we have a series of HTML
Elements which are components of the document that are usually started and ended with a tag. Examples of tags are  for bold lettering or  for emphasized
letters. It is important to always add an end tag i.e.  or everything that follows the opening tag will be affected.
There are some elements that does not require
a closing (or end) tag and these are called void elements. The break
 tag is an example of a void element
Another important concept is block vs. inline elements. Block elements start and end with a new line, as with
 and
. Block elements form a "box" around
the content of the element. Inline elements are displayed without line breaks. Examples of Inline elements are ,  and
Lastly we noted that all whitespace, new lines, tabs and spaces all turn into a single space (regardless of how lengthy) within the HTML document.
To force line changes we can use the break
 or paragraph
 tags.
 But people (programmers) makes mistakes and computers do not.
Thus the onus is on the programmers to make sure it tells the computers exactly what we need them to do, down to the last detail.
There can be no errors in the input or the output will corrupted.


Twitter
Discord
Instagram
Flux
Generating ? watts per hour (? until your Cell Converter is full)
Generated in the last ?


AngularJS Sample Application
Disable Button
Click Me!
disable
Show Name
Chandra
welcome
Show Button
Click CHANDRA
Hide Button
Click Me!
Total click: {{ clickCounter }}
Click Me!


4-6 method calculator
TODO
Make the whole thing pretty
Add a timer
Add a quick introduction about the 4-6 method


Services
Interested in building or growing a great business, You might need these services that will help you to achieve
Design
Graphic Design
Design is the mirror of one's imagination which captures the eye of many in the representation.
Our new styles will help to present everything in a smart way.
Graphical Platform will always be the symbol of your
plan that grows
Development
Website Design
Get your websites with well designed presentation. It is our promise that your website looks cooler than your competators
Development
Mobile Applications
Extend your application to the next level by making an app for it. We make your app design, development and deployment faster with ease
Marketing
Marketing
Rise to the level of nexGen marketing with the better tools like Bulk Messaging, Marketing Email Bursts & User Enguagements along with Analytics of your products
Servers
Cloud Services
Move your comapny's infrastructure to cloud. Cloud solutions are the best in business right now to manage your servers. We will help you do that
Development
E-Commerce
Need an online store? Build your own with us at the lowest prices and the best qualities. We will set up the online store for you at any movement.
Development
ERP, CRM, Inventory & Billing Softwares
The Business tools to move your business forward and make it advanced. Automate your work to reduce on the go using some good softwares.


Research
RESEARCH INTERESTS
- Intelligent control using deep reinforcement learning.
- Machine learning-based side-channel attacks.
- Identification of vulnerable software implementations or bugs.
- Security of IoT and inter-connected infrastructure.
- The automation of cyber security activities.
PUBLICATIONS
-
Rainbow Deep Reinforcement Learning Agent for Improved Solution of The Traffic Congestion
-
SCMA: a Sparse Cooperative Multi-Agent Framework for Adaptive Traffic Signal Control
RECENT REPORTED SECURITY VULNERABILITIES
-
Portal of a confidential university [unsolved till now].
- Severe security issue that would allow attackers to retrieve and edit the confidential details (enrollment info, national id, address, phone number, etc) of all graduate students.
-
E-learning system of a confidential university [unsolved till now].
- Security issue that would allow attackers to impersonate any new student that didn’t reset his default password.


Manage Authentication Events
Authentication Events
Type
Principal
Created
Timestamp
User Agent
Client IP
Server IP
Geo Lat.
Geo Long.
Geo Accuracy


Meter Control
Target:
Switch ID:
Meter ID:
Flags:
Rate in Kbps
Rate in pps
Do Burst Size
Collect Statistics
Meter Operation:
Add
Modify
Delete
Meter Bands:
Band Type
Rate
Burst Size
Prec Level


| Total net profit | 1.67 | Gross profit | 3.91 | Gross loss | -2.24 |
| Profit factor | 1.75 | Expected payoff | 0.21 | ||
| Absolute drawdown | -0.93 | Maximal drawdown (%) | 1.11 (616.67%) | ||
| Total trades | 8 | Profit trades (% of total) | 5 (62.5%) | Loss trades (% of total) | 3 (37.5%) |
| Long positions (won %) | 8 (62.5%) | Short positions (won %) | 0 (0.0%) | ||
| Largest | profit trade | 1.82 | loss trade | -1.11 | |
| Average | profit trade | 0.78 | loss trade | -0.75 | |
| Minimum | profit trade | 0.17 | loss trade | -0.37 | |
| Maximum | take profit in pips | 32.5 | stop loss in pips | -21.6 | |
| Average | take profit in pips | 14.1 | stop loss in pips | -15.8 | |
| Minimum | take profit in pips | 2.8 | stop loss in pips | -6.1 | |
| Maximum | Reward-Risk | 1.8 | Duration in minutes | 7765 | |
| Average | Reward-Risk | 0.9 | Duration in minutes | 3475.5 | |
| Minimum | Reward-Risk | 0.1 | Duration in minutes | 55 | |
| Maximum | consecutive wins (profit in money) | 3.0 (1.91) | consecutive losses (loss in money) | 1.0 (-1.11) | |
| Average | consecutive wins | 1.0 | consecutive losses | 1.0 |
| Total net profit | 1.67 | Gross profit | 3.91 | Gross loss | -2.24 |
| Profit factor | 1.75 | Expected payoff | 0.21 | ||
| Absolute drawdown | -0.93 | Maximal drawdown (%) | 1.11 (616.67%) | ||
| Total trades | 8 | Profit trades (% of total) | 5 (62.5%) | Loss trades (% of total) | 3 (37.5%) |
| Largest | profit trade | 1.82 | loss trade | -1.11 | |
| Average | profit trade | 0.78 | loss trade | -0.75 | |
| Minimum | profit trade | 0.17 | loss trade | -0.37 | |
| Maximum | take profit in pips | 32.5 | stop loss in pips | -21.6 | |
| Average | take profit in pips | 14.1 | stop loss in pips | -15.8 | |
| Minimum | take profit in pips | 2.8 | stop loss in pips | -6.1 | |
| Maximum | Reward-Risk | 1.8 | Duration in minutes | 7765.0 | |
| Average | Reward-Risk | 0.9 | Duration in minutes | 3475.5 | |
| Minimum | Reward-Risk | 0.1 | Duration in minutes | 55.0 | |
| Maximum | consecutive wins (profit in money) | 3.0 (1.91) | consecutive losses (loss in money) | 1.0 (-1.11) | |
| Average | consecutive wins | 1.0 | consecutive losses | 1.0 |
| Total net profit | 0.0 | Gross profit | 0.0 | Gross loss | 0.0 |
| Profit factor | 0.0 | Expected payoff | 0.0 | ||
| Absolute drawdown | 0.0 | Maximal drawdown (%) | 0.0 (0.0%) | ||
| Total trades | 0 | Profit trades (% of total) | 0 (0.0%) | Loss trades (% of total) | 0 (0.0%) |
| Largest | profit trade | 0.0 | loss trade | 0.0 | |
| Average | profit trade | 0.0 | loss trade | 0.0 | |
| Minimum | profit trade | 0.0 | loss trade | 0.0 | |
| Maximum | take profit in pips | 0.0 | stop loss in pips | 0.0 | |
| Average | take profit in pips | 0.0 | stop loss in pips | 0.0 | |
| Minimum | take profit in pips | 0.0 | stop loss in pips | 0.0 | |
| Maximum | Reward-Risk | 0.0 | Duration in minutes | nan | |
| Average | Reward-Risk | 0.0 | Duration in minutes | 0.0 | |
| Minimum | Reward-Risk | Duration in minutes | nan | ||
| Maximum | consecutive wins (profit in money) | 0.0 (0.0) | consecutive losses (loss in money) | 0.0 (0.0) | |
| Average | consecutive wins | 0.0 | consecutive losses | 0.0 |


|
Fighters
|
Public Member Functions | |
| fight ($pFighter) | |
| receiveHit ($pForce) | |
| init () | |
| Public Member Functions inherited from Fighter | |
| __construct (string $pName) | |
| getName () | |
| setName ($value) | |
| getGuild () | |
| getPhoto () | |
| setPhoto ($value) | |
| getLife () | |
| getForce () | |
Protected Member Functions | |
| setRegeneration ($pRegeneration) | |
| getRegeneration () | |
| Protected Member Functions inherited from Fighter | |
| setLife ($pNewLife) | |
| setForce ($value) | |
Protected Attributes | |
| $regeneration | |
| fight | ( | $pFighter | ) |
|
protected |
| init | ( | ) |
| receiveHit | ( | $pForce | ) |
|
protected |


Unanimous is a 100% modernized nation, built to give our Citizens the best.
Be prepared to be a part of the most advanced government yet. All politics are taken care of by a super computer. When policies are enacted, the computer monitors thousands of parameters to engineer the most optimal nation possible. This is, by far, the most responsive form of government yet.
You've earned your money. So why should you pay to use it? Unanimous uses a proprietary electronic currency and eliminates the middle men that try to sap your money at every single transaction.
When you become a citizen of Unanimous, you get your very own Axis: Neruological Enhancement chip installed for free. Axis keeps your brain in peak condition and rewards citizens for upholding standards.
Unanimous is a nation that is optimized for maximum productivity. Building our own nation gives us several key advantages that would normally be impeaded by government regulations.
By becoming a Citizen of Unanimous, you too can take full advantage of the first corporate nation in history.


s6-linux-init
Software
skarnet.org
The s6-linux-init-echo program
s6-linux-init-echo writes its arguments to stdout.
Interface
s6-linux-init-echo [ -n ] [ -s sep ] args...
s6-linux-init-echo writes its arguments args to stdout, separated with spaces.
Options
- -n : do not output a trailing newline.
- -s sep : separate arguments with the sep
character instead of a space.
Notes
- Strange, and appalling, as it may seem for such a simple task, there is
no way to ensure that the echo program will behave consistently from
Unix system to Unix system - and even from Linux distribution to Linux
distribution. Despite there being a
standard
for it, the echo commands in GNU coreutils, busybox, toybox, sbase, and
other implementations basically all exhibit different behaviours. Every shell has
a built-in echo command, that fails to follow the POSIX standard. echo
is the prime example of the consequences of the blatant disregard of early Unices
for cross-system compatibility, and its followup as a turf war between GNU and the
rest of the Linux world. As a distribution-agnostic software developer, it is ironically
impossible to rely on a definite behaviour of the echo command on every
supported system, and that is why s6-linux-init provides its own implementation.
Fortunately, it is very easy to do so, with minimal overhead.
- This command is an exact duplicate of the
s6-echo command
provided in the s6-portable-utils
package. It was decided not to have a dependency from s6-linux-init to
s6-portable-utils: that dependency would arguably be a higher cost than the small
amount of code duplication.


Sorry, you are OFFLINE
Open your Settings app > "Wireless & networks" or "Connections". Depending on your device, these options may be different. Check the connection status. Turn Wi-Fi/mobile data on, and check to see if there's a difference.
Restart your device. It might sound simple, but sometimes that's all it takes to fix a bad connection.
YOU DIDN'T WRITE
Get back and Try Again
This error can show up, while doing an encryption. Make sure you write some text, before you press the Encrypt button.
Now Press BACK, write something (Don't keep the text-box empty) and try again.
NO EMOJIS ???
Where are your emojis 🤨
This error can show up, while doing an decryption. Make sure you type or paste some emojis, before you press the decrypt button.
Now Press BACK, type or paste your emojis (Don't keep the text-box empty) and try again.
Seeing 'undefined'
in encrypted text
This error can show up, while doing an encryption. Currently, you can encrypt only plain text (along with numbers and alphanumerals. Make sure there isn't any emoji with the plain text.
Try to do it again, without giving an emoji in the plain text. It should work now.
WRONG EMOJIS
There's something wrong
This error can show up, while doing an decryption. Make sure you've written the correct emojis, in the exact order you got it. Best is to COPY those recieved emojis and PASTE them while decryting.(So that you don't get this error)
Now Press BACK, type or paste your emojis (Don't keep the text-box empty) and try again.


Resume
Who are you ?
Experience
- Autonomous Vehicles
- Power Electronics
- LTE with H.264
- DPU Design with FOGA
- WebRTC with Monitoring
- Architect
- Device Driver
- Software Architecture
- Hardware Architecture
- FPGA Design
- OOP with C
- High Performance with Distributed Environment
- OpenMPI with Super Comlputing
- Clean Architecture with JAVA
Skills
Education
| School of Origin | Major | Team | Distinction |
|---|---|---|---|


Click here to open the sample live, running using JavaScript in a dialog window.
To look at the generated JavaScript, view the source of this web page and scroll to the end of the file.
Learn FunScript from the following introductory tutorials
Browse other amazing samples created with FunScript


Really touched
Teresa Ansley from Chicago, IL
The baby can't appreciate them for the moment (these were presents for a newborn) but the new Mum was really touched. Highly recommend!
{% extends "base_center.html" %} {% block title %}FableMe - Book details{% endblock %} {% block maincontent %}
| {% include "fable_details.html" %} | |||
|
{{fable.desc_title}}{{fable.desc_desc}}
Really touchedTeresa Ansley from Chicago, IL The baby can't appreciate them for the moment (these were presents for a newborn) but the new Mum was really touched. Highly recommend! Beyond impressedGiovanni Malago from Milan, Italy I purchased the a story based on Peter and the Pirates and when I received it, I was beyond impressed. The quality and color of the illustrations is impeccable! I cannot wait to give this wonderful gift that I know the whole family will love for years. Beautiful GiftJennifer Beckham from Dallas, TX I have sent the My Very Own Name book to many friends and family as a gift for when their child is born. I was blessed to receive my own copy when my daughter was born in January. It simply is a special and educational way to celebrate a new baby!
|


select * from PLATFORM_ORI_ORDER where PLATFORM_ORDER_ID='' and PLATFORM_ORI_SEQ_ID=''
declare
v_clob clob :='';
begin
update PLATFORM_ORI_ORDER set order_data = v_clob,HAS_EXCEPTION='N',STATUS_ID='INITIAL_STATE' where PLATFORM_ORDER_ID='' and PLATFORM_ORI_SEQ_ID='';
end;
SELECT
QRTZ_TRIGGER_LOG.JOB_NAME,
-- DISTINCT(QRTZ_TRIGGER_LOG.JOB_NAME),
rownum,HANDLE_TIME,QRTZ_TRIGGER_LOG.HANDLE_MSG
FROM
QRTZ_TRIGGER_LOG
WHERE
ROWNUM < 100
AND HANDLE_STATUS = 'FAIL'
AND JOB_NAME NOT IN (
'3W-补仓单',
'3W-零售订单',
'3W-零售退货订单',
'抓单定时任务（退款-万和绯鸟品牌店）',
'抓单定时任务（退款-江苏苏宁易购电子商务有限公司）',
'抓单定时任务（万和京东壁挂炉）'
)
AND to_char(HANDLE_TIME,'yyyy-mm-dd')=to_char(sysdate,'yyyy-mm-dd')
order by HANDLE_TIME desc;
update INVOICE_ORDER_ITEM
set TARIFF='0.13' where
INVOICE_SEQ_ID in(
select INVOICE_ORDER_ITEM.INVOICE_SEQ_ID from INVOICE_ORDER_ITEM
,(select
invo.INVOICE_SEQ_ID
from invoice_order invo where invo.invoice_type_enum_id='ELEC_INVOICE'
and (invo.status_id='INVOICE_INIT' or invo.status_id='INVOICE_WAIT_DELIVER' or invo.status_id='INVOICE_FAIL')
and invo.op_status='INVOICE_UNLOCK' ) invoa
where INVOICE_ORDER_ITEM.INVOICE_SEQ_ID in INVOA.INVOICE_SEQ_ID
-- and INVOICE_ORDER_ITEM.INVOICE_SEQ_ID='XDFP1609220150'
)
select O2O_ERROR_INFO from WLB_ORDER where O2O_ERROR_INFO is not null;
SELECT O2O_ERROR_INFO from WLB_ORDER where O2O_ERROR_INFO is not null and O2O_ERROR_INFO like '%地址%'
and ENTRY_DATE >= SYSDATE-12
select ATTN_NAME,ATTN_PHONE,ATTN_TEL,PROVINCE_ID,CITY_ID,COUNTY_ID,DETAIL_ADDRESS,address from RETAIL_ORDER_ADDRESS
where ORDER_ID='XDRO1905011417'
select * from COUNTY where CITY_NAME=''
update RETAIL_ORDER_ADDRESS set COUNTY_ID='' where ORDER_ID=''
按照省，市，首重重量，首重金额，续重重量，续重金额导入LOGISTIC_IMPORT_TABLE，注意！！！删除旧数据
merge into LOGISTIC_IMPORT_TABLE a
using (
SELECT
PROVINCE_ID,
LOGISTIC_IMPORT_TABLE.o_province_name
FROM
PROVINCE,
LOGISTIC_IMPORT_TABLE
WHERE
PROVINCE_NAME LIKE CONCAT (
LOGISTIC_IMPORT_TABLE.o_province_name,
'%'
)
) b
on(a.o_province_name=b.o_province_name)
when matched then update set a.sys_province_id=b.PROVINCE_ID;
merge into LOGISTIC_IMPORT_TABLE a
using (
SELECT
CITY_ID,
LOGISTIC_IMPORT_TABLE.o_city_name
FROM
CITY,
LOGISTIC_IMPORT_TABLE
WHERE
LOGISTIC_IMPORT_TABLE.o_city_name is not null
and CITY_NAME LIKE CONCAT (
LOGISTIC_IMPORT_TABLE.o_city_name,
'%'
)
) b
on(a.o_city_name=b.o_city_name)
when matched then update set a.sys_city_id=b.CITY_ID;
select * from LOGISTIC_RULE_WEIGHT where RULE_ENUM_ID=''
delete from LOGISTIC_RULE_WEIGHT where RULE_ENUM_ID=''
declare
CURSOR c_mail IS select sys_province_id,
sys_city_id,
first_weight,
first_amount,
next_weight,
next_amount
from LOGISTIC_IMPORT_TABLE;
BEGIN
FOR c1 IN c_mail LOOP
INSERT INTO LOGISTIC_RULE_WEIGHT (
ID,
RULE_ENUM_ID,
PROVINCE_ID,
CITY_ID,
FIRST_WEIGHT,
FIRST_AMOUNT,
NEXT_WEIGHT,
NEXT_AMOUNT
)
VALUES
(
(
SELECT
MAX (
TO_NUMBER (LOGISTIC_RULE_WEIGHT. ID)
) + 1
FROM
LOGISTIC_RULE_WEIGHT
),
--此处按需填写规则名称，注意！！！！操作完请确定数量正确，如果原表有，需先删除delete from LOGISTIC_RULE_WEIGHT where RULE_ENUM_ID=
,
c1.sys_province_id,
c1.sys_city_id,
c1.first_weight,
c1.first_amount,
c1.next_weight,
c1.next_amount
) ;
END LOOP;
delete from logistic_import_table;
end;
select * from LOGISTIC_RULE_WEIGHT where RULE_ENUM_ID=''
(SELECT MAX (TO_NUMBER (LOGISTIC_RULE_WEIGHT.ID)) + 1 FROM LOGISTIC_RULE_WEIGHT)
delete from LOGISTIC_RULE_WEIGHT where RULE_ENUM_ID='';
--插入语句。。。。。
select * from LOGISTIC_RULE_WEIGHT where RULE_ENUM_ID='';
UPDATE PLATFORM_ORI_ORDER
SET STATUS_ID = 'CONVERT_SUCCESS',
HAS_EXCEPTION = 'N'
WHERE 1=1
and SALES_CHANNEL_MENU_ID='GUANYIERP'
and PLATFORM_ORDER_ID = ''


Next: Fortran Version
Up: INTRODUCTION
Previous: Scope
SLALIB was designed to give application programmers
a basic set of positional-astronomy tools which were
accurate and easy to use. To this end, the library is:
- Readily available, including source code and documentation.
- Supported and maintained.
- Portable - coded in standard languages and available for
multiple computers and operating systems.
- Thoroughly commented, both for maintainability and to
assist those wishing to cannibalize the code.
- Stable.
- Trustworthy - some care has gone into
testing SLALIB, both by comparison with published data and
by checks for internal consistency.
- Rigorous - corners are not cut,
even where the practical consequences would, as a rule, be
negligible.
- Comprehensive, without including too many esoteric features
required only by specialists.
- Practical - almost all the routines have been written to
satisfy real needs encountered during the development of
real-life applications.
- Environment-independent - the package is
completely free of pauses, stops, I/O etc.
- Self-contained - SLALIB calls no other libraries.
A few caveats:
- SLALIB does not pretend to be canonical. It is in essence
an anthology, and the adopted algorithms are liable
to change as more up-to-date ones become available.
- The functions aren't orthogonal - there are several
cases of different
routines doing similar things, and many examples where
sequences of SLALIB calls have simply been packaged, all to
make applications less trouble to write.
- There are omissions - for example there are no
routines for calculating physical ephemerides of
Solar-System bodies.
- SLALIB is not homogeneous, though important subsets
(for example the FK4/FK5 routines) are.
- The library is not foolproof. You have to know what
you are trying to do (e.g. by reading textbooks on positional
astronomy), and it is the caller's responsibility to supply
sensible arguments (although enough internal validation is done to
avoid arithmetic errors).
- Without being written in a wasteful
manner, SLALIB is nonetheless optimized for maintainability
rather than speed. In addition, there are many places
where considerable simplification would be possible if some
specified amount of accuracy could be sacrificed; such
compromises are left to the individual programmer and
are not allowed to limit SLALIB's value as a source
of comparison results.
Next: Fortran Version
Up: INTRODUCTION
Previous: Scope
SLALIB --- Positional Astronomy Library
Starlink User Note 67
P. T. Wallace
12 October 1999
E-mail:ptw@star.rl.ac.uk


|
Perl Weekly
Issue #141 - 2014-04-07 - Modern Perl Now Moderner
latest | archive | by Yanick Champoux
|
|
This week is exceptionally good for the beginners amongst us. Not only the new edition of Modern Perl is out, but we also have quite a few tutorials. Not that the more experience reader won't have their fill; new version of GitHub-like GitPrep being released, Moose article aggregation, survey of the new modules for March... there should be enough to keep everybody happy. Enjoy! ~ `/anick
|
|
|
Announcements
|
|
|
|
|
Articles
|
Planet Moose - March 2014
What's up in the extended world of Moose in March? Nothing major, but a lot of little things. Toby Inkster has the details, and the links.
|
|
|
|
|
|
What's new on CPAN - March 2014
David Farrell gives us here a curated list of the interesting new modules that appeared on CPAN in March. Lots of nifty treasures in there.
|
|
|
|
Fixing CPAN links on Stack Overflow
When answering a question on Stack Overflow, one can link to Perl modules in a way that will break once the module gets updated in the future (which makes us all sad), or in a way that will let all future generations enjoy the bestest and latest version of the module forever. Gabor shows us the difference.
|
|
Carrying (mini)CPAN
minicpan is a wonderful tool to have your own local copy of CPAN's latest releases. fishy shows how he uses it to always have his CPAN on a thumbdrive with him.
|
|
Discussion
|
Do not use each
"To each his own" folk wisdom tells us. Reini Urban would beg to differ, and warn us of the pitfalls of the 'each' iterator.
|
|
Code
|
|
|
|
|
Asynchronous web services with PSGI and IO::Async
When writing web services, asynchronous programming is almost certainly bound to come into the picture. Usually, it's nicely abstracted by a web framework. But, as dakkar shows here, rolling your own is not as painful as one would think.
|
|
|
|
Custom DBIx::Class ResultSets
DBIx::Class's resultset classes are often slim, logic-less affairs. But Ovid shows us here how they can also be used to create a much smarter interaction with the database.
|
|
|
|
Weekly collections
|
|
|
|
|
Perl Maven Tutorials
|
|
|
Events
|
Perl-related events
In the following cities: Swindon (UK), Utrecht (NL), Silver Spring, (MD/USA), Poznan (PL), Prague (CZ), Oslo (NO), Paris (FR), Kiev (UA), Orlando (FL/USA), Sofia (BG), Flörli Olten (CH)
|
|
You know, you could get the Perl Weekly right in your mailbox. Every Week. Free of charge!
|


A classic full-size car with super-comfortable interior, its high visibility and its capacity.
15 reviews
It may look a little kitschy now, but back in the 80s, this 2-door sports coupe made girls shiver.
12 reviews
It ‘starred’ in hyped motion pictures, such as Goldfinger, Hit and Run, Spider Man 2 and even The Matrix.
31 reviews
The 2000GT engine was a 2.0 L straight-6, responsible for producing a horsepower of 150.
6 reviews
It came as a 4-door hardtop and was considered a super-luxury car.
18 reviews
Cadillac OHV V8, featuring a 5.4 L engine and a horsepower of 160.
18000 reviews