functions.tentative.window.js (4835B)
1 const xslt_functions = [ 2 "QName", 3 "abs", 4 "accumulator-after", 5 "accumulator-before", 6 "adjust-date-to-timezone", 7 "adjust-dateTime-to-timezone", 8 "adjust-time-to-timezone", 9 "analyze-string", 10 "apply", 11 "available-environment-variables", 12 "available-system-properties", 13 "avg", 14 "base-uri", 15 "boolean", 16 "ceiling", 17 "codepoint-equal", 18 "codepoints-to-string", 19 "collation-key", 20 "collection", 21 "compare", 22 "concat", 23 "contains", 24 "contains-token", 25 "copy-of", 26 "count", 27 "current", 28 "current-date", 29 "current-dateTime", 30 "current-group", 31 "current-grouping-key", 32 "current-merge-group", 33 "current-merge-key", 34 "current-output-uri", 35 "current-time", 36 "data", 37 "dateTime", 38 "day-from-date", 39 "day-from-dateTime", 40 "days-from-duration", 41 "deep-equal", 42 "default-collation", 43 "default-language", 44 "distinct-values", 45 "doc", 46 "doc-available", 47 "document", 48 "document-uri", 49 "element-available", 50 "element-with-id", 51 "empty", 52 "encode-for-uri", 53 "ends-with", 54 "environment-variable", 55 "error", 56 "escape-html-uri", 57 "exactly-one", 58 "exists", 59 "false", 60 "filter", 61 "floor", 62 "fold-left", 63 "fold-right", 64 "for-each", 65 "for-each-pair", 66 "format-date", 67 "format-dateTime", 68 "format-integer", 69 "format-number", 70 "format-time", 71 "function-arity", 72 "function-available", 73 "function-lookup", 74 "function-name", 75 "generate-id", 76 "has-children", 77 "head", 78 "hours-from-dateTime", 79 "hours-from-duration", 80 "hours-from-time", 81 "id", 82 "idref", 83 "implicit-timezone", 84 "in-scope-prefixes", 85 "index-of", 86 "innermost", 87 "insert-before", 88 "iri-to-uri", 89 "json-doc", 90 "json-to-xml", 91 "key", 92 "lang", 93 "last", 94 "load-xquery-module", 95 "local-name", 96 "local-name-from-QName", 97 "lower-case", 98 "matches", 99 "max", 100 "min", 101 "minutes-from-dateTime", 102 "minutes-from-duration", 103 "minutes-from-time", 104 "month-from-date", 105 "month-from-dateTime", 106 "months-from-duration", 107 "name", 108 "namespace-uri", 109 "namespace-uri-for-prefix", 110 "namespace-uri-from-QName", 111 "nilled", 112 "node-name", 113 "normalize-space", 114 "normalize-unicode", 115 "not", 116 "number", 117 "one-or-more", 118 "outermost", 119 "parse-ietf-date", 120 "parse-json", 121 "parse-xml", 122 "parse-xml-fragment", 123 "path", 124 "position", 125 "prefix-from-QName", 126 "put", 127 "random-number-generator", 128 "regex-group", 129 "remove", 130 "replace", 131 "resolve-QName", 132 "resolve-uri", 133 "reverse", 134 "root", 135 "round", 136 "round-half-to-even", 137 "seconds-from-dateTime", 138 "seconds-from-duration", 139 "seconds-from-time", 140 "serialize", 141 "snapshot", 142 "sort", 143 "starts-with", 144 "static-base-uri", 145 "stream-available", 146 "string", 147 "string-join", 148 "string-length", 149 "string-to-codepoints", 150 "subsequence", 151 "substring", 152 "substring-after", 153 "substring-before", 154 "sum", 155 "system-property", 156 "tail", 157 "timezone-from-date", 158 "timezone-from-dateTime", 159 "timezone-from-time", 160 "tokenize", 161 "trace", 162 "transform", 163 "translate", 164 "true", 165 "type-available", 166 "unordered", 167 "unparsed-entity-public-id", 168 "unparsed-entity-uri", 169 "unparsed-text", 170 "unparsed-text-available", 171 "unparsed-text-lines", 172 "upper-case", 173 "uri-collection", 174 "xml-to-json", 175 "year-from-date", 176 "year-from-dateTime", 177 "years-from-duration", 178 "zero-or-one", 179 ]; 180 181 const xslt1_functions = [ 182 "boolean", 183 "ceiling", 184 "concat", 185 "contains", 186 "count", 187 "current", 188 "document", 189 "element-available", 190 "false", 191 "floor", 192 "format-number", 193 "function-available", 194 "generate-id", 195 "id", 196 "key", 197 "lang", 198 "last", 199 "local-name", 200 "name", 201 "namespace-uri", 202 "normalize-space", 203 "not", 204 "number", 205 "position", 206 "round", 207 "starts-with", 208 "string", 209 "string-length", 210 "substring", 211 "substring-after", 212 "substring-before", 213 "sum", 214 "system-property", 215 "translate", 216 "true", 217 "unparsed-entity-uri", 218 ]; 219 220 for (const fn of xslt_functions) { 221 test(() => { 222 const xsltSrc = `<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 223 <xsl:output method="html" encoding="utf-8" version="5"/> 224 <xsl:template match="/"> 225 <xsl:choose> 226 <xsl:when test='function-available("${fn}")'> 227 <div>available</div> 228 </xsl:when> 229 <xsl:otherwise> 230 <div>unavailable</div> 231 </xsl:otherwise> 232 </xsl:choose> 233 </xsl:template> 234 </xsl:stylesheet>`; 235 236 const processor = new XSLTProcessor(); 237 const parser = new DOMParser(); 238 processor.importStylesheet( 239 parser.parseFromString(xsltSrc, "application/xml") 240 ); 241 const output = processor.transformToFragment( 242 parser.parseFromString("<x/>", "application/xml"), 243 document 244 ); 245 246 // Note we only expect functions defined in XSLT 1.0 to be defined. 247 assert_equals( 248 output.textContent.trim(), 249 xslt1_functions.indexOf(fn) >= 0 ? "available" : "unavailable" 250 ); 251 }, fn); 252 }