2004
Colin Adams and others
Colin
Adams
colin@colina.demon.co.uk Sunday, November 20th, 2005

# Conformance to standards

This library is aligned with the Candidate Recommendations issued on the 3rd November 2005 for XPath 2.0 and XSLT 2.0. An XSLT processor claiming conformance with these Candidate Recommendations is required to document what choices it makes for features that are listed as implementation-defined.

The library clains conformance to a Basic XSLT processor, and in addition supports the optional features Serialization Feature and Backwards Compatibility Feature.

## Implementation-defined choices

Invocation of the processor

  This is described elsewhere in the documentation starting from Overview. The Base Output URI is equal to the value of system_id in `XM_XSLT_TRANSFORMATION_RESULT`, and this is set by whichever creation procedure you use to create the object. See Transformation Result.

Creating new extension instructions and extension functions

  There is no mechanism provided for creating new extension instructions. See Creating extension functions for the mechanism for creating new extension functions.

Recoverable Dynamic Errors

  The decision on whether or not to recover from a recoverable dynamic error is made by the `XM_XSLT_ERROR_LISTENER`. See The Error Listener for more details.

Type Errors

  Type errors are signalled statically whenever possible.

Serialization Errors

  To be defined upon the resolution of [Bug 2540] [XSLT2.0] Circular references to serialization errors.

Extension Namespaces

  See Overview.

User-defined Data Elements

  See Extensions.

URI References

  The following URI schemes are directly supported by the library for reference by the href attribute of xsl:import and xsl:include:

  - file

  - data

  - string

  The last scheme is used for reading text from Eiffel `STRING`s. It is documented in Resolvers, which also documents how to add additional URI schemes.

  The following additional URI schemes are supported by Gestalt:

  - http

  - ftp

  For the list of supported media types and treatment of fragment identifiers, see Options This also applies to the document() function.

Limits

  - The maximum number of digits permitted for an xs:decimal value is at least 18, but may be set to any higher value.

  - For dates and times, both positive and negative year values are supported for any value that can be represented by a 32-bit signed integer. The maximum number of fractional second digits is three. Although additional digits will be recognised, values are rounded to 3 digits.

  - For durations, the maximum values for the years, months, days, hours, minutes and seconds components are those that can be represented by a 32-bit signed integer.

  - For xdt:yearMonth durations, the greatest durations that can be expressed in months is 13 times the maximum positive number that can be expressed as a 32-bit signed integer.

  - For xdt:dayTime durations, the greatest durations that can be expressed in seconds is 24 * 60 * 60 times the maximum positive number that can be expressed as a 32-bit signed integer.

  - For xs:string, xs:hexBinary, xs:base64Binary, xs:QName, xs:anyURI and xs:NOTATION, the maximum length of a value is the maximum positive number that can be expressed as a 32-bit signed integer.

  - The maximum length of a sequence is the maximum positive number that can be expressed as a 32-bit signed integer.

Implicit Timexone

  The implicit timezone is set to the local time zone when a transformer is created.

Numbering sequences

  No additional numbering sequences are defined.

Upper bounds on numbering sequences with xsl:number

  When using Roman Numerals, the maximum number is 3,999. Other sequences are limited to the maximum positive number that can be expressed as a 32-bit signed integer.

Languages supported by xsl:number

  The default language is English (en). The library does not have built-in support for any other languages right now, but these can be added by writing a descendant of `XM_XSLT_NUMBERER`, and editing selected_numberer of `XM_XSLT_NUMBER_ROUTINES`.

  TODO: there should be a plugin-mechanism for this.

Data-type attribute on xsl:sort

  If the data-type attribuute on the xsl:sort instruction has a value other than text or number then error XTDE0030 is issued at run-time.

Defining collation URIs

  There is currently no mechanism for defining collations.

Selecting collations

  The algorithm currently used by xsl:sort for select a collation, given a lang and case-order attribute, is to use the Unicode Code-point collation for English, and to raise an error for any other language.

  TODO: the case-order attribute is not currently implemented.

Date/time formatting

  The default language is English (en). No other languages are currently supported. The default calendar is CE. AD is also supported. The default country is US. The country is currently ignored, and all values are accepted. This will change.

  The following abbreviations are used for the days of the week in English:

  - Sun

  - Mon

  - Tues

  - Weds

  - Thurs

  - Fri

  - Sat

System properties

  The following values are returned for the standard system-properties:

  xsl:version

    2.0

  xsl:vendor

    Gobo

  xsl:vendor-url

    http://www.gobosoft.com/

  xsl:product-name

    gexslt

    This is actually configurable, by calling set_product_name from `XM_XPATH_CONFIGURATION`

  xsl:product-version

    This is equal to the version of the Gobo library. See Gobo news

  xsl:is-schema-aware

    no

  xsl:supports-serialization

    yes

  xsl:supports-backwards-compatibility

    yes

  Also, any property in the namespace http://exslt.org/environment-variables is treated as the name of an environment variable. If that environemnt variable is set, then it's value is returned.

Destination for xsl:message

  All xsl:message output goes to the standard error stream.

Extension function string results

  Extension functions are required to raise an error if they attempt to return a string that contains invalid XML instructions. Since any extension functions must be linked into the executable, this effectively means that there will be a different implementation.

External objects

  External objects may return type object_type as defined in `XM_XPATH_TYPE_FACTORY`.

Final result trees

  See Accessing the Transformation Results for how to access final result trees.

  The following URI schemes are directly supported by the library for the value of the href attribute of the xsl:result-document instruction:

  - file

  - string

  - stdout

  Stdout refers to the standard output stream. The only value permitted for URIs in this scheme is the the string `stdout:`. String refers to Eiffel `STRING`s.

  The following additional URI schemes are supported by Gestalt:

  - http

  - ftp

  - mailto

  Eiffel programmers may add additional URI schemes. See The Output URI Resolver

  Serialization is to the destination implied by the URI scheme. In the case of `string:`, these can only be retrieved by an Eiffel program, by accessing output_destinations from `XM_XSLT_OUTPUT_URI_RESOLVER`.

Encoding

  The default value for the encoding attribute of xsl:output is UTF-8.

Output versions

  This implementation supports the values 1.0 and 1.1 for the version attribute of xsl:output when the method is xml or xhtml . It supports 4.0 or 4.01 when the method is html.

Byte order mark

  The default value for the byte-order-mark attribute of xsl:output is no when the encoding is UTF-8.

Disabling Output Escaping

  This is not supported.

Normalization forms

  Only NFC, NFKC, NFD and NFKD are supported.