#include "../config/pathan_config.h" /* * Copyright (c) 2001, DecisionSoft Limited All rights reserved. * Please see LICENSE.TXT for more information. */ #include #include #include #include #include #include #include #include #include #include #include #include const XMLCh FunctionCollection::name[] = { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; /** * fn:collection($arg as xs:string?) as node()* **/ FunctionCollection::FunctionCollection(const VectorOfDataItems &args, XPath2MemoryManager* memMgr) : DataItemFunction(name,1, 1, "string?", args, memMgr) { } DataItem* FunctionCollection::staticResolution(StaticContext *context, StaticResolutionContext *src) { src->availableCollectionsUsed(true); return resolveDataItems(_args, context, src, false); } Sequence FunctionCollection::collapseTreeInternal(DynamicContext* context, int flags) const { //args 0 - URI to resolve Sequence arg = getParamNumber(1, context); if(arg.isEmpty()) return Sequence(context->getMemoryManager()); const XMLCh* currentUri = ((const ATStringOrDerived*)arg.first())->asString(context); try { DatatypeFactory::STR2AT::createAnyURI(context->getMemoryManager(), currentUri, context); } catch(XPath2ErrorException &e) { DSLthrow(FunctionException, X("FunctionCollection::collapseTreeInternal"), X("Invalid URI format")); } return context->resolveCollection(currentUri); }