00001
00002
00003 #ifndef MIX_NODECONTAINER_H_
00004 #define MIX_NODECONTAINER_H_
00005
00006 #include "NodeList.h"
00007 #include "Node.h"
00008
00009 namespace MiX{
00015 template <class Char,class Traits,class XMLTraits>
00016 class NodeContainer : virtual public Node<Char,Traits,XMLTraits>{
00017 public:
00018 MiX_Template_Typedef(Char,Traits,XMLTraits);
00019 typedef NodeContainer<Char,Traits,XMLTraits> this_type;
00020 protected:
00021 NodeList<Char,Traits,XMLTraits> children_;
00022 void addChild(node_type* node);
00023 protected:
00025 NodeContainer() : Node<Char,Traits,XMLTraits>(){ };
00031 NodeContainer(const this_type& src){ };
00032 public:
00034 virtual ~NodeContainer()throw();
00036 nodelist_type& getChildren(){ return children_; };
00038 const nodelist_type& getChildren()const{ return children_; };
00040 bool hasAttribute(const string_type& n);
00042 Element<Char,Traits,XMLTraits>& getElement(const XMLString<Char,Traits,XMLTraits>& name,int index);
00044 Attribute<Char,Traits,XMLTraits>& getAttribute(const XMLString<Char,Traits,XMLTraits>& nm);
00045
00046 #ifdef MiX_BACKWARD_COMPATIBILITY
00047
00048 NodeList<Char,Traits,XMLTraits>& getChilds(){
00049 return getChildren();
00050 };
00052 const NodeList<Char,Traits,XMLTraits>& getChilds()const{
00053 return getChildren();
00054 }
00055 #endif
00056
00057 friend class DOM_Parser<Char,Traits,XMLTraits>;
00058 };
00059 }
00060
00061 #ifndef MIX_NODECONTAINER_CPP_
00062 #include "NodeContainer.cpp"
00063 #endif
00064
00065 #endif