XSLT 1.0 / XPath 1.0 Availability

Manfred Staudinger, Vienna (May 2008)

Shows the status of an XSLT 1.0 / XPath 1.0 implementation for elements and functions, including any extensions, in 9 categories. The numbers given for each catagory (n in total) are the numbers of items tested. For xslt and xpath these are in accordance with the XSLT 1.0 and the XPath 1.0 specifications.

xsl:apply-imports xsl:apply-templates xsl:attribute xsl:call-template xsl:choose xsl:comment xsl:copy xsl:copy-of xsl:element xsl:fallback xsl:for-each xsl:if xsl:message xsl:number xsl:processing-instruction xsl:text xsl:value-of xsl:variable xsl:attribute-set xsl:decimal-format xsl:import xsl:include xsl:key xsl:namespace-alias xsl:output xsl:param xsl:preserve-space xsl:strip-space xsl:stylesheet xsl:template xsl:transform xsl:with-param xsl:sort xsl:when xsl:otherwise current document element-available format-number function-available generate-id key system-property unparsed-entity-uri last position count id local-name namespace-uri name string concat starts-with contains substring-before substring-after substring string-length normalize-space translate boolean not true false lang number sum floor ceiling round saxon:assign saxon:doctype saxon:entity-ref saxon:group saxon:output saxon:while msxsl:script exsl:document date:date-format func:function func:result func:script saxon:function saxon:handler saxon:preview saxon:script xalan:component xalan:redirect libxslt:test saxon:return saxon:item xalan:script xalan:write xalan:open xalan:close msxsl:node-set exsl:node-set exsl:object-type math:min math:max math:highest math:lowest math:abs math:acos math:asin math:atan math:atan2 math:constant math:cos math:exp math:log math:power math:random math:sin math:sqrt math:tan set:difference set:intersection set:distinct set:has-same-node set:leading set:trailing date:date-time date:date date:time date:year date:leap-year date:month-in-year date:month-name date:month-abbreviation date:week-in-year date:week-in-month date:day-in-year date:day-in-month date:day-of-week-in-month date:day-in-week date:day-name date:day-abbreviation date:hour-in-day date:minute-in-hour date:second-in-minute date:format-date date:parse-date date:difference date:add date:add-duration date:sum date:seconds date:duration str:tokenize str:replace str:padding str:align str:encode-uri str:decode-uri str:concat str:split crypto:sha1 crypto:md5 crypto:rc4_encrypt crypto:rc4_decrypt crypto:md4 regexp:test regexp:match regexp:replace dyn:map dyn:evaluate dyn:min dyn:max dyn:sum dyn:closure random:random-sequence saxon:after saxon:base-uri saxon:before saxon:closure saxon:difference saxon:distinct saxon:eval saxon:evaluate saxon:exists saxon:expression saxon:forAll saxon:for-all saxon:getPseudoAttribute saxon:get-pseudo-attribute saxon:getUserData saxon:get-user-data saxon:hasSameNodes saxon:has-same-nodes saxon:highest saxon:if saxon:ifNull saxon:if-null saxon:intersection saxon:is-null saxon:leading saxon:lineNumber saxon:line-number saxon:lowest saxon:max saxon:min saxon:nodeSet saxon:node-set saxon:path saxon:range saxon:setUserData saxon:set-user-data saxon:sum saxon:systemId saxon:system-id saxon:tokenize xalan:difference xalan:evaluate xalan:hasSameNodes xalan:intersection xalan:nodeset xalan:tokenize sql:new sql:query sql:close libxslt:test


[1] element-available() is defined for instructions only and should return false() for any other element ( XSLT 1.0 specification and errata E7). Nevertheless some processors use true() to indicate the element has been implemented.

[2] Due to a bug in Saxon 6.5.5, function-available() returns false() where it should return true().

[3] In addition to [1], there seems to be no easy way to determine the list of extension elements (other than instructions) implemented. This might be the reason that many XSLT 1.0 implementations (MSXML3, Transformiix, Opera) have choosen to violate the specs here.