Stefan, Below is copied and pasted from a Java class I use:
/** Applying a technique suggested by James Strachan of dom4j.org to overcome the default namespace/XPath issue. XPath maps namespaces to elements based upon the namespaceURI, not the prefix in the source document. When there is a default prefix, i.e., "xmlns=<namespaceURI>", each non-prefixed element STILL matches the URI, but there is no prefix available for use in XPath expressions. So we tell XPath to map the same namespaceURI to a non-"" prefix, which we then use in our XPath expressions. XPath will match the URIs, and find the non-prefixed elements in the source document as a result. Ex: In source document: <tgML xmlns="http://www.aigtrading.com/tgML/2002/07" > <trade ID="309430320"/> <.../> </tgML> By defining an XPath-only prefix, "tg" for the same namespace, I can match: elem.selectNodes("/tg:tgML/tg:trade/@ID") to get the value of the ID attribute. */ public static Document getDom4jDocument ( String xml, String xPathPrefix ) throws DocumentException { // register prefixes with my factory Map uris = new HashMap(); // don't allow "default" prefix if (xPathPrefix == null || xPathPrefix.equals("")) xPathPrefix = "tg"; uris.put (xPathPrefix, "http://www.aigtrading.com/tgML/2002/07"); // create the actual Document return getDocFromString (xml, uris); } /** * * @param xml String containing any form of XML for which a document is desired, but without any * namespace. * @return org.dom4j.Document * @throws org.dom4j.DocumentException */ public static Document getNoNamespaceDocument (String xml) throws DocumentException { return getDocFromString (xml, null); } /** * * @param xml String containing any form of XML for which a document is desired. * @param uris List of URIs that will be used as namespace attributes. * @return org.dom4j.Document * @throws org.dom4j.DocumentException */ protected static Document getDocFromString (String xml, Map uris) throws DocumentException { // create my own factory DocumentFactory factory = new DocumentFactory(); // maybe add namespace nodes if (uris != null) factory.setXPathNamespaceURIs (uris); // create a string Reader wrapped around the String parameter StringReader source = new StringReader (xml); // now parse and return a document using my factory SAXReader reader = new SAXReader(); reader.setDocumentFactory (factory); return reader.read (source); } Stefan Lischke <[EMAIL PROTECTED]> To: Sent by: cc: [EMAIL PROTECTED] [EMAIL PROTECTED] Subject: [dom4j-user] selectingNodes with xpath and namespace ceforge.net 11/21/2003 01:43 PM Hi, I want to select a singleNode by Xpath with Node member = this.e.selectSingleNode("/association/member[topicRef/@xlink:href=' #TMSWSS03']"); It worked, when there was no namespace xlink for the @href attribute, but with xlink namespace it does not work. How can i specifiy a namespace when selecting a single node. this.e.asXML() is as follow: ------------------------------------------------------------------------------------------------------------------- <association xmlns:exist="http://exist.sourceforge.net/NS/exist" exist:id="[EMAIL PROTECTED]" exist:source ="/db/xtm4xmldb/ivsData.xtm/assocs/[EMAIL PROTECTED]" id="[EMAIL PROTECTED]"> <instanceOf> <topicRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="ivsTypes.xtm#VERANSTALTET"> </topicRef> </instanceOf> <member> <roleSpec> <topicRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="ivsTypes.xtm#PERSON"> </topicRef> </roleSpec> <topicRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="[EMAIL PROTECTED]"> </topicRef> </member> <member> <roleSpec> <topicRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="ivsTypes.xtm#VERANSTALTUNG"> </topicRef> </roleSpec> <topicRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href=" #TMSWSS03"> </topicRef> </member> </association> ------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ _______________________________________________ dom4j-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/dom4j-user ------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ _______________________________________________ dom4j-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/dom4j-user