diff --git a/build.xml b/build.xml
index ecbd296..941e84c 100644
--- a/build.xml
+++ b/build.xml
@@ -76,10 +76,10 @@
-
-
-
-
+
+
+
+
diff --git a/dtd/musicxml/3.0/attributes.mod b/dtd/musicxml/3.0/attributes.mod
new file mode 100644
index 0000000..62fa069
--- /dev/null
+++ b/dtd/musicxml/3.0/attributes.mod
@@ -0,0 +1,509 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dtd/musicxml/3.0/barline.mod b/dtd/musicxml/3.0/barline.mod
new file mode 100644
index 0000000..12c1f4c
--- /dev/null
+++ b/dtd/musicxml/3.0/barline.mod
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dtd/musicxml/3.0/common.mod b/dtd/musicxml/3.0/common.mod
new file mode 100644
index 0000000..bf5a0bd
--- /dev/null
+++ b/dtd/musicxml/3.0/common.mod
@@ -0,0 +1,1036 @@
+
+
+
+
+
+
+
+
+%isolat1;
+
+%isolat2;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dtd/musicxml/3.0/direction.mod b/dtd/musicxml/3.0/direction.mod
new file mode 100644
index 0000000..12fe329
--- /dev/null
+++ b/dtd/musicxml/3.0/direction.mod
@@ -0,0 +1,1052 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dtd/musicxml/3.0/identity.mod b/dtd/musicxml/3.0/identity.mod
new file mode 100644
index 0000000..63159eb
--- /dev/null
+++ b/dtd/musicxml/3.0/identity.mod
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dtd/musicxml/3.0/layout.mod b/dtd/musicxml/3.0/layout.mod
new file mode 100644
index 0000000..e5e626a
--- /dev/null
+++ b/dtd/musicxml/3.0/layout.mod
@@ -0,0 +1,222 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dtd/musicxml/3.0/link.mod b/dtd/musicxml/3.0/link.mod
new file mode 100644
index 0000000..f8b0200
--- /dev/null
+++ b/dtd/musicxml/3.0/link.mod
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dtd/musicxml/3.0/note.mod b/dtd/musicxml/3.0/note.mod
new file mode 100644
index 0000000..1075ffd
--- /dev/null
+++ b/dtd/musicxml/3.0/note.mod
@@ -0,0 +1,1323 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dtd/musicxml/3.0/partwise.dtd b/dtd/musicxml/3.0/partwise.dtd
new file mode 100644
index 0000000..ed3afa6
--- /dev/null
+++ b/dtd/musicxml/3.0/partwise.dtd
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+%common;
+
+
+
+%layout;
+
+
+
+%identity;
+
+
+
+%attributes;
+
+
+
+%link;
+
+
+
+%note;
+
+
+
+%barline;
+
+
+
+%direction;
+
+
+
+%score;
diff --git a/dtd/musicxml/3.0/score.mod b/dtd/musicxml/3.0/score.mod
new file mode 100644
index 0000000..1293786
--- /dev/null
+++ b/dtd/musicxml/3.0/score.mod
@@ -0,0 +1,413 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+]]>
+
+
+
+
+]]>
+
+
+
+
diff --git a/dtd/musicxml/3.0/timewise.dtd b/dtd/musicxml/3.0/timewise.dtd
new file mode 100644
index 0000000..c4111ff
--- /dev/null
+++ b/dtd/musicxml/3.0/timewise.dtd
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+%common;
+
+
+
+%layout;
+
+
+
+%identity;
+
+
+
+%attributes;
+
+
+
+%link;
+
+
+
+%note;
+
+
+
+%barline;
+
+
+
+%direction;
+
+
+
+%score;
diff --git a/src/freedots/musicxml/MusicXMLEntityResolver.java b/src/freedots/musicxml/MusicXMLEntityResolver.java
index 5feb616..6052619 100644
--- a/src/freedots/musicxml/MusicXMLEntityResolver.java
+++ b/src/freedots/musicxml/MusicXMLEntityResolver.java
@@ -42,26 +42,49 @@ class MusicXMLEntityResolver implements org.xml.sax.EntityResolver {
private static final Map
PUBLIC_ID_MAP = Collections.unmodifiableMap(new HashMap() {
{
- put("-//Recordare//DTD MusicXML 0.6b Partwise//EN", "partwise.dtd");
- put("-//Recordare//DTD MusicXML 0.7b Partwise//EN", "partwise.dtd");
- put("-//Recordare//DTD MusicXML 1.0 Partwise//EN", "partwise.dtd");
- put("-//Recordare//DTD MusicXML 1.1 Partwise//EN", "partwise.dtd");
- put("-//Recordare//DTD MusicXML 2.0 Partwise//EN", "partwise.dtd");
- put("-//Recordare//ELEMENTS MusicXML 2.0 Common//EN", "common.mod");
- put("ISO 8879:1986//ENTITIES Added Latin 1//EN//XML", "isolat1.ent");
- put("ISO 8879:1986//ENTITIES Added Latin 2//EN//XML", "isolat2.ent");
- put("-//Recordare//ELEMENTS MusicXML 2.0 Layout//EN", "layout.mod");
- put("-//Recordare//ELEMENTS MusicXML 2.0 Identity//EN",
- "identity.mod");
- put("-//Recordare//ELEMENTS MusicXML 2.0 Attributes//EN",
- "attributes.mod");
- put("-//Recordare//ELEMENTS MusicXML 2.0 Link//EN", "link.mod");
- put("-//Recordare//ELEMENTS MusicXML 2.0 Note//EN", "note.mod");
- put("-//Recordare//ELEMENTS MusicXML 2.0 Barline//EN",
- "barline.mod");
- put("-//Recordare//ELEMENTS MusicXML 2.0 Direction//EN",
- "direction.mod");
- put("-//Recordare//ELEMENTS MusicXML 2.0 Score//EN", "score.mod");
+ put("-//Recordare//DTD MusicXML 0.6b Partwise//EN", "1.0/partwise.dtd");
+ put("-//Recordare//DTD MusicXML 0.7b Partwise//EN", "1.0/partwise.dtd");
+ put("-//Recordare//DTD MusicXML 1.0 Partwise//EN", "1.0/partwise.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.0 Attributes//EN", "1.0/attributes.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.0 Barline//EN", "1.0/barline.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.0 Direction//EN", "1.0/direction.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.0 Common//EN", "1.0/common.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.0 Identity//EN", "1.0/identity.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.0 Link//EN", "1.0/link.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.0 Note//EN", "1.0/note.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.0 Score//EN", "1.0/score.dtd");
+ put("-//Recordare//DTD MusicXML 1.1 Partwise//EN", "1.1/partwise.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.1 Attributes//EN", "1.1/attributes.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.1 Barline//EN", "1.1/barline.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.1 Common//EN", "1.1/common.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.1 Direction//EN", "1.1/direction.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.1 Identity//EN", "1.1/identity.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.1 Layout//EN", "1.1/layout.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.1 Link//EN", "1.1/link.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.1 Note//EN", "1.1/note.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 1.1 Score//EN", "1.1/score.dtd");
+ put("-//Recordare//DTD MusicXML 2.0 Partwise//EN", "2.0/partwise.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 2.0 Common//EN", "2.0/common.mod");
+ put("ISO 8879:1986//ENTITIES Added Latin 1//EN//XML", "2.0/isolat1.ent");
+ put("ISO 8879:1986//ENTITIES Added Latin 2//EN//XML", "2.0/isolat2.ent");
+ put("-//Recordare//ELEMENTS MusicXML 2.0 Layout//EN", "2.0/layout.mod");
+ put("-//Recordare//ELEMENTS MusicXML 2.0 Identity//EN", "2.0/identity.mod");
+ put("-//Recordare//ELEMENTS MusicXML 2.0 Attributes//EN", "2.0/attributes.mod");
+ put("-//Recordare//ELEMENTS MusicXML 2.0 Link//EN", "2.0/link.mod");
+ put("-//Recordare//ELEMENTS MusicXML 2.0 Note//EN", "2.0/note.mod");
+ put("-//Recordare//ELEMENTS MusicXML 2.0 Barline//EN", "2.0/barline.mod");
+ put("-//Recordare//ELEMENTS MusicXML 2.0 Direction//EN", "2.0/direction.mod");
+ put("-//Recordare//ELEMENTS MusicXML 2.0 Score//EN", "2.0/score.mod");
+ put("-//Recordare//DTD MusicXML 3.0 Partwise//EN", "3.0/partwise.dtd");
+ put("-//Recordare//ELEMENTS MusicXML 3.0 Common//EN", "3.0/common.mod");
+ put("-//Recordare//ELEMENTS MusicXML 3.0 Layout//EN", "3.0/layout.mod");
+ put("-//Recordare//ELEMENTS MusicXML 3.0 Identity//EN", "3.0/identity.mod");
+ put("-//Recordare//ELEMENTS MusicXML 3.0 Attributes//EN", "3.0/attributes.mod");
+ put("-//Recordare//ELEMENTS MusicXML 3.0 Link//EN", "3.0/link.mod");
+ put("-//Recordare//ELEMENTS MusicXML 3.0 Note//EN", "3.0/note.mod");
+ put("-//Recordare//ELEMENTS MusicXML 3.0 Barline//EN", "3.0/barline.mod");
+ put("-//Recordare//ELEMENTS MusicXML 3.0 Direction//EN", "3.0/direction.mod");
+ put("-//Recordare//ELEMENTS MusicXML 3.0 Score//EN", "3.0/score.mod");
}
});