vgritsenko 2004/02/07 11:34:20
Modified: . status.xml
java/src/org/apache/xindice/xml/dom ElementImpl.java
Log:
Declare Query namespace just once.
Revision Changes Path
1.29 +4 -0 xml-xindice/status.xml
Index: status.xml
===================================================================
RCS file: /home/cvs/xml-xindice/status.xml,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- status.xml 6 Feb 2004 13:38:30 -0000 1.28
+++ status.xml 7 Feb 2004 19:34:20 -0000 1.29
@@ -60,6 +60,10 @@
<changes>
<release version="1.1b4-dev" date="February 6 2004">
+ <action dev="VG" type="fix">
+ In results of the queries like "//*", declare
+ http://xml.apache.org/xindice/Query namespace just once.
+ </action>
<action dev="VG" type="update">
Lexus, XUpdate implementation, updated to the current CVS
version
(20040205).
1.18 +17 -6
xml-xindice/java/src/org/apache/xindice/xml/dom/ElementImpl.java
Index: ElementImpl.java
===================================================================
RCS file:
/home/cvs/xml-xindice/java/src/org/apache/xindice/xml/dom/ElementImpl.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- ElementImpl.java 25 Dec 2003 03:48:10 -0000 1.17
+++ ElementImpl.java 7 Feb 2004 19:34:20 -0000 1.18
@@ -129,7 +129,7 @@
} else {
loaded = true;
}
-
+
try {
if (data != null) {
DocumentImpl doc = (DocumentImpl) getOwnerDocument();
@@ -159,10 +159,13 @@
return symbolID;
}
+ /**
+ * Add "src" and "col" attributes in [EMAIL PROTECTED]
NodeSource#SOURCE_NS} namespace.
+ */
public void expandSource() {
NodeSource src = getSource();
if (src != null) {
- final String prefix = sourcePrefix("src");
+ final String prefix = sourcePrefix("src", NodeSource.SOURCE_NS);
setAttribute(XMLNS_PREFIX + ":" + prefix, NodeSource.SOURCE_NS);
setAttribute(prefix + ":" + NodeSource.SOURCE_COL,
src.getCollection().getCanonicalName());
@@ -173,7 +176,11 @@
}
}
- private String sourcePrefix(final String candidatePrefix) {
+ /**
+ * Choose unique prefix for a namespace.
+ * Reuse existing prefix if namespace is already defined.
+ */
+ private String sourcePrefix(final String candidatePrefix, final String
nsuri) {
Element element = this;
HashSet prefixes = new HashSet();
while (element != null) {
@@ -182,7 +189,11 @@
final Attr a = (Attr) nm.item(i);
final String name = a.getNodeName();
if (name.startsWith("xmlns:")) {
- prefixes.add(name.substring(6));
+ final String prefix = name.substring(6);
+ if (nsuri.equals(a.getValue())) {
+ return prefix;
+ }
+ prefixes.add(prefix);
}
}
element = element.getParentNode().getNodeType() == ELEMENT_NODE
? (Element) element.getParentNode() : null;