Name

[2.0] unordered()

Given a sequence, returns those items in an implementation-defined order.

Syntax

item()* unordered(item()*)

Inputs

A sequence of items.

Outputs

A sequence containing the same items as the input sequence, but in an order determined by the XSLT processor.

Defined in

XQuery 1.0 and XPath 2.0 Functions and Operators section 15.1, “General Functions and Operators on Sequences.”

Example

The unordered() function is a way of telling the XSLT processor that we don’t care how items are sequenced. In some cases, this can improve the performance of the XSLT processor. As an example, we’ll look at the ancestors of an element in two ways. Using the normal approach, the ancestors appear in document order. When using unordered() with Saxon, the ancestors appear in the reverse order. Most likely, Saxon is taking advantage of its internal data structures to start at a node and list its ancestors from the innermost level of the document outward. Using the same stylesheet with AltovaXML, the ancestors appear in document order in both cases.

We’ll reuse one of our purchase orders as our input document:

<?xml version="1.0" ?>
<!-- po38293.xml -->
<purchase-order id="38293">
  <date year="2001" month="9" day="8"/>
  <customer id="4738" level="Basic">
    <address type="business">
      <name>
        <title>Ms.</title>
        <first-name>Amanda</first-name> <last-name>Reckonwith</last-name> </name> <street>930-A Chestnut Street</street> <city>Lynn</city> <state>MA</state> <zip>02930</zip> </address> <address type="ship-to"/> ...

Get XSLT, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.