/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is the Mozilla XTF project. * * The Initial Developer of the Original Code is * Alex Fritze. * Portions created by the Initial Developer are Copyright (C) 2004 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Alex Fritze (original author) * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" interface nsIDOMElement; interface nsIDOMDocument; [scriptable, uuid(e9c4cd4f-cd41-43d0-bf3b-48abb9cde90f)] interface nsIXMLContentBuilder : nsISupports { // (Re-)Initialize this builder. Set 'root' as the new root and // current element. If 'root' is null, the first element built (with // 'beginElement()') will become the new root. Also resets the // element namespace. void clear(in nsIDOMElement root); // Set the document which will be used by 'beginElement()' to create // elements. If null, the builder will create a new XML document // internally. void setDocument(in nsIDOMDocument doc); // Set the namespace for all elements built subsequently void setElementNamespace(in AString ns); // Create an element. The element will become the 'current' element, // i.e. the target for attributes (via 'attrib()') or child content // (via subsequent begin/endElement()-calls), until it is 'closed' // with a call to 'endElement()'. void beginElement(in AString tagname); void endElement(); // Set an attribute on the current element void attrib(in AString name, in AString value); // Create a textNode void textNode(in AString text); readonly attribute nsIDOMElement root; readonly attribute nsIDOMElement current; }; %{C++ // {E09AF32D-2A54-4D76-9EF0-3070E83F8BE7} #define NS_XMLCONTENTBUILDER_CID \ { 0xe09af32d, 0x2a54, 0x4d76, { 0x9e, 0xf0, 0x30, 0x70, 0xe8, 0x3f, 0x8b, 0xe7 } } #define NS_XMLCONTENTBUILDER_CONTRACTID "@mozilla.org/xtf/xml-contentbuilder;1" nsresult NS_NewXMLContentBuilder(nsIXMLContentBuilder** aResult); %}