diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/xmlmenu.cpp | 13 | ||||
-rw-r--r-- | src/xmlmenu.h | 3 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/xmlmenu.cpp b/src/xmlmenu.cpp index b118bc4..04a8f8f 100644 --- a/src/xmlmenu.cpp +++ b/src/xmlmenu.cpp @@ -31,6 +31,15 @@ using namespace xmlpp; using namespace std; +const string XmlMenu::_dtd = + "<!ELEMENT menus ((menu | system | plugin)+)>\n" + "<!ELEMENT menu ((menu | system | plugin)+)>\n" + "<!ATTLIST menu name CDATA #REQUIRED>\n" + "<!ELEMENT system EMPTY>\n" + "<!ATTLIST system name CDATA #REQUIRED>\n" + "<!ELEMENT plugin EMPTY>\n" + "<!ATTLIST plugin name CDATA #REQUIRED>\n"; + MenuNode* XmlMenu::LoadXmlMenu(string menuFileName, string schemaFileName) { MenuNode* menuRoot = new MenuNode(); @@ -43,7 +52,9 @@ MenuNode* XmlMenu::LoadXmlMenu(string menuFileName, string schemaFileName) parser.set_substitute_entities(); parser.parse_file(menuFileName); - DtdValidator validator(schemaFileName); + DtdValidator validator; + validator.parse_memory(_dtd); + Document *pDoc = parser.get_document(); validator.validate( pDoc ); diff --git a/src/xmlmenu.h b/src/xmlmenu.h index f8da182..4bf8160 100644 --- a/src/xmlmenu.h +++ b/src/xmlmenu.h @@ -31,6 +31,9 @@ namespace xmlpp { class Element; } class XmlMenu { + private: + static const std::string _dtd; + public: MenuNode* LoadXmlMenu(std::string menuFileName, std::string schemaFileName); |