xquery function
Highlight.js language definition for xquery.
Implementation
Mode xquery(Highlight hljs) {
return Mode(
name: r'XQuery',
aliases: [r'xpath', r'xq', r'xqm'],
caseInsensitive: false,
illegal: r'(proc)|(abstract)|(extends)|(until)|(#)',
keywords: {
r'$pattern': r'[a-zA-Z$][a-zA-Z0-9_:-]*',
r'keyword': [
r'module',
r'schema',
r'namespace',
r'boundary-space',
r'preserve',
r'no-preserve',
r'strip',
r'default',
r'collation',
r'base-uri',
r'ordering',
r'context',
r'decimal-format',
r'decimal-separator',
r'copy-namespaces',
r'empty-sequence',
r'except',
r'exponent-separator',
r'external',
r'grouping-separator',
r'inherit',
r'no-inherit',
r'lax',
r'minus-sign',
r'per-mille',
r'percent',
r'schema-attribute',
r'schema-element',
r'strict',
r'unordered',
r'zero-digit',
r'declare',
r'import',
r'option',
r'function',
r'validate',
r'variable',
r'for',
r'at',
r'in',
r'let',
r'where',
r'order',
r'group',
r'by',
r'return',
r'if',
r'then',
r'else',
r'tumbling',
r'sliding',
r'window',
r'start',
r'when',
r'only',
r'end',
r'previous',
r'next',
r'stable',
r'ascending',
r'descending',
r'allowing',
r'empty',
r'greatest',
r'least',
r'some',
r'every',
r'satisfies',
r'switch',
r'case',
r'typeswitch',
r'try',
r'catch',
r'and',
r'or',
r'to',
r'union',
r'intersect',
r'instance',
r'of',
r'treat',
r'as',
r'castable',
r'cast',
r'map',
r'array',
r'delete',
r'insert',
r'into',
r'replace',
r'value',
r'rename',
r'copy',
r'modify',
r'update',
],
r'type': [
r'item',
r'document-node',
r'node',
r'attribute',
r'document',
r'element',
r'comment',
r'namespace',
r'namespace-node',
r'processing-instruction',
r'text',
r'construction',
r'xs:anyAtomicType',
r'xs:untypedAtomic',
r'xs:duration',
r'xs:time',
r'xs:decimal',
r'xs:float',
r'xs:double',
r'xs:gYearMonth',
r'xs:gYear',
r'xs:gMonthDay',
r'xs:gMonth',
r'xs:gDay',
r'xs:boolean',
r'xs:base64Binary',
r'xs:hexBinary',
r'xs:anyURI',
r'xs:QName',
r'xs:NOTATION',
r'xs:dateTime',
r'xs:dateTimeStamp',
r'xs:date',
r'xs:string',
r'xs:normalizedString',
r'xs:token',
r'xs:language',
r'xs:NMTOKEN',
r'xs:Name',
r'xs:NCName',
r'xs:ID',
r'xs:IDREF',
r'xs:ENTITY',
r'xs:integer',
r'xs:nonPositiveInteger',
r'xs:negativeInteger',
r'xs:long',
r'xs:int',
r'xs:short',
r'xs:byte',
r'xs:nonNegativeInteger',
r'xs:unisignedLong',
r'xs:unsignedInt',
r'xs:unsignedShort',
r'xs:unsignedByte',
r'xs:positiveInteger',
r'xs:yearMonthDuration',
r'xs:dayTimeDuration',
],
r'literal': [
r'eq',
r'ne',
r'lt',
r'le',
r'gt',
r'ge',
r'is',
r'self::',
r'child::',
r'descendant::',
r'descendant-or-self::',
r'attribute::',
r'following::',
r'following-sibling::',
r'parent::',
r'ancestor::',
r'ancestor-or-self::',
r'preceding::',
r'preceding-sibling::',
r'NaN',
],
},
contains: [
Mode(scope: r'variable', begin: r'[$][\w\-:]+'),
Mode(
scope: r'built_in',
variants: [
Mode(
begin: r'\barray:',
end:
r'(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\b',
),
Mode(
begin: r'\bmap:',
end:
r'(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\b',
),
Mode(
begin: r'\bmath:',
end:
r'(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\b',
),
Mode(begin: r'\bop:', end: r'\(', excludeEnd: true),
Mode(begin: r'\bfn:', end: r'\(', excludeEnd: true),
Mode(
begin:
'[^</\$:\'"-]\\b(?:abs|accumulator-(?:after|before)|adjust-(?:date(?:Time)?|time)-to-timezone|analyze-string|apply|available-(?:environment-variables|system-properties)|avg|base-uri|boolean|ceiling|codepoints?-(?:equal|to-string)|collation-key|collection|compare|concat|contains(?:-token)?|copy-of|count|current(?:-)?(?:date(?:Time)?|time|group(?:ing-key)?|output-uri|merge-(?:group|key))?data|dateTime|days?-from-(?:date(?:Time)?|duration)|deep-equal|default-(?:collation|language)|distinct-values|document(?:-uri)?|doc(?:-available)?|element-(?:available|with-id)|empty|encode-for-uri|ends-with|environment-variable|error|escape-html-uri|exactly-one|exists|false|filter|floor|fold-(?:left|right)|for-each(?:-pair)?|format-(?:date(?:Time)?|time|integer|number)|function-(?:arity|available|lookup|name)|generate-id|has-children|head|hours-from-(?:dateTime|duration|time)|id(?:ref)?|implicit-timezone|in-scope-prefixes|index-of|innermost|insert-before|iri-to-uri|json-(?:doc|to-xml)|key|lang|last|load-xquery-module|local-name(?:-from-QName)?|(?:lower|upper)-case|matches|max|minutes-from-(?:dateTime|duration|time)|min|months?-from-(?:date(?:Time)?|duration)|name(?:space-uri-?(?:for-prefix|from-QName)?)?|nilled|node-name|normalize-(?:space|unicode)|not|number|one-or-more|outermost|parse-(?:ietf-date|json)|path|position|(?:prefix-from-)?QName|random-number-generator|regex-group|remove|replace|resolve-(?:QName|uri)|reverse|root|round(?:-half-to-even)?|seconds-from-(?:dateTime|duration|time)|snapshot|sort|starts-with|static-base-uri|stream-available|string-?(?:join|length|to-codepoints)?|subsequence|substring-?(?:after|before)?|sum|system-property|tail|timezone-from-(?:date(?:Time)?|time)|tokenize|trace|trans(?:form|late)|true|type-available|unordered|unparsed-(?:entity|text)?-?(?:public-id|uri|available|lines)?|uri-collection|xml-to-json|years?-from-(?:date(?:Time)?|duration)|zero-or-one)\\b',
),
Mode(begin: r'\blocal:', end: r'\(', excludeEnd: true),
Mode(
begin: r'\bzip:',
end:
r'(?:zip-file|(?:xml|html|text|binary)-entry| (?:update-)?entries)\b',
),
Mode(
begin: r'\b(?:util|db|functx|app|xdmp|xmldb):',
end: r'\(',
excludeEnd: true,
),
],
),
Mode(
scope: r'string',
variants: [
Mode(
begin: r'"',
end: r'"',
contains: [Mode(begin: r'""', relevance: 0)],
),
Mode(
begin: r"'",
end: r"'",
contains: [Mode(begin: r"''", relevance: 0)],
),
],
),
Mode(
scope: r'number',
begin:
r'(\b0[0-7_]+)|(\b0x[0-9a-fA-F_]+)|(\b[1-9][0-9_]*(\.[0-9_]+)?)|[0_]\b',
relevance: 0,
),
Mode(
scope: r'comment',
begin: r'\(:',
end: r':\)',
relevance: 10,
contains: [Mode(scope: r'doctag', begin: r'@\w+')],
),
Mode(scope: r'meta', begin: r'%[\w\-:]+'),
Mode(
scope: r'title',
begin: r'\bxquery version "[13]\.[01]"\s?(?:encoding ".+")?',
end: r';',
),
Mode(
beginKeywords:
r'element attribute comment document processing-instruction',
end: r'\{',
excludeEnd: true,
),
Mode(
begin: '<([\\w._:-]+)(\\s+\\S*=(\'|").*(\'|"))?>',
end: r'(\/[\w._:-]+>)',
subLanguage: r'xml',
contains: [
Mode(begin: r'\{', end: r'\}', subLanguage: r'xquery'),
r'self',
],
),
],
);
}