case ATTRIBUTE_TEST: {
AttributeTestNode at = (AttributeTestNode) itemType;
if (at.getNameTest() == null) {
return AttributeType.ANYATTRIBUTE;
}
NameTestNode ntNode = at.getNameTest();
NameTest nt = NameTest.STAR_NAMETEST;
if (ntNode.getPrefix() == null && ntNode.getLocalName() == null) {
if (at.getTypeName() == null) {
return AttributeType.ANYATTRIBUTE;
}
} else {
String uri;
if (!"".equals(ntNode.getPrefix())) {
uri = currCtx.lookupNamespaceUri(ntNode.getPrefix());
if (uri == null) {
throw new SystemException(ErrorCode.XPST0081, ntNode.getSourceLocation());
}
} else {
uri = "";
}
nt = new NameTest(createUTF8String(uri), createUTF8String(ntNode.getLocalName()));
}
SchemaType cType = BuiltinTypeRegistry.XS_ANY_ATOMIC;
if (at.getTypeName() != null) {
cType = moduleCtx.lookupSchemaType(createQName(at.getTypeName()));
if (cType == null) {
throw new SystemException(ErrorCode.XPST0051, at.getSourceLocation());
}
}
return new AttributeType(nt, cType);
}
case SCHEMA_ATTRIBUTE_TEST: {
throw new UnsupportedOperationException("schema-attribute(...) is not supported");
}
case ELEMENT_TEST: {
ElementTestNode et = (ElementTestNode) itemType;
if (et.getNameTest() == null) {
return ElementType.ANYELEMENT;
}
NameTestNode ntNode = et.getNameTest();
NameTest nt = NameTest.STAR_NAMETEST;
if (ntNode.getPrefix() == null && ntNode.getLocalName() == null) {
if (et.getTypeName() == null) {
return ElementType.ANYELEMENT;
}
} else {
String uri;
if (!"".equals(ntNode.getPrefix())) {
uri = currCtx.lookupNamespaceUri(ntNode.getPrefix());
if (uri == null) {
throw new SystemException(ErrorCode.XPST0081, ntNode.getSourceLocation());
}
} else {
uri = "";
}
nt = new NameTest(createUTF8String(uri), createUTF8String(ntNode.getLocalName()));
}
SchemaType cType = AnyType.INSTANCE;
if (et.getTypeName() != null) {
cType = moduleCtx.lookupSchemaType(createQName(et.getTypeName()));
if (cType == null) {