summaryrefslogtreecommitdiffstats
path: root/dom/xslt/xslt/txXMLEventHandler.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/xslt/xslt/txXMLEventHandler.h')
-rw-r--r--dom/xslt/xslt/txXMLEventHandler.h184
1 files changed, 184 insertions, 0 deletions
diff --git a/dom/xslt/xslt/txXMLEventHandler.h b/dom/xslt/xslt/txXMLEventHandler.h
new file mode 100644
index 0000000000..7e173bdab6
--- /dev/null
+++ b/dom/xslt/xslt/txXMLEventHandler.h
@@ -0,0 +1,184 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef TRANSFRMX_XML_EVENT_HANDLER_H
+#define TRANSFRMX_XML_EVENT_HANDLER_H
+
+#include "txCore.h"
+#include "nsAtom.h"
+
+#define kTXNameSpaceURI u"http://www.mozilla.org/TransforMiix"
+#define kTXWrapper "transformiix:result"
+
+class txOutputFormat;
+namespace mozilla::dom {
+class Document;
+} // namespace mozilla::dom
+
+/**
+ * An interface for handling XML documents, loosely modeled
+ * after Dave Megginson's SAX 1.0 API.
+ */
+
+class txAXMLEventHandler {
+ public:
+ virtual ~txAXMLEventHandler() = default;
+
+ /**
+ * Signals to receive the start of an attribute.
+ *
+ * @param aPrefix the prefix of the attribute
+ * @param aLocalName the localname of the attribute
+ * @param aLowercaseName the localname of the attribute in lower case
+ * @param aNsID the namespace ID of the attribute
+ * @param aValue the value of the attribute
+ */
+ virtual nsresult attribute(nsAtom* aPrefix, nsAtom* aLocalName,
+ nsAtom* aLowercaseLocalName, int32_t aNsID,
+ const nsString& aValue) = 0;
+
+ /**
+ * Signals to receive the start of an attribute.
+ *
+ * @param aPrefix the prefix of the attribute
+ * @param aLocalName the localname of the attribute
+ * @param aNsID the namespace ID of the attribute
+ * @param aValue the value of the attribute
+ */
+ virtual nsresult attribute(nsAtom* aPrefix, const nsAString& aLocalName,
+ const int32_t aNsID, const nsString& aValue) = 0;
+
+ /**
+ * Signals to receive characters.
+ *
+ * @param aData the characters to receive
+ * @param aDOE disable output escaping for these characters
+ */
+ virtual nsresult characters(const nsAString& aData, bool aDOE) = 0;
+
+ /**
+ * Signals to receive data that should be treated as a comment.
+ *
+ * @param data the comment data to receive
+ */
+ virtual nsresult comment(const nsString& aData) = 0;
+
+ /**
+ * Signals the end of a document. It is an error to call
+ * this method more than once.
+ */
+ virtual nsresult endDocument(nsresult aResult) = 0;
+
+ /**
+ * Signals to receive the end of an element.
+ */
+ virtual nsresult endElement() = 0;
+
+ /**
+ * Signals to receive a processing instruction.
+ *
+ * @param aTarget the target of the processing instruction
+ * @param aData the data of the processing instruction
+ */
+ virtual nsresult processingInstruction(const nsString& aTarget,
+ const nsString& aData) = 0;
+
+ /**
+ * Signals the start of a document.
+ */
+ virtual nsresult startDocument() = 0;
+
+ /**
+ * Signals to receive the start of an element.
+ *
+ * @param aPrefix the prefix of the element
+ * @param aLocalName the localname of the element
+ * @param aLowercaseName the localname of the element in lower case
+ * @param aNsID the namespace ID of the element
+ */
+ virtual nsresult startElement(nsAtom* aPrefix, nsAtom* aLocalName,
+ nsAtom* aLowercaseLocalName, int32_t aNsID) = 0;
+
+ /**
+ * Signals to receive the start of an element. Can throw
+ * NS_ERROR_XSLT_BAD_NODE_NAME if the name is invalid
+ *
+ * @param aPrefix the prefix of the element
+ * @param aLocalName the localname of the element
+ * @param aNsID the namespace ID of the element
+ */
+ virtual nsresult startElement(nsAtom* aPrefix, const nsAString& aLocalName,
+ const int32_t aNsID) = 0;
+};
+
+#define TX_DECL_TXAXMLEVENTHANDLER \
+ virtual nsresult attribute(nsAtom* aPrefix, nsAtom* aLocalName, \
+ nsAtom* aLowercaseLocalName, int32_t aNsID, \
+ const nsString& aValue) override; \
+ virtual nsresult attribute(nsAtom* aPrefix, const nsAString& aLocalName, \
+ const int32_t aNsID, const nsString& aValue) \
+ override; \
+ virtual nsresult characters(const nsAString& aData, bool aDOE) override; \
+ virtual nsresult comment(const nsString& aData) override; \
+ virtual nsresult endDocument(nsresult aResult = NS_OK) override; \
+ virtual nsresult endElement() override; \
+ virtual nsresult processingInstruction(const nsString& aTarget, \
+ const nsString& aData) override; \
+ virtual nsresult startDocument() override; \
+ virtual nsresult startElement(nsAtom* aPrefix, nsAtom* aLocalName, \
+ nsAtom* aLowercaseLocalName, int32_t aNsID) \
+ override; \
+ virtual nsresult startElement(nsAtom* aPrefix, const nsAString& aName, \
+ const int32_t aNsID) override;
+
+class txAOutputXMLEventHandler : public txAXMLEventHandler {
+ public:
+ /**
+ * Gets the Mozilla output document
+ *
+ * @param aDocument the Mozilla output document
+ */
+ virtual void getOutputDocument(mozilla::dom::Document** aDocument) = 0;
+};
+
+#define TX_DECL_TXAOUTPUTXMLEVENTHANDLER \
+ virtual void getOutputDocument(mozilla::dom::Document** aDocument) override;
+
+/**
+ * Interface used to create the appropriate outputhandler
+ */
+class txAOutputHandlerFactory {
+ public:
+ virtual ~txAOutputHandlerFactory() = default;
+
+ /**
+ * Creates an outputhandler for the specified format.
+ * @param aFromat format to get handler for
+ * @param aHandler outparam. The created handler
+ */
+ virtual nsresult createHandlerWith(txOutputFormat* aFormat,
+ txAXMLEventHandler** aHandler) = 0;
+
+ /**
+ * Creates an outputhandler for the specified format, with the specified
+ * name and namespace for the root element.
+ * @param aFromat format to get handler for
+ * @param aName name of the root element
+ * @param aNsID namespace-id of the root element
+ * @param aHandler outparam. The created handler
+ */
+ virtual nsresult createHandlerWith(txOutputFormat* aFormat,
+ const nsAString& aName, int32_t aNsID,
+ txAXMLEventHandler** aHandler) = 0;
+};
+
+#define TX_DECL_TXAOUTPUTHANDLERFACTORY \
+ nsresult createHandlerWith(txOutputFormat* aFormat, \
+ txAXMLEventHandler** aHandler) override; \
+ nsresult createHandlerWith(txOutputFormat* aFormat, const nsAString& aName, \
+ int32_t aNsID, txAXMLEventHandler** aHandler) \
+ override;
+
+#endif