Lines 32-38
Link Here
|
32 |
* </p> |
32 |
* </p> |
33 |
* <p> |
33 |
* <p> |
34 |
* The value of "element" is specified using such a format |
34 |
* The value of "element" is specified using such a format |
35 |
* <code>{namespace}name/dtd</code>. The namespace or dtd part |
35 |
* <code>{namespace}name/dtd:version</code>. The namespace or dtd part |
36 |
* can be omitted and accepted are values like <code>name/dtd</code>, |
36 |
* can be omitted and accepted are values like <code>name/dtd</code>, |
37 |
* <code>{ns}name</code> and <code>name</code>. |
37 |
* <code>{ns}name</code> and <code>name</code>. |
38 |
* </p> |
38 |
* </p> |
Lines 81-91
Link Here
|
81 |
private String namespace; |
81 |
private String namespace; |
82 |
private String element; |
82 |
private String element; |
83 |
private String dtd; |
83 |
private String dtd; |
|
|
84 |
private String version; |
84 |
|
85 |
|
85 |
public QualifiedElement(String namespace, String element, String dtd) { |
86 |
public QualifiedElement(String namespace, String element, String dtd, String version) { |
86 |
this.namespace = namespace; |
87 |
this.namespace = namespace; |
87 |
this.element = element; |
88 |
this.element = element; |
88 |
this.dtd = dtd; |
89 |
this.dtd = dtd; |
|
|
90 |
this.version = version; |
89 |
} |
91 |
} |
90 |
|
92 |
|
91 |
public QualifiedElement(String qualifiedElement) { |
93 |
public QualifiedElement(String qualifiedElement) { |
Lines 102-107
Link Here
|
102 |
dtd = qualifiedElement.substring(dtdSlash+1); |
104 |
dtd = qualifiedElement.substring(dtdSlash+1); |
103 |
qualifiedElement = qualifiedElement.substring(0, dtdSlash); |
105 |
qualifiedElement = qualifiedElement.substring(0, dtdSlash); |
104 |
} |
106 |
} |
|
|
107 |
// Extract version part |
108 |
int versionSlash = qualifiedElement.indexOf(':'); |
109 |
if (versionSlash > 0) { |
110 |
version = qualifiedElement.substring(versionSlash + 1); |
111 |
qualifiedElement = qualifiedElement.substring(0, versionSlash); |
112 |
} |
105 |
// Check if the name is a wildcard |
113 |
// Check if the name is a wildcard |
106 |
element = ("*".equals(qualifiedElement) ? null : qualifiedElement); |
114 |
element = ("*".equals(qualifiedElement) ? null : qualifiedElement); |
107 |
} |
115 |
} |
Lines 117-127
Link Here
|
117 |
return dtd; |
125 |
return dtd; |
118 |
} |
126 |
} |
119 |
|
127 |
|
120 |
public boolean matches(String someNamespace, String someElement, String someDtd) { |
128 |
public String getVersion() { |
|
|
129 |
return version; |
130 |
} |
131 |
|
132 |
public boolean matches(String someNamespace, String someElement, String someDtd, String someVersion) { |
121 |
boolean nsMatch = this.namespace != null ? this.namespace.equals(someNamespace) : true; |
133 |
boolean nsMatch = this.namespace != null ? this.namespace.equals(someNamespace) : true; |
122 |
boolean elementEquals = this.element != null ? this.element.equals(someElement) : true; |
134 |
boolean elementEquals = this.element != null ? this.element.equals(someElement) : true; |
123 |
boolean dtdEquals = this.dtd != null ? this.dtd.equals(someDtd) : true; |
135 |
boolean dtdEquals = this.dtd != null ? this.dtd.equals(someDtd) : true; |
124 |
return nsMatch && elementEquals && dtdEquals; |
136 |
boolean versionEquals = this.version != null ? this.version.equals(someVersion) : true; |
|
|
137 |
return nsMatch && elementEquals && dtdEquals && versionEquals; |
125 |
} |
138 |
} |
126 |
} |
139 |
} |
127 |
|
140 |
|
Lines 154-160
Link Here
|
154 |
if (elementsToFind != null) { |
167 |
if (elementsToFind != null) { |
155 |
boolean foundOne = false; |
168 |
boolean foundOne = false; |
156 |
for (int i = 0; i < elementsToFind.length && !foundOne; ++i) { |
169 |
for (int i = 0; i < elementsToFind.length && !foundOne; ++i) { |
157 |
foundOne |= elementsToFind[i].matches(xmlHandler.getRootNamespace(), xmlHandler.getRootName(), xmlHandler.getDTD()); |
170 |
foundOne |= elementsToFind[i].matches(xmlHandler.getRootNamespace(), xmlHandler.getRootName(), xmlHandler.getDTD(), xmlHandler.getVersion()); |
158 |
} |
171 |
} |
159 |
if (!foundOne) |
172 |
if (!foundOne) |
160 |
return INDETERMINATE; |
173 |
return INDETERMINATE; |