       Status of implementation of the XSLT 1.0 Features:
       ==================================================

      $Id: FEATURES,v 1.28 2001/07/10 15:14:08 veillard Exp $

Stylesheet Constructs:
======================

YES			    xsl:stylesheet
?				id = id 
YES				extension-element-prefixes = tokens 
YES				exclude-result-prefixes = tokens 
YES				version = number

YES			    xsl:transform
?				id = id 
YES				extension-element-prefixes = tokens 
YES				exclude-result-prefixes = tokens 
YES				version = number


YES			    Literal Result Element as Stylesheet

YES			    Embedding Stylesheets

NO                          mediaType

Top Level Elements:
===================

YES			    xsl:include
YES				href = uri-reference

YES			    xsl:import
YES				href = uri-reference

YES			    xsl:strip-space
YES				elements = tokens

YES			    xsl:preserve-space
YES				elements = tokens

YES			    xsl:template
YES				match = pattern 
YES				name = qname 
YES				priority = number 
YES				mode = qname

YES			    xsl:namespace-alias
YES				stylesheet-prefix = prefix | "#default"
YES				result-prefix = prefix | "#default"

YES			    xsl:attribute-set
YES				name = qname 
YES				use-attribute-sets = qnames

YES			    xsl:variable
YES				name = qname 
YES				select = expression
YES				Content: template

YES			    xsl:param
YES				name = qname 
YES				select = expression
YES				Content: template

YES			    xsl:key
YES				name = qname 
YES				match = pattern 
YES				use = expression

YES			    xsl:output
YES				method = "xml" | "html" | "text" | qname-but-not-ncname 
YES				version = nmtoken 
YES				encoding = string 
YES				omit-xml-declaration = "yes" | "no"
YES				standalone = "yes" | "no"
YES				doctype-public = string 
YES				doctype-system = string 
YES				cdata-section-elements = qnames 
YES				indent = "yes" | "no"
YES				media-type = string

Instructions:
=============

YES			    xsl:apply-templates
YES				select = node-set-expression 
YES				mode = qname

YES			    xsl:apply-imports

YES			    xsl:call-template
YES				name = qname

YES			    xsl:element
YES				name = { qname }
YES				namespace = { uri-reference }
YES				use-attribute-sets = qnames

YES			    xsl:attribute
YES				name = { qname }
YES				namespace = { uri-reference }

YES			    xsl:text
YES				disable-output-escaping = "yes" | "no"

YES			    xsl:processing-instruction
YES				name = { ncname }

YES			    xsl:comment

YES			    xsl:copy
YES				use-attribute-sets = qnames

YES			    xsl:value-of
YES				select = string-expression 
YES				disable-output-escaping = "yes" | "no"

YES			    xsl:number
YES				level = "single" | "multiple" | "any"
YES				count = pattern 
YES				from = pattern 
YES				value = number-expression 
YES				format = { string }
NO				lang = { nmtoken }
NO				letter-value = { "alphabetic" | "traditional" }
YES				grouping-separator = { char }
YES				grouping-size = { number }

YES			    xsl:for-each
YES				select = node-set-expression

YES			    xsl:if
YES				test = boolean-expression

YES			    xsl:choose

YES			    xsl:when
YES				test = boolean-expression

YES			    xsl:otherwise

YES			    xsl:sort
YES				select = string-expression 
NO				lang = { nmtoken }
YES				data-type = { "text" | "number" | qname-but-not-ncname }
YES				order = { "ascending" | "descending" }
NO				case-order = { "upper-first" | "lower-first" }

YES			    xsl:variable
YES				name = qname 
YES				select = expression
YES				Content: template

YES			    xsl:param
YES				name = qname 
YES				select = expression
YES				Content: template

YES			    xsl:copy-of
YES				select = expression

YES			    xsl:with-param
YES				name = qname 
YES				select = expression

YES			    xsl:decimal-format
YES				name = qname 
YES				decimal-separator = char 
YES				grouping-separator = char 
YES				infinity = string 
YES				minus-sign = char 
YES				NaN = string 
YES				percent = char 
YES				per-mille = char 
YES				zero-digit = char 
YES				digit = char 
YES				pattern-separator = char

YES			    xsl:message
YES				terminate = "yes" | "no"

YES			    xsl:fallback

General:
========

YES			    Conflict Resolution for Template Rules

YES			    Whitespace Stripping

YES			    Built-in Template Rules
YES			        match="*|/"
YES				match="text()|@*"
YES				match="processing-instruction()|comment()"
YES				Namespace
YES				Mode

YES			    Extension Elements

YES			    Extension Functions

YES			    Attribute Value Templates

YES			    Result Tree Fragments

Functions:
==========

YES			    node-set document(object, node-set?)
YES			    node-set key(string, object)
YES			    string format-number(number, string, string?)
YES			    node-set current() 
YES			    string unparsed-entity-uri(string)
YES			    string generate-id(node-set?)
YES			    object system-property(string)
YES			    boolean element-available(string)
YES			    boolean function-available(string)

Patterns:
=========

YES			    para
YES			    *
YES			    chapter|appendix
YES			    olist/item
YES			    appendix//para
YES			    /
YES			    text()
YES			    processing-instruction()
YES			    node()
YES			    id("W11")
YES			    para[1]
YES			    *[position()=1 and self::para]
YES			    para[last()=1]
YES			    items/item[position()>1]
YES			    item[position() mod 2 = 1]
YES			    div[@class="appendix"]//p
YES			    @class
YES			    @*
YES   except ns for key	    key('a','b')

daniel@veillard.com
