I have found what my problem is. It is to do with my servlet and NOT Xindice. I call the method which adds the record to the database TWICE. So basically there are two records stored in the database.
Is there a way in which Xindice reports an exception if the same records is being added twice; i.e. primary key in relational databases? Thanks for your help Gul Quoting Gul Akbar <[EMAIL PROTECTED]>: > Todd, > > I actually use a Java servlet to access the database. The code below is > what I > used (I found this code on the website): > > ----------------------------------- > Collection col = null; > > try { > String driver = "org.apache.xindice.client.xmldb.DatabaseImpl"; > Class c = Class.forName(driver); > > Database database = (Database) c.newInstance(); > DatabaseManager.registerDatabase(database); > col = DatabaseManager.getCollection("xmldb:xindice:///db/phonebook"); > > String xpath = "//phonebook[name='Tom' and number='07989270142']"; > > > XPathQueryService service = (XPathQueryService) col.getService > ("XPathQueryService", "1.0"); > ResourceSet resultSet = service.query(xpath); > ResourceIterator results = resultSet.getIterator(); > > while (results.hasMoreResources()) { > Resource res = results.nextResource(); > String outcome = (String) res.getContent(); > System.out.println(outcome) > }//while > > }//try > catch (XMLDBException e) { > System.err.println("XML:DB Exception occured " + e.getMessage()); > }//catch > catch (Exception ie) { > System.err.println("XML:DB Exception occured " + ie.getMessage()); > }//catch > > ----------------------------------- > > I use this in a class which my servlet calls. It works fine in some > respect. I > can search for everything in the database, and it returns null if no > records > have been found. However, using the OR operator, it returns the same > record > twice. > Can you see what the problem might be? > > > Thanks > Gul > > > > > Quoting Todd Byrne <[EMAIL PROTECTED]>: > > > Hi Gul, > > > > I ran your query from the command line on your sample document in a > > test > > database and it only returned one record like I expected. Are you > > sure > > this record isn't in more then one document or repeated in your > > document? > > > > here is the command I ran: xindice xpath -c /db/test -q > > "//phonebook[name='Tom' or number='07989270142']" > > > > and my output: > > <?xml version="1.0"?> > > <phonebook xmlns:src="http://xml.apache.org/xindice/Query" > > src:col="/db/test" src:key="test"> > > <name>Tom</name> > > <number>07989270142</number> > > </phonebook> > > > > I am using version 1.0 still. > > > > Maybe you can discribe your problem in a tad more depth and I would > be > > glad to continue to help. > > > > Todd Byrne > > > > On Thu, 2002-12-05 at 09:58, Gul Akbar wrote: > > > Hello, > > > > > > I have this problem with my XPath Query. > > > > > > //phonebook[ name='Tom' or number='07989270142' ] > > > > > > This returns the same record twice, and I know that there is only > one > > of those > > > records. The XML that is stored: > > > > > > <phonebook> > > > <name>Tom</name> > > > <number>07989270142</number> > > > </phonebook> > > > > > > Can anyone please tell me why this record is being returned twice > when > > I use > > > the boolean operator "OR" (shown in the XPATH above). > > > > > > Thanking you in advance > > > Gul > > > > > > ------------------------------------------------- > > > This mail sent through IMP: webmail.brad.ac.uk > > > > > > > > > > > ------------------------------------------------- > This mail sent through IMP: webmail.brad.ac.uk > ------------------------------------------------- This mail sent through IMP: webmail.brad.ac.uk