Item PrefixFromQNameFN::evaluateSingleton(const DynamicContext::Ptr &context) const { const QNameValue::Ptr arg(m_operands.first()->evaluateSingleton(context).as<QNameValue>()); if(!arg) return Item(); const QString prefix(context->namePool()->stringForPrefix(arg->qName().prefix())); if(prefix.isEmpty()) return Item(); else return AtomicString::fromValue(context->namePool()->stringForPrefix(arg->qName().prefix())); }
Item ErrorFN::evaluateSingleton(const DynamicContext::Ptr &context) const { QString msg; switch(m_operands.count()) { case 0: /* No args. */ { context->error(QtXmlPatterns::tr("%1 was called.").arg(formatFunction(context->namePool(), signature())), ReportContext::FOER0000, this); return Item(); } case 3: /* Fallthrough, we don't use the 'error object' param. */ case 2: msg = m_operands.at(1)->evaluateSingleton(context).stringValue(); /* Fall through. */ case 1: { const QNameValue::Ptr qName(m_operands.first()->evaluateSingleton(context).as<QNameValue>()); if(qName) context->error(msg, qName->qName(), this); else context->error(msg, ReportContext::FOER0000, this); return Item(); } default: { Q_ASSERT_X(false, Q_FUNC_INFO, "Invalid number of arguments passed to fn:error."); return Item(); } } }
Item NamespaceURIFromQNameFN::evaluateSingleton(const DynamicContext::Ptr &context) const { const QNameValue::Ptr arg(m_operands.first()->evaluateSingleton(context).as<QNameValue>()); return arg ? toItem(AnyURI::fromValue(context->namePool()->stringForNamespace(arg->qName().namespaceURI()))) : Item(); }
Item LocalNameFromQNameFN::evaluateSingleton(const DynamicContext::Ptr &context) const { const QNameValue::Ptr arg(m_operands.first()->evaluateSingleton(context).as<QNameValue>()); return arg ? toItem(AtomicString::fromValue(context->namePool()->stringForLocalName(arg->qName().localName()))) : Item(); }