func:script element provides an implementation of extension functions in a particular namespace.
<func:script implements-prefix = "ncname" language = "qname-and-not-ncname" src = "uri-reference" archive = "uri-reference" />
Описание и примеры
The function implementations may be provided as a separate resource. Some language bindings also allow the function implementations to be provided directly in the content of the
implements-prefix attribute specifies a namespace prefix. This prefix is expanded into a URI using the namespace declarations in scope on the
func:script element. This URI is the namespace URI of the expanded-names of the functions of which an implementation is being provided. The implementation of the extension functions identifies the local names of the functions that is is implementing.
language attribute identifies the language used by the implementation being provided. It also identifies the way arguments are passed by the XSLT processor to the implementation of the extension function, the way results are returned from the implementation of the extension function, and the way the XSLT expression context is made available to the extension function (collectively known as the language binding). The value must be a QName. If the QName and must have a prefix. The QName is expanded into an expanded-name as described in 2.4 Qualified Names of XSLT; the expanded-name identifies the language binding; the language binding in this case is not specified by this document. XSLT processors are not required to support any particular language binding.
func:script elements with language values not supported by the processor are ignored.
The content of the
func:script element must be empty and the
src attribute is required. The
src attribute is a URI reference that identifies the resource containing the implementation of the extension functions. For example,
A Java class: src="java:com.example.datestuff.DateRoutines" An ECMAScript library: src="http://example.org/somecode.js"
archive attribute is a whitespace-separated list of URI references, each pointing to an archive to be loaded by the processor before executing the extension function.
function-available function can be used to detect the availability of an extension function provided by an
func:script element. The precise details of what it means for an extension function to be available is specific to the language-binding.
A stylesheet can contain any number of
func:script elements. The order of these elements is not significant in the stylesheet, except for fallback behavior. In particular, calls to extension function can occur before
func:script elements that provide implementations of those extension functions.
If there are multiple
func:script elements with the same namespace URI but different implementation languages, then each implementation language corresponds to an alternative implementation of the same extension functions. If an XSLT processor supports two or more of the languages in which an extension function implementation is provided, then it is free to choose any of its supported languages, provided that it always chooses the same implementation for the same extension function namespace URI. A processor is under no obligation to choose the same implementation each time a document is transformed.
If there are multiple
func:script elements with the same namespace URI and the same language but different import precedences, a processor must reconcile the separate elements using the import precedence. The manner in which the elements are reconciled is determined by the language binding. For example, some language bindings may simply use the
func:script element with the highest import precedence; others may merge the
func:script elements in some way. It is an error for two
func:script elements with the same import precedence to implement the same namespace URI for the same language. An XSLT processor may signal the error; if it does not signal the error, it must recover by treating the two
func:script elements as if the
func:script element that occurs later in the stylesheet had a higher import precedence than the other
There are currently no XSLT processors that we know of that support
There are currently no third-party implementations of