summaryrefslogtreecommitdiff
path: root/src/xmlmenu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/xmlmenu.cpp')
-rw-r--r--src/xmlmenu.cpp13
1 files changed, 12 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 );