Item CommentConstructor::evaluateSingleton(const DynamicContext::Ptr &context) const { const QString content(evaluateContent(context)); const NodeBuilder::Ptr nodeBuilder(context->nodeBuilder(QUrl())); nodeBuilder->comment(content); const QAbstractXmlNodeModel::Ptr nm(nodeBuilder->builtDocument()); context->addNodeModel(nm); return nm->root(QXmlNodeModelIndex()); }
Item ProcessingInstructionConstructor::evaluateSingleton(const DynamicContext::Ptr &context) const { const NodeBuilder::Ptr nodeBuilder(context->nodeBuilder(QUrl())); nodeBuilder->processingInstruction(evaluateTardata(context), data(context)); const QAbstractXmlNodeModel::Ptr nm(nodeBuilder->builtDocument()); context->addNodeModel(nm); return nm->root(QXmlNodeModelIndex()); }
Item AttributeConstructor::evaluateSingleton(const DynamicContext::Ptr &context) const { const Item nameItem(m_operand1->evaluateSingleton(context)); const Item content(m_operand2->evaluateSingleton(context)); const QXmlName name(nameItem.as<QNameValue>()->qName()); const QString value(processValue(name, content ? content.stringValue() : QString())); const NodeBuilder::Ptr nodeBuilder(context->nodeBuilder(QUrl())); nodeBuilder->attribute(name, QStringRef(&value)); const QAbstractXmlNodeModel::Ptr nm(nodeBuilder->builtDocument()); context->addNodeModel(nm); return nm->root(QXmlNodeModelIndex()); }
Item TextNodeConstructor::evaluateSingleton(const DynamicContext::Ptr &context) const { const Item chars(m_operand->evaluateSingleton(context)); if(!chars) return Item(); const NodeBuilder::Ptr nodeBuilder(context->nodeBuilder(QUrl())); const QString &v = chars.stringValue(); nodeBuilder->characters(QStringRef(&v)); const QAbstractXmlNodeModel::Ptr nm(nodeBuilder->builtDocument()); context->addNodeModel(nm); return nm->root(QXmlNodeModelIndex()); }
Item ElementConstructor::evaluateSingleton(const DynamicContext::Ptr &context) const { const Item name(m_operand1->evaluateSingleton(context)); const NodeBuilder::Ptr nodeBuilder(context->nodeBuilder(m_staticBaseURI)); OutputValidator validator(nodeBuilder.data(), context, this, m_isXSLT); const DynamicContext::Ptr receiverContext(context->createReceiverContext(&validator)); nodeBuilder->startElement(name.as<QNameValue>()->qName()); m_operand2->evaluateToSequenceReceiver(receiverContext); nodeBuilder->endElement(); const QAbstractXmlNodeModel::Ptr nm(nodeBuilder->builtDocument()); context->addNodeModel(nm); return nm->root(QXmlNodeModelIndex()); }