You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xindice-dev@xml.apache.org by ks...@apache.org on 2002/07/02 10:03:08 UTC
cvs commit: xml-xindice/java/src/org/apache/xindice/tools/command XPathQuery.java
kstaken 2002/07/02 01:03:07
Modified: java/src/org/apache/xindice/tools XMLTools.java
java/src/org/apache/xindice/tools/command XPathQuery.java
Log:
Adding patch to add namespace support for queries at the command line.
Submitted by: Vanessa Williams
Reviewed by: Kimbro Staken
Revision Changes Path
1.4 +6 -1 xml-xindice/java/src/org/apache/xindice/tools/XMLTools.java
Index: XMLTools.java
===================================================================
RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/tools/XMLTools.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- XMLTools.java 3 May 2002 16:35:11 -0000 1.3
+++ XMLTools.java 2 Jul 2002 08:03:07 -0000 1.4
@@ -114,6 +114,7 @@
public static final String USER = "user";
public static final String PASSWORD = "password";
public static final String AUTO_KEY = "autoKey";
+ public static final String NAMESPACES = "namespaces";
@@ -236,6 +237,8 @@
table.put( VERBOSE, "true");
} else if ( token.equalsIgnoreCase("-y") || token.equalsIgnoreCase("--yes_force") ) {
table.put( FORCE, "yes");
+ } else if ( token.equalsIgnoreCase("-s") || token.equalsIgnoreCase("--namespaces") ) {
+ table.put(NAMESPACES, at.nextSwitchToken());
// Index specific options
} else if ( token.equalsIgnoreCase("-t") || token.equalsIgnoreCase("--type") ) {
table.put( TYPE, at.nextSwitchToken());
@@ -632,6 +635,7 @@
System.out.println(" -q " + "Query string");
System.out.println(" -u " + "Database URI");
System.out.println(" -y " + "Force Deletion process");
+ System.out.println(" -s " + "Semi-colon delimited list of namespaces for query in the form prefix=namespace-uri");
System.out.println(" -t " + "Specify the data type in collection index");
System.out.println(" --pagesize " + "Page size for file pages (default: 4096)");
System.out.println(" --maxkeysize " + "The maximum size for file keys (default: 0=none)");
@@ -670,6 +674,7 @@
System.out.println(" xindice dd -c /db/test -n myxmldocument");
System.out.println(" xindice rd -c /db/test/ocs -f a:\\file.xml -n file.xml");
System.out.println(" xindice xpath -c /db/test/ocs -q test");
+ System.out.println(" xindice xpath -c /db/test -s a=http://somedomain.com/schema.xsd -q /a:foo");
System.out.println();
System.out.println("For more information, please read the Xindice - Tools Reference Guide");
System.out.println();
1.2 +17 -1 xml-xindice/java/src/org/apache/xindice/tools/command/XPathQuery.java
Index: XPathQuery.java
===================================================================
RCS file: /home/cvs/xml-xindice/java/src/org/apache/xindice/tools/command/XPathQuery.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XPathQuery.java 6 Dec 2001 19:33:57 -0000 1.1
+++ XPathQuery.java 2 Jul 2002 08:03:07 -0000 1.2
@@ -60,6 +60,7 @@
*/
import java.util.Hashtable;
+import java.util.StringTokenizer;
import java.io.*;
import org.xmldb.api.modules.*;
@@ -93,6 +94,7 @@
return false;
}
+
String colstring = normalizeCollectionURI( (String)table.get("collection") );
String querystring = (String)table.get("query");
XPathQueryService service = null;
@@ -106,6 +108,8 @@
}
service = (XPathQueryService)col.getService("XPathQueryService","1.0");
+ addNamespaces(service, (String)table.get("namespaces"));
+
ResourceSet resultSet = service.query(querystring);
results = resultSet.getIterator();
@@ -131,6 +135,18 @@
return true;
}
+ private void addNamespaces(XPathQueryService service, String namespacesString) throws XMLDBException {
+ if ((namespacesString != "") && (namespacesString != null)) {
+ StringTokenizer st = new StringTokenizer(namespacesString, "=;");
+ if (st.countTokens() % 2 != 0) {
+ System.out.println("ERROR : mismatched namespace prefixes and uris");
+ return;
+ }
+ while (st.hasMoreTokens()) {
+ service.setNamespace(st.nextToken(), st.nextToken());
+ }
+ }
+ }
}