diff --git a/src/xmlpatterns/projection/qdocumentprojector.cpp b/src/xmlpatterns/projection/qdocumentprojector.cpp
index 390329b1808b771f5a81390c193a813d187f82e6..fe768384a1509be011ce3d794558e3544e10f53b 100644
--- a/src/xmlpatterns/projection/qdocumentprojector.cpp
+++ b/src/xmlpatterns/projection/qdocumentprojector.cpp
@@ -58,7 +58,7 @@ DocumentProjector::DocumentProjector(const ProjectedExpression::Vector &paths,
     Q_ASSERT(m_receiver);
 }
 
-void DocumentProjector::startElement(const QXmlName name)
+void DocumentProjector::startElement(const QXmlName &name)
 {
     Q_UNUSED(name);
 
@@ -165,14 +165,14 @@ void DocumentProjector::endElement()
     }
 }
 
-void DocumentProjector::attribute(const QXmlName name,
-                                  const QString &value)
+void DocumentProjector::attribute(const QXmlName &name,
+                                  const QStringRef &value)
 {
     Q_UNUSED(name);
     Q_UNUSED(value);
 }
 
-void DocumentProjector::namespaceBinding(const QXmlName nb)
+void DocumentProjector::namespaceBinding(const QXmlName &nb)
 {
     Q_UNUSED(nb);
 }
@@ -184,12 +184,12 @@ void DocumentProjector::comment(const QString &value)
     Q_UNUSED(value);
 }
 
-void DocumentProjector::characters(const QString &value)
+void DocumentProjector::characters(const QStringRef &value)
 {
     Q_UNUSED(value);
 }
 
-void DocumentProjector::processingInstruction(const QXmlName name,
+void DocumentProjector::processingInstruction(const QXmlName &name,
                                               const QString &value)
 {
     Q_ASSERT_X(!value.contains(QLatin1String("?>")), Q_FUNC_INFO,
diff --git a/src/xmlpatterns/projection/qdocumentprojector_p.h b/src/xmlpatterns/projection/qdocumentprojector_p.h
index b15a69949b3f54bcfef63d8a86d04dafa484dbf4..2a5d411dce05674d78c843ca99e979209f9bc9d7 100644
--- a/src/xmlpatterns/projection/qdocumentprojector_p.h
+++ b/src/xmlpatterns/projection/qdocumentprojector_p.h
@@ -72,19 +72,19 @@ namespace QPatternist
         DocumentProjector(const ProjectedExpression::Vector &paths,
                           QAbstractXmlReceiver *const receiver);
 
-        virtual void namespaceBinding(const QXmlName nb);
+        virtual void namespaceBinding(const QXmlName &nb);
 
-        virtual void characters(const QString &value);
+        virtual void characters(const QStringRef &value);
         virtual void comment(const QString &value);
 
-        virtual void startElement(const QXmlName name);
+        virtual void startElement(const QXmlName &name);
 
         virtual void endElement();
 
-        virtual void attribute(const QXmlName name,
-                               const QString &value);
+        virtual void attribute(const QXmlName &name,
+                               const QStringRef &value);
 
-        virtual void processingInstruction(const QXmlName name,
+        virtual void processingInstruction(const QXmlName &name,
                                            const QString &value);
 
         virtual void item(const Item &item);