use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSString in project webtools.sourceediting by eclipse.
the class FnResolveQName method resolve_QName.
/**
* Resolve-QName operation.
*
* @param args
* Result from the expressions evaluation.
* @param sc
* Result of static context operation.
* @throws DynamicError
* Dynamic error.
* @return Result of fn:resolve-QName operation.
*/
public static ResultSequence resolve_QName(Collection args, StaticContext sc) throws DynamicError {
// Collection cargs = Function.convert_arguments(args, expected_args());
Collection cargs = args;
// get args
Iterator argiter = cargs.iterator();
ResultSequence arg1 = (ResultSequence) argiter.next();
if (arg1.empty())
return ResultBuffer.EMPTY;
ResultSequence arg2 = (ResultSequence) argiter.next();
String name = ((XSString) arg1.first()).value();
QName qn = QName.parse_QName(name);
if (qn == null)
throw DynamicError.lexical_error(null);
ElementType xselement = (ElementType) arg2.first();
Element element = (Element) xselement.node_value();
if (qn.prefix() != null) {
String namespaceURI = element.lookupNamespaceURI(qn.prefix());
if (namespaceURI == null) {
throw DynamicError.invalidPrefix();
}
qn.set_namespace(namespaceURI);
} else {
if (qn.local().equals(element.getLocalName()) && element.isDefaultNamespace(element.getNamespaceURI())) {
qn.set_namespace(element.getNamespaceURI());
}
}
return qn;
}
use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSString in project webtools.sourceediting by eclipse.
the class FnCompare method expected_args.
/**
* Calculate the expected arguments.
*
* @return The expected arguments.
*/
public static synchronized Collection expected_args() {
if (_expected_args == null) {
_expected_args = new ArrayList();
SeqType arg = new SeqType(new XSString(), SeqType.OCC_QMARK);
_expected_args.add(arg);
_expected_args.add(arg);
_expected_args.add(new SeqType(new XSString(), SeqType.OCC_NONE));
}
return _expected_args;
}
use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSString in project webtools.sourceediting by eclipse.
the class FnContains method contains.
/**
* Contains operation.
*
* @param args
* Result from the expressions evaluation.
* @throws DynamicError
* Dynamic error.
* @return Result of fn:contains operation.
*/
public static ResultSequence contains(Collection args) throws DynamicError {
Collection cargs = Function.convert_arguments(args, expected_args());
// get args
Iterator argiter = cargs.iterator();
ResultSequence arg1 = (ResultSequence) argiter.next();
String str1 = "";
String str2 = "";
if (!arg1.empty())
str1 = ((XSString) arg1.first()).value();
ResultSequence arg2 = (ResultSequence) argiter.next();
if (!arg2.empty())
str2 = ((XSString) arg2.first()).value();
int str1len = str1.length();
int str2len = str2.length();
if (str2len == 0) {
return XSBoolean.TRUE;
}
if (str1len == 0) {
return XSBoolean.FALSE;
}
return XSBoolean.valueOf(str1.indexOf(str2) != -1);
}
use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSString in project webtools.sourceediting by eclipse.
the class FnCodepointEqual method expected_args.
/**
* Calculate the expected arguments.
*
* @return The expected arguments.
*/
public static synchronized Collection expected_args() {
if (_expected_args == null) {
_expected_args = new ArrayList();
SeqType arg = new SeqType(new XSString(), SeqType.OCC_QMARK);
_expected_args.add(arg);
_expected_args.add(arg);
}
return _expected_args;
}
use of org.eclipse.wst.xml.xpath2.processor.internal.types.XSString in project webtools.sourceediting by eclipse.
the class FnCodepointEqual method codepoint_equals.
/**
* Compare the arguments as codepoints
*
* @param args
* are compared.
* @param dynamicContext
* The current dynamic context
* @throws DynamicError
* Dynamic error.
* @return The result of the comparison of the arguments.
*/
public static ResultSequence codepoint_equals(Collection args, DynamicContext dynamicContext) throws DynamicError {
Collection cargs = Function.convert_arguments(args, expected_args());
ResultBuffer rs = new ResultBuffer();
Iterator argiter = cargs.iterator();
ResultSequence arg1 = (ResultSequence) argiter.next();
XSString xstr1 = arg1.empty() ? null : (XSString) arg1.first();
ResultSequence arg2 = (ResultSequence) argiter.next();
XSString xstr2 = arg2.empty() ? null : (XSString) arg2.first();
// This delegates to FnCompare
BigInteger result = FnCompare.compare_string(CollationProvider.CODEPOINT_COLLATION, xstr1, xstr2, dynamicContext);
if (result != null)
rs.add(new XSBoolean(BigInteger.ZERO.equals(result)));
return rs.getSequence();
}
Aggregations