1 #######################
2 # Standard namespaces #
3 #######################
5 namespace xsd = "http://www.w3c.org/xsd"
6 namespace xs = "http://www.w3c.org/xs"
7 namespace xml = "http://www.w3.org/xml"
9 #############################
10 # XML Schema wildcard types #
11 #############################
13 define type xs:AnyNumeric { xsd:decimal | xsd:integer | xsd:int | xsd:double | xsd:float }
15 define type xs:AnyScalar { xsd:boolean |
18 xsd:UnknownSimpleType }
20 define type xs:AnySimpleType { type xs:AnyScalar* }
21 define type xs:AnyAttribute { attribute * { type xs:AnySimpleType } }
22 define type xs:AnyElement { element * { type xs:AnyContentModel } }
23 define type xs:AnyContentModel { (type xs:AnyAttribute*, (type xs:AnySimpleType | (type xs:AnyElement |
25 define type xs:AnyDocument { document { type xs:AnyElement } }
27 #########################
28 # XQuery Wildcard types #
29 #########################
30 define type xs:AnyNode { type xs:AnyElement | type xs:AnyAttribute | text }
32 define type xs:AnyItem { type xs:AnyNode | type xs:AnyScalar }
33 define type xs:AnyType { type xs:AnyItem* }
36 ######################
37 # Standard functions #
38 ######################
40 # data-model accessors.
43 define function signature local-name(type xs:AnyNode) returns (xsd:string)
44 define function signature name(type xs:AnyNode) returns (xsd:string?)
45 define function signature children(type xs:AnyNode) returns (type xs:AnyNode*)
46 define function signature attributes(type xs:AnyElement) returns (type xs:AnyAttribute*)
47 define function signature parent(type xs:AnyNode) returns (type xs:AnyElement?)
48 define function signature data(type xs:AnyNode) returns (type xs:AnySimpleType)
50 # F&O doc. Section 3.2
51 define function signature decimal(xsd:string) returns (xsd:int)
52 define function signature integer(xsd:string) returns (xsd:int)
53 define function signature long(xsd:string) returns (xsd:int)
54 define function signature int(xsd:string) returns (xsd:int)
55 define function signature short(xsd:string) returns (xsd:int)
56 define function signature byte(xsd:string) returns (xsd:int)
57 define function signature float(xsd:string) returns (xsd:double)
58 define function signature double(xsd:string) returns (xsd:double)
60 # polymorphic arithmetic operations #
61 # F&O doc, Section 3.3
63 define function signature numeric-add(numeric, numeric) returns (numeric)
64 define function signature numeric-subtract(numeric, numeric) returns (numeric)
65 define function signature numeric-multiply(numeric, numeric) returns (numeric)
66 define function signature numeric-divide(numeric, numeric) returns (numeric)
67 define function signature numeric-mod(numeric, numeric) returns (numeric)
69 define function signature numeric-unary-plus(numeric) returns (numeric)
70 define function signature numeric-unary-minus(numeric) returns (numeric)
72 # Galax's monomorphic arithmetic operations #
75 define function signature int-add(xsd:int, xsd:int) returns (xsd:int)
76 define function signature int-subtract(xsd:int, xsd:int) returns (xsd:int)
77 define function signature int-multiply(xsd:int, xsd:int) returns (xsd:int)
78 define function signature int-divide(xsd:int, xsd:int) returns (xsd:int)
79 define function signature int-mod(xsd:int, xsd:int) returns (xsd:int)
81 define function signature int-unary-plus(xsd:int) returns (xsd:int)
82 define function signature int-unary-minus(xsd:int) returns (xsd:int)
85 define function signature decimal-add(xsd:decimal, xsd:decimal) returns (xsd:decimal)
86 define function signature decimal-subtract(xsd:decimal, xsd:decimal) returns (xsd:decimal)
87 define function signature decimal-multiply(xsd:decimal, xsd:decimal) returns (xsd:decimal)
88 define function signature decimal-divide(xsd:decimal, xsd:decimal) returns (xsd:decimal)
89 define function signature decimal-mod(xsd:decimal, xsd:decimal) returns (xsd:decimal)
91 define function signature decimal-unary-plus(xsd:decimal) returns (xsd:decimal)
92 define function signature decimal-unary-minus(xsd:decimal) returns (xsd:decimal)
95 define function signature float-add(xsd:float, xsd:float) returns (xsd:float)
96 define function signature float-subtract(xsd:float, xsd:float) returns (xsd:float)
97 define function signature float-multiply(xsd:float, xsd:float) returns (xsd:float)
98 define function signature float-divide(xsd:float, xsd:float) returns (xsd:float)
99 define function signature float-mod(xsd:float, xsd:float) returns (xsd:float)
101 define function signature float-unary-plus(xsd:float) returns (xsd:float)
102 define function signature float-unary-minus(xsd:float) returns (xsd:float)
105 define function signature double-add(xsd:double, xsd:double) returns (xsd:double)
106 define function signature double-subtract(xsd:double, xsd:double) returns (xsd:double)
107 define function signature double-multiply(xsd:double, xsd:double) returns (xsd:double)
108 define function signature double-divide(xsd:double, xsd:double) returns (xsd:double)
109 define function signature double-mod(xsd:double, xsd:double) returns (xsd:double)
111 define function signature double-unary-plus(xsd:double) returns (xsd:double)
112 define function signature double-unary-minus(xsd:double) returns (xsd:double)
115 # F&O doc, Section 3.4
116 define function signature nodeeq(type xs:AnyNode, type xs:AnyNode) returns (xsd:boolean)
117 define function signature equal(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean)
118 define function signature nequal(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean)
119 define function signature ge(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean)
120 define function signature le(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean)
121 define function signature gt(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean)
122 define function signature lt(type xs:AnyScalar, type xs:AnyScalar) returns (xsd:boolean)
124 # F&O doc. Section 3.5
125 define function signature floor(xsd:double) returns (xsd:int)
126 define function signature ceiling(xsd:double) returns (xsd:int)
127 define function signature round(xsd:double) returns (xsd:int)
129 # functions on strings
130 # F&O doc. Section 4.4
131 define function signature concat(xsd:string, xsd:string) returns (xsd:string)
132 define function signature starts-with(xsd:string, xsd:string) returns (xsd:boolean)
133 define function signature ends-with(xsd:string, xsd:string) returns (xsd:boolean)
134 define function signature contains(xsd:string, xsd:string) returns (xsd:boolean)
135 define function signature substring(xsd:string, xsd:int, xsd:int) returns (xsd:string)
136 define function signature string-length(xsd:string) returns (xsd:int)
137 define function signature substring-before(xsd:string, xsd:string) returns (xsd:string)
138 define function signature substring-after(xsd:string, xsd:string) returns (xsd:string)
139 define function signature normalize-space(xsd:string) returns (xsd:string)
140 define function signature normalize-unicode(xsd:string) returns (xsd:string)
141 define function signature upper-case(xsd:string) returns (xsd:string)
142 define function signature lower-case(xsd:string) returns (xsd:string)
143 define function signature translate(xsd:string, xsd:string, xsd:string) returns (xsd:string)
144 define function signature string-pad(xsd:string, xsd:int, xsd:string) returns (xsd:string)
145 define function signature match(xsd:string, xsd:string) returns (xsd:int*)
146 define function signature replace(xsd:string, xsd:string, xsd:string) returns (xsd:string)
148 define function signature codepoint-contains(xsd:string, xsd:string) returns (xsd:boolean)
149 define function signature codepoint-substring-before(xsd:string, xsd:string) returns (xsd:string)
150 define function signature codepoint-substring-after(xsd:string, xsd:string) returns (xsd:string)
152 # boolean operations #
153 # F&O doc, Section 6.1
154 define function signature true() returns (xsd:boolean)
155 define function signature false() returns (xsd:boolean)
157 # F&O doc, Section 6.2
158 define function signature or(xsd:boolean, xsd:boolean) returns (xsd:boolean)
159 define function signature and(xsd:boolean, xsd:boolean) returns (xsd:boolean)
160 define function signature not(xsd:boolean) returns (xsd:boolean)
162 # functions on sequences #
163 # F&O doc, Section 13.2
164 define function signature index-of(type xs:AnyNode*, type xs:AnyNode) returns (xsd:int)
165 define function signature length(type xs:AnyType) returns (xsd:int)
166 define function signature empty(type xs:AnyType) returns (xsd:boolean)
167 define function signature distinct-values(type xs:AnyType) returns (type xs:AnyType)
169 # aggregate functions #
170 # F&O doc, Section 13.4
171 define function signature avg-int(xsd:int*) returns (xsd:int)
172 define function signature max-int(xsd:int*) returns (xsd:int?)
173 define function signature min-int(xsd:int*) returns (xsd:int?)
174 define function signature sum-int(xsd:int*) returns (xsd:int)
176 define function signature avg-float(xsd:double*) returns (xsd:double)
177 define function signature max-float(xsd:double*) returns (xsd:double?)
178 define function signature min-float(xsd:double*) returns (xsd:double?)
179 define function signature sum-float(xsd:double*) returns (xsd:double)
181 define function signature count(type xs:AnyType) returns (xsd:int)
183 # input-output operations #
185 # The signature below is a hack : The output of document is declared
186 # as the empty choice to avoid the need for explicit cast by the user
187 # when loading the document - JS #
189 # F&O doc, Section 13.5
190 define function signature document(xsd:string) returns (type xs:AnyDocument)
191 define function signature document-validate(xsd:string, xsd:string) returns (type xs:AnyDocument)