00001 /* libIXAml - IXA Taldea */ 00002 00003 #ifndef _LNKXMLDOC_H 00004 #define _LNKXMLDOC_H 00005 00006 #include "linkgrps.h" 00007 #include "idreferl.h" 00008 #include "domid.h" 00009 #include "teiheader.h" 00010 #include "lnkprolog.h" 00011 #include <string> 00012 #include <vector> 00013 #include <fstream> 00014 00017 class LnkXMLDoc:public IdRefErl { 00018 00019 protected: 00020 DomId lnkDom; 00021 LnkProlog prolog; 00022 LinkGrpS lnkGrpS; 00024 public: 00025 00029 LnkXMLDoc(const DomId & domId); 00030 00034 LnkXMLDoc(const LnkXMLDoc & lnkDoc); 00035 00037 virtual ~LnkXMLDoc(); 00038 00043 LnkXMLDoc& operator=(const LnkXMLDoc & lnkDoc); 00044 00048 DomId getDom() const; 00049 00053 void putDom ( const DomId & domId); 00054 00059 std::string getRefFitx(const DomId & dom) const; 00060 00065 std::vector <std::string> getRefFitx(const RefType & rt) const; 00066 00071 std::vector <DomId> getRefDom(const RefType & rt) const; 00072 00079 void addRefFitx(const RefType & rt, const DomId & d,const std::string & f, const bool system=true); 00080 00084 void removeRefFitx(const DomId & d); 00085 00089 void removeRefFitx(const std::string & fitx); 00090 00093 void begin(); 00094 00097 void next(); 00098 00102 bool ready() const; 00103 00107 LinkGrp current() const; 00108 00112 unsigned size() const; 00113 00118 unsigned size(const LnkGrpType & lgt) const; 00119 00125 Link get(const LnkGrpType& lgt, const unsigned pos) const; 00126 00130 std::vector<LnkGrpType> getLnkGrpTypes() const; 00131 00136 LinkGrp getLinkGrp(const LnkGrpType & lgt) const; 00137 00141 void addLinkGrp(const LinkGrp & lg); 00142 00147 void addLink(const LnkGrpType & lgt, const Link & l); 00148 00153 void removeLink(const LnkGrpType & lgt, const Link & l); 00154 00159 std::vector<Link> find (const Id & id); 00160 00166 std::vector<Link> find (const int ind, const Id & id); 00167 00174 std::vector<Id> find (const int ind1, const Id & id, const int ind2); 00175 00176 private: 00177 00178 void writeDocument(XMLSimpleStruct*) const throw (char*); 00179 void readDocument(XMLSimpleStruct*) throw (char*); 00180 00181 }; 00182 #endif //_LNKXMLDOC_H