00001 /***************************************************************************** 00002 * Copyright (C) 2011 by Benjamin Hadorn (b_hadorn@bluewin.ch) 00003 ***************************************************************************** 00004 * Project : Zeus Base Library 00005 * Module : IXSDDocument 00006 * Package : Zeus.ZeusBase.System.Interfaces 00007 * Author : Abbuehl Martin 00008 * Date : 27.12.2011 00009 * System : Zeus-Framework 00010 ***************************************************************************** 00011 * Licence: * 00012 * This library is free software; you can redistribute it and/or modify * 00013 * it under the terms of the GNU Lesser General Public License as * 00014 * published by the Free Software Foundation; either version * 00015 * 2.1 of the License, or (at your option) any later version. * 00016 * * 00017 * This library is distributed in the hope that it will be useful, * 00018 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00020 * GNU Lesser General Public License for more details. * 00021 * * 00022 * You should have received a copy of the GNU Lesser General Public * 00023 * License along with this library; if not, write to the Free Software * 00024 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA * 00025 *****************************************************************************/ 00026 00027 /***************************************************************************** 00028 * Changes: 00029 * 27.12.2011 bha: created zeus 2.0 00030 *****************************************************************************/ 00031 00032 #ifndef IXSDDocumentHPP 00033 #define IXSDDocumentHPP 00034 00035 #include <zeusbase/System/Interfaces/IXMLDocument.hpp> 00036 #include <zeusbase/System/Interfaces/IXSDNodes.hpp> 00037 #include <zeusbase/System/Interfaces/IXSDNode.hpp> 00038 00039 00040 // {C0CA9961-70B4-4b7a-BE10-D3143773F2C5} 00041 #define INTERFACE_IXSDDocument TIID(0xc0ca9961, 0x70b4, 0x4b7a, 0xbe, 0x10, 0xd3, 0x14, 0x37, 0x73, 0xf2, 0xc5) 00042 00043 00044 BEGIN_NAMESPACE_Zeus 00045 00046 00047 /***************************************************************************/ 00051 /***************************************************************************/ 00052 class IXSDDocument : public IXMLDocument 00053 { 00054 public: 00055 /**************************************************************************/ 00062 /**************************************************************************/ 00063 virtual Retval MQUALIFIER saveContainerDocument(const IString& strFileName) const = 0; 00064 00065 /**************************************************************************/ 00074 /**************************************************************************/ 00075 virtual Retval MQUALIFIER getNamedNode(const IString& strXSDQualifier, 00076 const IString& strName, 00077 IXSDNode*& rpNode) = 0; 00078 00079 /**************************************************************************/ 00087 /**************************************************************************/ 00088 virtual Retval MQUALIFIER getSpecificNodes(const IString& strXSDQualifier, 00089 IXSDNodes*& rpNodes) = 0; 00090 00091 /**************************************************************************/ 00099 /**************************************************************************/ 00100 virtual Retval MQUALIFIER getElement(const IString& strElementName, 00101 IXSDNode*& rpNode) = 0; 00102 00103 /**************************************************************************/ 00111 /**************************************************************************/ 00112 virtual Retval MQUALIFIER getSimpleType(const IString& strSimpleTypeName, 00113 IXSDNode*& rpNode) = 0; 00114 00115 /**************************************************************************/ 00123 /**************************************************************************/ 00124 virtual Retval MQUALIFIER getComplexType(const IString& strComplexTypeName, 00125 IXSDNode*& rpNode) = 0; 00126 00127 /**************************************************************************/ 00135 /**************************************************************************/ 00136 virtual Retval MQUALIFIER getElementsOfComplexType(const IString& strComplexTypeName, 00137 IXSDNodes*& rpElements) = 0; 00138 00139 /**************************************************************************/ 00148 /**************************************************************************/ 00149 virtual Retval MQUALIFIER getElementOfComplexType(const IString& strComplexTypeName, 00150 const IString& strElementName, 00151 IXSDNode*& rpElement) = 0; 00152 00153 /**************************************************************************/ 00161 /**************************************************************************/ 00162 virtual Retval MQUALIFIER getAttributesOfComplexType(const IString& strComplexTypeName, 00163 IXSDNodes*& rpAttributes) = 0; 00164 00165 /**************************************************************************/ 00174 /**************************************************************************/ 00175 virtual Retval MQUALIFIER getAttributeOfComplexType(const IString& strComplexTypeName, 00176 const IString& strAttributeName, 00177 IXSDNode*& rpAttribute) = 0; 00178 00179 /**************************************************************************/ 00186 /**************************************************************************/ 00187 virtual Retval MQUALIFIER getComplexTypes(IXSDNodes*& rpComplexTypes) = 0; 00188 00189 /**************************************************************************/ 00196 /**************************************************************************/ 00197 virtual Retval MQUALIFIER getSimpleTypes(IXSDNodes*& rpSimpleTypes) = 0; 00198 00199 /**************************************************************************/ 00208 /**************************************************************************/ 00209 virtual Retval MQUALIFIER getAllElementsOfComplexType(const IString& strComplexTypeName, 00210 IXSDNodes*& rpElements) = 0; 00211 00212 /**************************************************************************/ 00222 /**************************************************************************/ 00223 virtual Retval MQUALIFIER createNewXSDChildNode(IXSDNode& rParentNode, 00224 const IString& strName, 00225 bool bPrefixSchemaNamespace, 00226 IXSDNode*& rpNode) = 0; 00227 00228 /**************************************************************************/ 00237 /**************************************************************************/ 00238 virtual bool MQUALIFIER isXSDNodeIncludedInFile(const IXSDNode& rNode, 00239 const IString& strFilePath) const = 0; 00240 00241 /**************************************************************************/ 00249 /**************************************************************************/ 00250 virtual Retval MQUALIFIER getIncludeFileMainNode(const IString& strIncludeFile, 00251 IXSDNode*& rpNode) = 0; 00252 }; 00253 00254 00255 END_NAMESPACE_Zeus 00256 00257 #endif 00258