virtual bool doEvaluate(const DOM::Node<std::string>& context, const Arabica::XPath::ExecutionContext<std::string>& executionContext) const { const std::string functionName = baseT::argAsString(0, context, executionContext); const XML::QualifiedName<std::string> expandedName = XML::QualifiedName<std::string>::parseQName(functionName, true, namespaces_); if((expandedName.namespaceUri() != StylesheetConstant::NamespaceURI()) && (!expandedName.namespaceUri().empty())) return false; static const char* XSLTNames[] = { "apply-imports", "apply-templates", "attributes", "call-template", "choose", "comment", "copy", "copy-of", "element", "fallback", "for-each", "if", "message", "number", "processing-instruction", "text", "value-of", "variable", 0 }; for(int i = 0; XSLTNames[i] != 0; ++i) if(expandedName.localName() == XSLTNames[i]) return true; return false; } // doEvaluate
virtual bool doEvaluate(const DOM::Node<std::string>& context, const Arabica::XPath::ExecutionContext<std::string>& executionContext) const { const std::string functionName = baseT::argAsString(0, context, executionContext); const XML::QualifiedName<std::string> expandedName = XML::QualifiedName<std::string>::parseQName(functionName, true, namespaces_); const std::pair<std::string, std::string> name_to_check = std::make_pair(expandedName.namespaceUri(), expandedName.localName()); return (std::find(functionNames_.begin(), functionNames_.end(), name_to_check) != functionNames_.end()); } // doEvaluate
static QName create(const XML::QualifiedName<std::string>& qName) { if(qName.prefix().length() && qName.namespaceUri().empty()) throw SAX::SAXException("Prefix " + qName.prefix() + " is not declared."); return QName(qName.prefix(), qName.localName(), qName.namespaceUri()); } // create