@Override public Expression typeCheck(ExpressionVisitor visitor, ContextItemStaticInfo contextInfo) throws XPathException { Expression e2 = super.typeCheck(visitor, contextInfo); if (e2 != this) { return e2; } TypeHierarchy th = visitor.getConfiguration().getTypeHierarchy(); Expression base = getBaseExpression(); if (th.relationship(base.getItemType(), BuiltInAtomicType.UNTYPED_ATOMIC) == TypeHierarchy.DISJOINT || base.hasSpecialProperty(StaticProperty.NOT_UNTYPED_ATOMIC)) { // operand cannot return untyped atomic values, so there's nothing to convert return getBaseExpression(); } return this; }
@Override public Expression typeCheck(ExpressionVisitor visitor, ContextItemStaticInfo contextInfo) throws XPathException { Expression e2 = super.typeCheck(visitor, contextInfo); if (e2 != this) { return e2; } TypeHierarchy th = visitor.getConfiguration().getTypeHierarchy(); Expression base = getBaseExpression(); if (th.relationship(base.getItemType(), BuiltInAtomicType.UNTYPED_ATOMIC) == TypeHierarchy.DISJOINT || base.hasSpecialProperty(StaticProperty.NOT_UNTYPED_ATOMIC)) { // operand cannot return untyped atomic values, so there's nothing to convert return getBaseExpression(); } return this; }
requiredItemType ); return asc2.typeCheck(visitor, contextInfo) .optimize(visitor, contextInfo);
requiredItemType ); return asc2.typeCheck(visitor, contextInfo) .optimize(visitor, contextInfo);
BuiltInAtomicType.UNTYPED_ATOMIC ); return asc.typeCheck(visitor, contextInfo) .optimize(visitor, contextInfo);
BuiltInAtomicType.UNTYPED_ATOMIC ); return asc.typeCheck(visitor, contextInfo) .optimize(visitor, contextInfo);