summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--menuorg.dtd22
-rw-r--r--src/xmlmenu.cpp13
-rw-r--r--src/xmlmenu.h3
3 files changed, 20 insertions, 18 deletions
diff --git a/menuorg.dtd b/menuorg.dtd
index cb7b6a2..576c9c8 100644
--- a/menuorg.dtd
+++ b/menuorg.dtd
@@ -19,22 +19,10 @@
$Id$
-->
-<!ELEMENT menu ((menu | system | plugin | command)+)>
-<!ATTLIST menu
- name CDATA #REQUIRED
->
+<!ELEMENT menus ((menu | system | plugin)+)>
+<!ELEMENT menu ((menu | system | plugin)+)>
+<!ATTLIST menu name CDATA #REQUIRED>
<!ELEMENT system EMPTY>
-<!ATTLIST system
- name CDATA #REQUIRED
->
+<!ATTLIST system name CDATA #REQUIRED>
<!ELEMENT plugin EMPTY>
-<!ATTLIST plugin
- name CDATA #REQUIRED
->
-<!ELEMENT command EMPTY>
-<!ATTLIST command
- name CDATA #REQUIRED
- execute CDATA #REQUIRED
- confirm (yes | no) #IMPLIED
->
-<!ELEMENT menus ((menu | system | plugin | command)+)>
+<!ATTLIST plugin name CDATA #REQUIRED>
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);