Skip to content

Commit af1296a

Browse files
authored
Merge pull request #4 from ndw/iss002
Improve support for namespace lookup
2 parents 51427fc + 965c5c6 commit af1296a

File tree

7 files changed

+859
-5
lines changed

7 files changed

+859
-5
lines changed

build.gradle

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
plugins {
22
id 'com.nwalsh.gradle.saxon.saxon-gradle' version '0.9.3'
3+
id 'com.nwalsh.gradle.relaxng.validate' version '0.0.6'
34
}
45

56
defaultTasks 'dist'
67

78
import com.nwalsh.gradle.saxon.SaxonXsltTask
9+
import com.nwalsh.gradle.relaxng.validate.RelaxNGValidateTask
810

911
task copy_data(type: Copy) {
1012
into "${buildDir}/xmlresolverdata-${version}"
@@ -16,10 +18,33 @@ task copy_data(type: Copy) {
1618
task make_data_catalog(type: SaxonXsltTask, dependsOn: ["copy_data"]) {
1719
input "${projectDir}/src/data/manifest.xml"
1820
output "${buildDir}/xmlresolverdata-${version}/catalog.xml"
21+
outputs.file "${buildDir}/xmlresolverdata-${version}/cat-entities.xml"
22+
outputs.file "${buildDir}/xmlresolverdata-${version}/cat-mathml2.xml"
23+
outputs.file "${buildDir}/xmlresolverdata-${version}/cat-mathml3.xml"
24+
outputs.file "${buildDir}/xmlresolverdata-${version}/cat-rddl.xml"
25+
outputs.file "${buildDir}/xmlresolverdata-${version}/cat-svg.xml"
26+
outputs.file "${buildDir}/xmlresolverdata-${version}/cat-xhtml.xml"
1927
stylesheet "${projectDir}/tools/make-catalog.xsl"
2028
}
2129

22-
task dist(type: Zip, dependsOn: ["make_data_catalog"]) {
30+
task validate(dependsOn: ["make_data_catalog"]) {
31+
// just some place to hang dependencies
32+
}
33+
34+
make_data_catalog.outputs.files.each { xml ->
35+
def fn = xml.toString()
36+
def pos = fn.lastIndexOf("/")
37+
fn = fn.substring(pos+1)
38+
Task t = project.task("validate_${fn}", type: RelaxNGValidateTask) {
39+
dependsOn "make_data_catalog"
40+
input xml
41+
output "${buildDir}/validated/${fn}"
42+
schema "src/data/xmlcatalogs.org/schema/1.1/catalog.rng"
43+
}
44+
validate.dependsOn(t)
45+
}
46+
47+
task dist(type: Zip, dependsOn: ["make_data_catalog", "validate"]) {
2348
from("$buildDir")
2449
exclude(["dist"])
2550
destinationDirectory = file("${buildDir}/dist")

src/data/manifest.xml

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,12 @@
105105
<system>http://www.rddl.org/xhtml-symbol.ent</system>
106106
</entry>
107107
<entry uri="root/www.w3.org/1999/xlink.xsd">
108-
<namespace>https://www.w3.org/1999/xlink</namespace>
109108
<uri>https://www.w3.org/1999/xlink.xsd</uri>
109+
<namespace>https://www.w3.org/1999/xlink</namespace>
110+
<purpose>http://www.rddl.org/purposes#validation</purpose>
111+
<nature>http://www.w3.org/2001/XMLSchema</nature>
110112
</entry>
111113
<entry uri="root/www.w3.org/XML/2008/06/xlink.xsd">
112-
<namespace>https://www.w3.org/1999/xlink</namespace>
113114
<uri>https://www.w3.org/XML/2008/06/xlink.xsd</uri>
114115
</entry>
115116
<entry uri="root/www.w3.org/2001/XMLSchema.dtd">
@@ -118,15 +119,20 @@
118119
</entry>
119120
<entry uri="root/www.w3.org/2001/XMLSchema.xsd">
120121
<uri>https://www.w3.org/2001/XMLSchema.xsd</uri>
122+
<namespace>http://www.w3.org/2001/XMLSchema</namespace>
123+
<purpose>http://www.rddl.org/purposes#validation</purpose>
124+
<nature>http://www.w3.org/2001/XMLSchema</nature>
121125
</entry>
122126
<entry uri="root/www.w3.org/2001/datatypes.xsd">
123127
<public>-//W3C//DTD XSD 1.0 Datatypes//EN</public>
124128
<public>datatypes</public>
125129
<system>https://www.w3.org/2001/datatypes.xsd</system>
126130
</entry>
127131
<entry uri="root/www.w3.org/2001/xml.xsd">
128-
<namespace>https://www.w3.org/XML/1998/namespace</namespace>
129132
<uri>https://www.w3.org/2001/xml.xsd</uri>
133+
<namespace>https://www.w3.org/XML/1998/namespace</namespace>
134+
<purpose>http://www.rddl.org/purposes#validation</purpose>
135+
<nature>http://www.w3.org/2001/XMLSchema</nature>
130136
</entry>
131137
<entry uri="root/www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd">
132138
<public>-//W3C//DTD Specification V2.10//EN</public>
@@ -1288,4 +1294,30 @@
12881294
<entry uri="root/www.w3.org/2007/schema-for-xslt20.xsd">
12891295
<uri>https://www.w3.org/2007/schema-for-xslt20.xsd</uri>
12901296
</entry>
1297+
<entry uri="root/xmlcatalogs.org/schema/1.1/catalog.xsd">
1298+
<uri>https://xmlcatalogs.org/schema/1.1/catalog.xsd</uri>
1299+
<uri>http://www.oasis-open.org/committees/entity/release/1.1/catalog.xsd</uri>
1300+
<namespace>urn:oasis:names:tc:entity:xmlns:tr9401:catalog</namespace>
1301+
<purpose>http://www.rddl.org/purposes#validation</purpose>
1302+
<nature>http://www.w3.org/2001/XMLSchema</nature>
1303+
</entry>
1304+
<entry uri="root/xmlcatalogs.org/schema/1.1/catalog.rnc">
1305+
<uri>https://xmlcatalogs.org/schema/1.1/catalog.rnc</uri>
1306+
</entry>
1307+
<entry uri="root/xmlcatalogs.org/schema/1.1/catalog.rng">
1308+
<uri>https://xmlcatalogs.org/schema/1.1/catalog.rng</uri>
1309+
<uri>http://www.oasis-open.org/committees/entity/release/1.1/catalog.rng</uri>
1310+
<namespace>urn:oasis:names:tc:entity:xmlns:tr9401:catalog</namespace>
1311+
<purpose>http://www.rddl.org/purposes#validation</purpose>
1312+
<nature>http://relaxng.org/ns/structure/1.0</nature>
1313+
</entry>
1314+
<entry uri="root/xmlcatalogs.org/schema/1.1/catalog.dtd">
1315+
<public>-//OASIS//DTD XML Catalogs V1.1//EN</public>
1316+
<uri>https://xmlcatalogs.org/schema/1.1/catalog.dtd</uri>
1317+
<uri>http://www.oasis-open.org/committees/entity/release/1.1/catalog.dtd</uri>
1318+
<namespace>urn:oasis:names:tc:entity:xmlns:tr9401:catalog</namespace>
1319+
<purpose>http://www.rddl.org/purposes#validation</purpose>
1320+
<nature>http://www.isi.edu/in-notes/iana/assignments/media-types/application/xml-dtd</nature>
1321+
<nature>https://www.iana.org/assignments/media-types/application/xml-dtd</nature>
1322+
</entry>
12911323
</manifest>
Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
<!-- $Id: catalog.dtd,v 1.14 2005/04/13 20:47:06 ndw Exp $ -->
2+
3+
<!ENTITY % pubIdChars "CDATA">
4+
<!ENTITY % publicIdentifier "%pubIdChars;">
5+
<!ENTITY % partialPublicIdentifier "%pubIdChars;">
6+
<!ENTITY % uriReference "CDATA">
7+
<!ENTITY % string "CDATA">
8+
<!ENTITY % systemOrPublic "(system|public)">
9+
10+
<!ENTITY % p "">
11+
<!ENTITY % s "">
12+
<!ENTITY % nsdecl "xmlns%s;">
13+
14+
<!ENTITY % catalog "%p;catalog">
15+
<!ENTITY % public "%p;public">
16+
<!ENTITY % system "%p;system">
17+
<!ENTITY % uri "%p;uri">
18+
<!ENTITY % rewriteSystem "%p;rewriteSystem">
19+
<!ENTITY % rewriteURI "%p;rewriteURI">
20+
<!ENTITY % systemSuffix "%p;systemSuffix">
21+
<!ENTITY % uriSuffix "%p;uriSuffix">
22+
<!ENTITY % delegatePublic "%p;delegatePublic">
23+
<!ENTITY % delegateSystem "%p;delegateSystem">
24+
<!ENTITY % delegateURI "%p;delegateURI">
25+
<!ENTITY % nextCatalog "%p;nextCatalog">
26+
<!ENTITY % group "%p;group">
27+
28+
<!ENTITY % local.catalog.mix "">
29+
<!ENTITY % local.catalog.attribs "">
30+
31+
<!ELEMENT %catalog; (%public;|%system;|%uri;
32+
|%rewriteSystem;|%rewriteURI;
33+
|%systemSuffix;|%uriSuffix;
34+
|%delegatePublic;|%delegateSystem;|%delegateURI;
35+
|%nextCatalog;|%group; %local.catalog.mix;)+>
36+
<!ATTLIST %catalog;
37+
%nsdecl; %uriReference; #FIXED
38+
'urn:oasis:names:tc:entity:xmlns:xml:catalog'
39+
id ID #IMPLIED
40+
prefer %systemOrPublic; #IMPLIED
41+
xml:base %uriReference; #IMPLIED
42+
%local.catalog.attribs;
43+
>
44+
45+
<!ENTITY % local.public.attribs "">
46+
47+
<!ELEMENT %public; EMPTY>
48+
<!ATTLIST %public;
49+
id ID #IMPLIED
50+
publicId %publicIdentifier; #REQUIRED
51+
uri %uriReference; #REQUIRED
52+
xml:base %uriReference; #IMPLIED
53+
%local.public.attribs;
54+
>
55+
56+
<!ENTITY % local.system.attribs "">
57+
58+
<!ELEMENT %system; EMPTY>
59+
<!ATTLIST %system;
60+
id ID #IMPLIED
61+
systemId %string; #REQUIRED
62+
uri %uriReference; #REQUIRED
63+
xml:base %uriReference; #IMPLIED
64+
%local.system.attribs;
65+
>
66+
67+
<!ENTITY % local.uri.attribs "">
68+
69+
<!ELEMENT %uri; EMPTY>
70+
<!ATTLIST %uri;
71+
id ID #IMPLIED
72+
name %string; #REQUIRED
73+
uri %uriReference; #REQUIRED
74+
xml:base %uriReference; #IMPLIED
75+
%local.uri.attribs;
76+
>
77+
78+
<!ENTITY % local.rewriteSystem.attribs "">
79+
80+
<!ELEMENT %rewriteSystem; EMPTY>
81+
<!ATTLIST %rewriteSystem;
82+
id ID #IMPLIED
83+
systemIdStartString %string; #REQUIRED
84+
rewritePrefix %string; #REQUIRED
85+
%local.rewriteSystem.attribs;
86+
>
87+
88+
<!ENTITY % local.rewriteURI.attribs "">
89+
90+
<!ELEMENT %rewriteURI; EMPTY>
91+
<!ATTLIST %rewriteURI;
92+
id ID #IMPLIED
93+
uriStartString %string; #REQUIRED
94+
rewritePrefix %string; #REQUIRED
95+
%local.rewriteURI.attribs;
96+
>
97+
98+
<!ENTITY % local.systemSuffix.attribs "">
99+
100+
<!ELEMENT %systemSuffix; EMPTY>
101+
<!ATTLIST %systemSuffix;
102+
id ID #IMPLIED
103+
systemIdSuffix %string; #REQUIRED
104+
uri %string; #REQUIRED
105+
%local.systemSuffix.attribs;
106+
>
107+
108+
<!ENTITY % local.uriSuffix.attribs "">
109+
110+
<!ELEMENT %uriSuffix; EMPTY>
111+
<!ATTLIST %uriSuffix;
112+
id ID #IMPLIED
113+
uriSuffix %string; #REQUIRED
114+
uri %string; #REQUIRED
115+
%local.uriSuffix.attribs;
116+
>
117+
118+
<!ENTITY % local.delegatePublic.attribs "">
119+
120+
<!ELEMENT %delegatePublic; EMPTY>
121+
<!ATTLIST %delegatePublic;
122+
id ID #IMPLIED
123+
publicIdStartString %partialPublicIdentifier; #REQUIRED
124+
catalog %uriReference; #REQUIRED
125+
xml:base %uriReference; #IMPLIED
126+
%local.delegatePublic.attribs;
127+
>
128+
129+
<!ENTITY % local.delegateSystem.attribs "">
130+
131+
<!ELEMENT %delegateSystem; EMPTY>
132+
<!ATTLIST %delegateSystem;
133+
id ID #IMPLIED
134+
systemIdStartString %string; #REQUIRED
135+
catalog %uriReference; #REQUIRED
136+
xml:base %uriReference; #IMPLIED
137+
%local.delegateSystem.attribs;
138+
>
139+
140+
<!ENTITY % local.delegateURI.attribs "">
141+
142+
<!ELEMENT %delegateURI; EMPTY>
143+
<!ATTLIST %delegateURI;
144+
id ID #IMPLIED
145+
uriStartString %string; #REQUIRED
146+
catalog %uriReference; #REQUIRED
147+
xml:base %uriReference; #IMPLIED
148+
%local.delegateURI.attribs;
149+
>
150+
151+
<!ENTITY % local.nextCatalog.attribs "">
152+
153+
<!ELEMENT %nextCatalog; EMPTY>
154+
<!ATTLIST %nextCatalog;
155+
id ID #IMPLIED
156+
catalog %uriReference; #REQUIRED
157+
xml:base %uriReference; #IMPLIED
158+
%local.nextCatalog.attribs;
159+
>
160+
161+
<!ENTITY % local.group.mix "">
162+
<!ENTITY % local.group.attribs "">
163+
164+
<!ELEMENT %group; (%public;|%system;|%uri;
165+
|%rewriteSystem;|%rewriteURI;
166+
|%systemSuffix;|%uriSuffix;
167+
|%delegatePublic;|%delegateSystem;|%delegateURI;
168+
|%nextCatalog; %local.group.mix;)+>
169+
<!ATTLIST %group;
170+
id ID #IMPLIED
171+
prefer %systemOrPublic; #IMPLIED
172+
xml:base %uriReference; #IMPLIED
173+
%local.group.attribs;
174+
>

0 commit comments

Comments
 (0)