16 package org.zorbaxquery.api.xqj;
19 import javax.xml.namespace.QName;
20 import javax.xml.xquery.XQException;
21 import javax.xml.xquery.XQSequenceType;
22 import org.zorbaxquery.api.IdentTypes.Kind;
23 import org.zorbaxquery.api.Item;
24 import org.zorbaxquery.api.TypeIdentifier;
47 private int itemKind = 0;
48 private int baseType = 0;
49 private QName nodeName = null;
50 private QName typeName = null;
51 private URI schemaURI = null;
52 private boolean allowNill =
false;
53 private String piTarget = null;
56 TypeIdentifier result = null;
58 case XQITEMKIND_ATOMIC:
59 result = TypeIdentifier.createEmptyType();
61 case XQITEMKIND_ATTRIBUTE:
62 result = TypeIdentifier.createAttributeType(schemaURI.toString(),
true, nodeName.getLocalPart(),
true, TypeIdentifier.createAnyNodeType());
64 case XQITEMKIND_COMMENT:
65 result = TypeIdentifier.createCommentType();
67 case XQITEMKIND_DOCUMENT:
68 case XQITEMKIND_DOCUMENT_ELEMENT:
69 case XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT:
70 result = TypeIdentifier.createDocumentType();
72 case XQITEMKIND_ELEMENT:
73 result = TypeIdentifier.createElementType(schemaURI.toString(),
true, nodeName.getLocalPart(),
true, TypeIdentifier.createAnyNodeType());
76 result = TypeIdentifier.createItemType();
79 result = TypeIdentifier.createAnyNodeType();
82 result = TypeIdentifier.createPIType();
85 result = TypeIdentifier.createTextType();
87 case XQITEMKIND_SCHEMA_ATTRIBUTE:
88 case XQITEMKIND_SCHEMA_ELEMENT:
90 throw new XQException(
"Item kind is not valid.");
97 switch (typeIdentifier.getKind()) {
98 case Kind.ANY_NODE_TYPE:
99 itemKind = XQITEMKIND_NODE;
101 case Kind.ATTRIBUTE_TYPE:
102 itemKind = XQITEMKIND_ATTRIBUTE;
104 case Kind.COMMENT_TYPE:
105 itemKind = XQITEMKIND_COMMENT;
107 case Kind.DOCUMENT_TYPE:
108 itemKind = XQITEMKIND_DOCUMENT;
110 case Kind.ELEMENT_TYPE:
111 itemKind = XQITEMKIND_ELEMENT;
113 case Kind.EMPTY_TYPE:
114 case Kind.INVALID_TYPE:
116 case Kind.NAMED_TYPE:
117 itemKind = XQITEMKIND_ITEM;
120 itemKind = XQITEMKIND_PI;
123 itemKind = XQITEMKIND_TEXT;
126 itemKind = XQITEMKIND_NODE;
130 String type = typeIdentifier.getLocalName();
131 baseType = ZorbaXQItemType.XQBASETYPE_ANYTYPE;
132 if (type.indexOf(
"anyAtomicType")>=0){
133 baseType = ZorbaXQItemType.XQBASETYPE_ANYATOMICTYPE;
134 }
else if (type.indexOf(
"anySimpleType")>=0){
135 baseType = ZorbaXQItemType.XQBASETYPE_ANYTYPE;
136 }
else if (type.indexOf(
"anyType")>=0){
137 baseType = ZorbaXQItemType.XQBASETYPE_ANYTYPE;
138 }
else if (type.indexOf(
"anyURI")>=0){
139 baseType = ZorbaXQItemType.XQBASETYPE_ANYURI;
140 }
else if (type.indexOf(
"base64Binary")>=0){
141 baseType = ZorbaXQItemType.XQBASETYPE_BASE64BINARY;
142 }
else if (type.indexOf(
"boolean")>=0){
143 baseType = ZorbaXQItemType.XQBASETYPE_BOOLEAN;
144 }
else if (type.indexOf(
"byte")>=0){
145 baseType = ZorbaXQItemType.XQBASETYPE_BYTE;
146 }
else if (type.indexOf(
"dateTime")>=0){
147 baseType = ZorbaXQItemType.XQBASETYPE_DATETIME;
148 }
else if (type.indexOf(
"date")>=0){
149 baseType = ZorbaXQItemType.XQBASETYPE_DATE;
150 }
else if (type.indexOf(
"dayTimeDuration")>=0){
151 baseType = ZorbaXQItemType.XQBASETYPE_DAYTIMEDURATION;
152 }
else if (type.indexOf(
"decimal")>=0){
153 baseType = ZorbaXQItemType.XQBASETYPE_DECIMAL;
154 }
else if (type.indexOf(
"double")>=0){
155 baseType = ZorbaXQItemType.XQBASETYPE_DOUBLE;
156 }
else if (type.indexOf(
"duration")>=0){
157 baseType = ZorbaXQItemType.XQBASETYPE_DURATION;
158 }
else if (type.indexOf(
"ENTITIES")>=0){
159 baseType = ZorbaXQItemType.XQBASETYPE_ENTITIES;
160 }
else if (type.indexOf(
"ENTITY")>=0){
161 baseType = ZorbaXQItemType.XQBASETYPE_ENTITY;
162 }
else if (type.indexOf(
"float")>=0){
163 baseType = ZorbaXQItemType.XQBASETYPE_FLOAT;
164 }
else if (type.indexOf(
"gDay")>=0){
165 baseType = ZorbaXQItemType.XQBASETYPE_GDAY;
166 }
else if (type.indexOf(
"gMonthDay")>=0){
167 baseType = ZorbaXQItemType.XQBASETYPE_GMONTHDAY;
168 }
else if (type.indexOf(
"gMonth")>=0){
169 baseType = ZorbaXQItemType.XQBASETYPE_GMONTH;
170 }
else if (type.indexOf(
"gYear")>=0){
171 baseType = ZorbaXQItemType.XQBASETYPE_GYEAR;
172 }
else if (type.indexOf(
"hexBinary")>=0){
173 baseType = ZorbaXQItemType.XQBASETYPE_HEXBINARY;
174 }
else if (type.indexOf(
"IDREFS")>=0){
175 baseType = ZorbaXQItemType.XQBASETYPE_IDREFS;
176 }
else if (type.indexOf(
"IDREF")>=0){
177 baseType = ZorbaXQItemType.XQBASETYPE_IDREF;
178 }
else if (type.indexOf(
"ID")>=0){
179 baseType = ZorbaXQItemType.XQBASETYPE_ID;
180 }
else if (type.indexOf(
"integer")>=0){
181 baseType = ZorbaXQItemType.XQBASETYPE_INTEGER;
182 }
else if (type.indexOf(
"int")>=0){
183 baseType = ZorbaXQItemType.XQBASETYPE_INT;
184 }
else if (type.indexOf(
"language")>=0){
185 baseType = ZorbaXQItemType.XQBASETYPE_LANGUAGE;
186 }
else if (type.indexOf(
"long")>=0){
187 baseType = ZorbaXQItemType.XQBASETYPE_LONG;
188 }
else if (type.indexOf(
"QName")>=0){
189 baseType = ZorbaXQItemType.XQBASETYPE_QNAME;
190 }
else if (type.indexOf(
"NCName")>=0){
191 baseType = ZorbaXQItemType.XQBASETYPE_NCNAME;
192 }
else if (type.indexOf(
"Name")>=0){
193 baseType = ZorbaXQItemType.XQBASETYPE_NAME;
194 }
else if (type.indexOf(
"negativeInteger")>=0){
195 baseType = ZorbaXQItemType.XQBASETYPE_NEGATIVE_INTEGER;
196 }
else if (type.indexOf(
"NMTOKENS")>=0){
197 baseType = ZorbaXQItemType.XQBASETYPE_NMTOKENS;
198 }
else if (type.indexOf(
"NMTOKEN")>=0){
199 baseType = ZorbaXQItemType.XQBASETYPE_NMTOKEN;
200 }
else if (type.indexOf(
"nonNegativeInteger")>=0){
201 baseType = ZorbaXQItemType.XQBASETYPE_NONNEGATIVE_INTEGER;
202 }
else if (type.indexOf(
"nonPositiveInteger")>=0){
203 baseType = ZorbaXQItemType.XQBASETYPE_NONPOSITIVE_INTEGER;
204 }
else if (type.indexOf(
"normalizedString")>=0){
205 baseType = ZorbaXQItemType.XQBASETYPE_NORMALIZED_STRING;
206 }
else if (type.indexOf(
"NOTATION")>=0){
207 baseType = ZorbaXQItemType.XQBASETYPE_NOTATION;
208 }
else if (type.indexOf(
"positiveInteger")>=0){
209 baseType = ZorbaXQItemType.XQBASETYPE_POSITIVE_INTEGER;
210 }
else if (type.indexOf(
"short")>=0){
211 baseType = ZorbaXQItemType.XQBASETYPE_SHORT;
212 }
else if (type.indexOf(
"string")>=0){
213 baseType = ZorbaXQItemType.XQBASETYPE_STRING;
214 }
else if (type.indexOf(
"time")>=0){
215 baseType = ZorbaXQItemType.XQBASETYPE_TIME;
216 }
else if (type.indexOf(
"token")>=0){
217 baseType = ZorbaXQItemType.XQBASETYPE_TOKEN;
218 }
else if (type.indexOf(
"unsignedByte")>=0){
219 baseType = ZorbaXQItemType.XQBASETYPE_UNSIGNED_BYTE;
220 }
else if (type.indexOf(
"unsignedInt")>=0){
221 baseType = ZorbaXQItemType.XQBASETYPE_UNSIGNED_INT;
222 }
else if (type.indexOf(
"unsignedLong")>=0){
223 baseType = ZorbaXQItemType.XQBASETYPE_UNSIGNED_LONG;
224 }
else if (type.indexOf(
"unsignedShort")>=0){
225 baseType = ZorbaXQItemType.XQBASETYPE_UNSIGNED_SHORT;
226 }
else if (type.indexOf(
"untypedAtomic")>=0){
227 baseType = ZorbaXQItemType.XQBASETYPE_UNTYPEDATOMIC;
228 }
else if (type.indexOf(
"untyped")>=0){
229 baseType = ZorbaXQItemType.XQBASETYPE_UNTYPED;
230 }
else if (type.indexOf(
"yearMonthDuration")>=0){
231 baseType = ZorbaXQItemType.XQBASETYPE_YEARMONTHDURATION;
238 if (zorbaItem.isNode()) {
239 switch (zorbaItem.getNodeKind()) {
241 itemKind = XQITEMKIND_ELEMENT;
244 itemKind = XQITEMKIND_ATTRIBUTE;
247 itemKind = XQITEMKIND_COMMENT;
250 itemKind = XQITEMKIND_DOCUMENT;
253 itemKind = XQITEMKIND_ELEMENT;
256 itemKind = XQITEMKIND_PI;
259 itemKind = XQITEMKIND_TEXT;
262 itemKind = XQITEMKIND_ELEMENT;
266 }
else if (zorbaItem.isAtomic()) {
267 itemKind = XQITEMKIND_ATOMIC;
268 type = zorbaItem.getType().getStringValue();
270 baseType = ZorbaXQItemType.XQBASETYPE_ANYTYPE;
271 if (type.indexOf(
"anyAtomicType")>=0){
272 baseType = ZorbaXQItemType.XQBASETYPE_ANYATOMICTYPE;
273 }
else if (type.indexOf(
"anySimpleType")>=0){
274 baseType = ZorbaXQItemType.XQBASETYPE_ANYTYPE;
275 }
else if (type.indexOf(
"anyType")>=0){
276 baseType = ZorbaXQItemType.XQBASETYPE_ANYTYPE;
277 }
else if (type.indexOf(
"anyURI")>=0){
278 baseType = ZorbaXQItemType.XQBASETYPE_ANYURI;
279 }
else if (type.indexOf(
"base64Binary")>=0){
280 baseType = ZorbaXQItemType.XQBASETYPE_BASE64BINARY;
281 }
else if (type.indexOf(
"boolean")>=0){
282 baseType = ZorbaXQItemType.XQBASETYPE_BOOLEAN;
283 }
else if (type.indexOf(
"byte")>=0){
284 baseType = ZorbaXQItemType.XQBASETYPE_BYTE;
285 }
else if (type.indexOf(
"dateTime")>=0){
286 baseType = ZorbaXQItemType.XQBASETYPE_DATETIME;
287 }
else if (type.indexOf(
"date")>=0){
288 baseType = ZorbaXQItemType.XQBASETYPE_DATE;
289 }
else if (type.indexOf(
"dayTimeDuration")>=0){
290 baseType = ZorbaXQItemType.XQBASETYPE_DAYTIMEDURATION;
291 }
else if (type.indexOf(
"decimal")>=0){
292 baseType = ZorbaXQItemType.XQBASETYPE_DECIMAL;
293 }
else if (type.indexOf(
"double")>=0){
294 baseType = ZorbaXQItemType.XQBASETYPE_DOUBLE;
295 }
else if (type.indexOf(
"duration")>=0){
296 baseType = ZorbaXQItemType.XQBASETYPE_DURATION;
297 }
else if (type.indexOf(
"ENTITIES")>=0){
298 baseType = ZorbaXQItemType.XQBASETYPE_ENTITIES;
299 }
else if (type.indexOf(
"ENTITY")>=0){
300 baseType = ZorbaXQItemType.XQBASETYPE_ENTITY;
301 }
else if (type.indexOf(
"float")>=0){
302 baseType = ZorbaXQItemType.XQBASETYPE_FLOAT;
303 }
else if (type.indexOf(
"gDay")>=0){
304 baseType = ZorbaXQItemType.XQBASETYPE_GDAY;
305 }
else if (type.indexOf(
"gMonthDay")>=0){
306 baseType = ZorbaXQItemType.XQBASETYPE_GMONTHDAY;
307 }
else if (type.indexOf(
"gMonth")>=0){
308 baseType = ZorbaXQItemType.XQBASETYPE_GMONTH;
309 }
else if (type.indexOf(
"gYear")>=0){
310 baseType = ZorbaXQItemType.XQBASETYPE_GYEAR;
311 }
else if (type.indexOf(
"hexBinary")>=0){
312 baseType = ZorbaXQItemType.XQBASETYPE_HEXBINARY;
313 }
else if (type.indexOf(
"IDREFS")>=0){
314 baseType = ZorbaXQItemType.XQBASETYPE_IDREFS;
315 }
else if (type.indexOf(
"IDREF")>=0){
316 baseType = ZorbaXQItemType.XQBASETYPE_IDREF;
317 }
else if (type.indexOf(
"ID")>=0){
318 baseType = ZorbaXQItemType.XQBASETYPE_ID;
319 }
else if (type.indexOf(
"integer")>=0){
320 baseType = ZorbaXQItemType.XQBASETYPE_INTEGER;
321 }
else if (type.indexOf(
"int")>=0){
322 baseType = ZorbaXQItemType.XQBASETYPE_INT;
323 }
else if (type.indexOf(
"language")>=0){
324 baseType = ZorbaXQItemType.XQBASETYPE_LANGUAGE;
325 }
else if (type.indexOf(
"long")>=0){
326 baseType = ZorbaXQItemType.XQBASETYPE_LONG;
327 }
else if (type.indexOf(
"QName")>=0){
328 baseType = ZorbaXQItemType.XQBASETYPE_QNAME;
329 }
else if (type.indexOf(
"NCName")>=0){
330 baseType = ZorbaXQItemType.XQBASETYPE_NCNAME;
331 }
else if (type.indexOf(
"Name")>=0){
332 baseType = ZorbaXQItemType.XQBASETYPE_NAME;
333 }
else if (type.indexOf(
"negativeInteger")>=0){
334 baseType = ZorbaXQItemType.XQBASETYPE_NEGATIVE_INTEGER;
335 }
else if (type.indexOf(
"NMTOKENS")>=0){
336 baseType = ZorbaXQItemType.XQBASETYPE_NMTOKENS;
337 }
else if (type.indexOf(
"NMTOKEN")>=0){
338 baseType = ZorbaXQItemType.XQBASETYPE_NMTOKEN;
339 }
else if (type.indexOf(
"nonNegativeInteger")>=0){
340 baseType = ZorbaXQItemType.XQBASETYPE_NONNEGATIVE_INTEGER;
341 }
else if (type.indexOf(
"nonPositiveInteger")>=0){
342 baseType = ZorbaXQItemType.XQBASETYPE_NONPOSITIVE_INTEGER;
343 }
else if (type.indexOf(
"normalizedString")>=0){
344 baseType = ZorbaXQItemType.XQBASETYPE_NORMALIZED_STRING;
345 }
else if (type.indexOf(
"NOTATION")>=0){
346 baseType = ZorbaXQItemType.XQBASETYPE_NOTATION;
347 }
else if (type.indexOf(
"positiveInteger")>=0){
348 baseType = ZorbaXQItemType.XQBASETYPE_POSITIVE_INTEGER;
349 }
else if (type.indexOf(
"short")>=0){
350 baseType = ZorbaXQItemType.XQBASETYPE_SHORT;
351 }
else if (type.indexOf(
"string")>=0){
352 baseType = ZorbaXQItemType.XQBASETYPE_STRING;
353 }
else if (type.indexOf(
"time")>=0){
354 baseType = ZorbaXQItemType.XQBASETYPE_TIME;
355 }
else if (type.indexOf(
"token")>=0){
356 baseType = ZorbaXQItemType.XQBASETYPE_TOKEN;
357 }
else if (type.indexOf(
"unsignedByte")>=0){
358 baseType = ZorbaXQItemType.XQBASETYPE_UNSIGNED_BYTE;
359 }
else if (type.indexOf(
"unsignedInt")>=0){
360 baseType = ZorbaXQItemType.XQBASETYPE_UNSIGNED_INT;
361 }
else if (type.indexOf(
"unsignedLong")>=0){
362 baseType = ZorbaXQItemType.XQBASETYPE_UNSIGNED_LONG;
363 }
else if (type.indexOf(
"unsignedShort")>=0){
364 baseType = ZorbaXQItemType.XQBASETYPE_UNSIGNED_SHORT;
365 }
else if (type.indexOf(
"untypedAtomic")>=0){
366 baseType = ZorbaXQItemType.XQBASETYPE_UNTYPEDATOMIC;
367 }
else if (type.indexOf(
"untyped")>=0){
368 baseType = ZorbaXQItemType.XQBASETYPE_UNTYPED;
369 }
else if (type.indexOf(
"yearMonthDuration")>=0){
370 baseType = ZorbaXQItemType.XQBASETYPE_YEARMONTHDURATION;
376 this.itemKind = itemkind;
377 this.piTarget = piTarget;
381 this.itemKind = itemkind;
385 this.itemKind = itemkind;
386 this.baseType = basetype;
390 this.itemKind = itemkind;
391 this.nodeName = nodename;
392 this.baseType = basetype;
395 public ZorbaXQItemType(
int itemkind, QName nodename,
int basetype, QName
typename, URI schemaURI,
boolean allowNill)
throws XQException {
396 this.itemKind = itemkind;
397 this.nodeName = nodename;
398 this.baseType = basetype;
399 this.typeName =
typename;
400 this.schemaURI = schemaURI;
401 this.allowNill = allowNill;
403 public ZorbaXQItemType(
int itemkind, QName nodename,
int basetype, URI schemaURI)
throws XQException {
404 this.itemKind = itemkind;
405 this.nodeName = nodename;
406 this.baseType = basetype;
407 this.schemaURI = schemaURI;
412 private void generateTypeName() {
413 String namespaceURI =
"http://www.w3.org/2001/XMLSchema";
414 String localPart =
"untyped";
418 case ZorbaXQItemType.XQBASETYPE_ANYATOMICTYPE:
419 localPart =
"anyAtomicType";
421 case ZorbaXQItemType.XQBASETYPE_ANYSIMPLETYPE:
422 localPart =
"anySimpleType";
424 case ZorbaXQItemType.XQBASETYPE_ANYTYPE:
425 localPart =
"anyType";
427 case ZorbaXQItemType.XQBASETYPE_ANYURI:
428 localPart =
"anyURI";
430 case ZorbaXQItemType.XQBASETYPE_BASE64BINARY:
431 localPart =
"base64Binary";
433 case ZorbaXQItemType.XQBASETYPE_BOOLEAN:
434 localPart =
"boolean";
436 case ZorbaXQItemType.XQBASETYPE_BYTE:
439 case ZorbaXQItemType.XQBASETYPE_DATE:
442 case ZorbaXQItemType.XQBASETYPE_DATETIME:
443 localPart =
"dateTime";
445 case ZorbaXQItemType.XQBASETYPE_DAYTIMEDURATION:
446 localPart =
"dayTimeDuration";
448 case ZorbaXQItemType.XQBASETYPE_DECIMAL:
449 localPart =
"decimal";
451 case ZorbaXQItemType.XQBASETYPE_DOUBLE:
452 localPart =
"double";
454 case ZorbaXQItemType.XQBASETYPE_DURATION:
455 localPart =
"duration";
457 case ZorbaXQItemType.XQBASETYPE_ENTITIES:
458 localPart =
"ENTITIES";
460 case ZorbaXQItemType.XQBASETYPE_ENTITY:
461 localPart =
"ENTITY";
463 case ZorbaXQItemType.XQBASETYPE_FLOAT:
466 case ZorbaXQItemType.XQBASETYPE_GDAY:
469 case ZorbaXQItemType.XQBASETYPE_GMONTH:
470 localPart =
"gMonth";
472 case ZorbaXQItemType.XQBASETYPE_GMONTHDAY:
473 localPart =
"gMonthDay";
475 case ZorbaXQItemType.XQBASETYPE_GYEAR:
478 case ZorbaXQItemType.XQBASETYPE_GYEARMONTH:
479 localPart =
"gYearMonth";
481 case ZorbaXQItemType.XQBASETYPE_HEXBINARY:
482 localPart =
"hexBinary";
484 case ZorbaXQItemType.XQBASETYPE_ID:
487 case ZorbaXQItemType.XQBASETYPE_IDREF:
490 case ZorbaXQItemType.XQBASETYPE_IDREFS:
491 localPart =
"IDREFS";
493 case ZorbaXQItemType.XQBASETYPE_INT:
496 case ZorbaXQItemType.XQBASETYPE_INTEGER:
497 localPart =
"integer";
499 case ZorbaXQItemType.XQBASETYPE_LANGUAGE:
500 localPart =
"language";
502 case ZorbaXQItemType.XQBASETYPE_LONG:
505 case ZorbaXQItemType.XQBASETYPE_NAME:
508 case ZorbaXQItemType.XQBASETYPE_NCNAME:
509 localPart =
"NCName";
511 case ZorbaXQItemType.XQBASETYPE_NEGATIVE_INTEGER:
512 localPart =
"negativeInteger";
514 case ZorbaXQItemType.XQBASETYPE_NMTOKEN:
515 localPart =
"NMTOKEN";
517 case ZorbaXQItemType.XQBASETYPE_NMTOKENS:
518 localPart =
"NMTOKENS";
520 case ZorbaXQItemType.XQBASETYPE_NONNEGATIVE_INTEGER:
521 localPart =
"nonNegativeInteger";
523 case ZorbaXQItemType.XQBASETYPE_NONPOSITIVE_INTEGER:
524 localPart =
"nonPositiveInteger";
526 case ZorbaXQItemType.XQBASETYPE_NORMALIZED_STRING:
527 localPart =
"normalizedString";
529 case ZorbaXQItemType.XQBASETYPE_NOTATION:
530 localPart =
"NOTATION";
532 case ZorbaXQItemType.XQBASETYPE_POSITIVE_INTEGER:
533 localPart =
"positiveInteger";
535 case ZorbaXQItemType.XQBASETYPE_QNAME:
538 case ZorbaXQItemType.XQBASETYPE_SHORT:
541 case ZorbaXQItemType.XQBASETYPE_STRING:
542 localPart =
"string";
544 case ZorbaXQItemType.XQBASETYPE_TIME:
547 case ZorbaXQItemType.XQBASETYPE_TOKEN:
550 case ZorbaXQItemType.XQBASETYPE_UNSIGNED_BYTE:
551 localPart =
"unsignedByte";
553 case ZorbaXQItemType.XQBASETYPE_UNSIGNED_INT:
554 localPart =
"unsignedInt";
556 case ZorbaXQItemType.XQBASETYPE_UNSIGNED_LONG:
557 localPart =
"unsignedLong";
559 case ZorbaXQItemType.XQBASETYPE_UNSIGNED_SHORT:
560 localPart =
"unsignedShort";
562 case ZorbaXQItemType.XQBASETYPE_UNTYPED:
563 localPart =
"untyped";
565 case ZorbaXQItemType.XQBASETYPE_UNTYPEDATOMIC:
566 localPart =
"untypedAtomic";
568 case ZorbaXQItemType.XQBASETYPE_YEARMONTHDURATION:
569 localPart =
"yearMonthDuration";
572 localPart =
"untyped";
575 typeName =
new QName(namespaceURI, localPart, prefix);
596 throw new XQException(
"Item kind is not valid for a Base Type.");
620 return XQSequenceType.OCC_EXACTLY_ONE;
638 throw new XQException(
"Item kind is not valid for a Type Name.");
670 throw new XQException(
"Item kind is not valid for a Type Name.");
681 return (itemKind==0);
703 throw new XQException(
"Item kind is not a PI.");
736 boolean result =
false;
737 boolean supportBaseType =
false;
738 boolean supportNodeName =
false;
739 boolean supportTypeName =
false;
740 boolean supportPIName =
false;
748 }
catch (Exception e) {
749 supportBaseType =
true;
753 }
catch (Exception e) {
754 supportNodeName =
true;
758 }
catch (Exception e) {
759 supportTypeName =
true;
763 }
catch (Exception e) {
764 supportPIName =
true;
768 result = supportBaseType && supportNodeName && supportTypeName && supportPIName;
798 hashCode = this.getItemKind();
800 hashCode = 31*hashCode + this.getSchemaURI().
hashCode();
803 int basetype = this.getBaseType();
804 hashCode = 31*hashCode + basetype;
805 }
catch (Exception e) {}
807 QName nodename = this.getNodeName();
808 if (nodename!=null) {
809 hashCode = 31*hashCode + nodename.hashCode();
811 }
catch (Exception e) {}
813 QName
typename = this.getTypeName();
814 hashCode = 31*hashCode + typename.hashCode();
815 }
catch(Exception e) {}
817 String piname = this.getPIName();
818 if (piname != null) {
819 hashCode = 31*hashCode + piname.hashCode();
821 }
catch (Exception e) {}
831 StringBuffer result =
new StringBuffer();
834 for (java.lang.reflect.Field field:
ZorbaXQItemType.class.getFields()) {
835 if (field.getName().startsWith(
"XQITEMKIND_")) {
836 if (field.getInt(
this)==itemKind) {
837 result.append(
"Item Kind: ").append(field.getName().substring(11));
840 if (field.getName().startsWith(
"XQBASETYPE_")) {
841 if (field.getInt(
this)==baseType) {
842 result.append(
" Base Type: ").append(field.getName().substring(11));
846 }
catch (Exception e){
847 result.append(
"Item Kind or Base Type error: ").append(e.getLocalizedMessage());
850 return result.toString();
ZorbaXQItemType(TypeIdentifier typeIdentifier)
ZorbaXQItemType(int itemkind, QName nodename, int basetype)
ZorbaXQItemType(int itemkind, QName nodename, int basetype, URI schemaURI)
ZorbaXQItemType(int itemkind)
String getPIName()
Returns the name of the processing instruction type.
static final int ZORBA_XQITEMKIND_DOCUMENT
static final int ZORBA_XQITEMKIND_ANY
ZorbaXQItemType(int itemkind, String piTarget)
ZorbaXQItemType(Item zorbaItem)
int hashCode()
Returns a hash code consistent with the definition of the equals method.
The ZorbaXQItemType class represents an item type as defined in XQuery 1.0: An XML Query language...
static final int ZORBA_XQITEMKIND_ATTRIBUTE
String toString()
Returns a human-readable implementation-defined string representation of the item type...
ZorbaXQItemType getItemType()
Returns the type of the item in the sequence type.
TypeIdentifier getTypeIdentifier()
int getBaseType()
Returns the base type of the item.
static final int ZORBA_XQITEMKIND_PI
int getItemKind()
Returns the kind of the item.
static final int ZORBA_XQITEMKIND_ELEMENT
boolean isElementNillable()
Returns whether the element type is nillable or not.
URI getSchemaURI()
Returns the schema location URI of the schema that contains the item's element or type definition...
static final int ZORBA_XQITEMKIND_COMMENT
boolean isAnonymousType()
Represents whether the item type is an anonymous type in the schema.
ZorbaXQItemType(int itemkind, int basetype)
ZorbaXQItemType(int itemkind, QName nodename, int basetype, QName typename, URI schemaURI, boolean allowNill)
QName getNodeName()
Returns the name of the node.
boolean equals(Object o)
Compares the specified object with this item type for equality.
QName getTypeName()
Represents a type name (global or local).
static final int ZORBA_XQITEMKIND_TEXT
int getItemOccurrence()
Returns the occurrence indicator for the item type.