RE: [xsl] How to select nodes with explicitly set default namespace - DOM4J

Subject: RE: [xsl] How to select nodes with explicitly set default namespace - DOM4J
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 23 Mar 2005 15:54:31 -0000
In XPath 1.0, if you want to select an element that's in a namespace, you
need to bind a prefix to that namespace and use a prefixed QName in the path
expression. The fact that the namespace is the default namespace in the
source document makes no difference.

Michael Kay
http://www.saxonica.com/



> -----Original Message-----
> From: Barbara Worwood [mailto:bworwood@xxxxxxxxxxxxx] 
> Sent: 23 March 2005 15:26
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] How to select nodes with explicitly set 
> default namespace - DOM4J
> 
> 
> Hi,
> 
> I am having a problem selecting nodes that are part of a 
> default namespace. 
> The xml format cannot be modified as it is part of an NHS UK standard.
> 
> For Example:  xmlns=="urn:hl7-org:v3"  is the default 
> namespace, though a 
> call to selectSingleNode from the root element will not 
> return anything for 
> me. See code below...
> 
> ==============================================================
> =========
> ==============================================================
> =========
> <?xml version="1.0" encoding="UTF-8" ?>
> <!-- The element below is the content of the first payload 
> container -->
> <PRSC_IN080000UK06 xmlns="urn:hl7-org:v3" 
> xmlns:fo="http://www.w3.org/1999/XSL/Format"; 
> xmlns:voc="urn:hl7-org:v3/voc"xmlns:xsi="http://www.w3.org/200
> 1/XMLSchema-instance" 
> xsi:schemaLocation="urn:hl7-org:v3../Schemas/PRSC_IN080000UK06.xsd">
> <id root="A6C66142-1DD1-11B2-9062-8F5E91AA2DD7"/>
> <creationTime value="20040913030014" />
> <versionCode code="V3NPfIT2.0" />
> <interactionId root="2.16.840.1.113883.2.1.3.2.4.12" 
> extension="PRSC_IN080000UK06" />
> <processingCode code="P" />
> <processingModeCode code="T" />
> <acceptAckCode code="NE" />
> <communicationFunctionRcv>
> <device>
> <id root="2.16.840.1.113883.2.1.3.2.4.10" extension="RJR-0000217" />
> </device>
> </communicationFunctionRcv>
> <communicationFunctionSnd>
> <device>
> <id root="2.16.840.1.113883.2.1.3.2.4.10" extension="T141A-0000202" />
> </device>
> </communicationFunctionSnd>
> <ControlActEvent>
> <subject>
> <RequestAvailableSlots classCode="SPLY" moodCode="RQO">
> <id root="A6C66142-1DD1-11B2-9062-8F5E91AA2DD7" />
> <effectiveTime>
> <low value="200411090000" inclusive="true" />
> <high value="200412100000" inclusive="false" />
> </effectiveTime>
> <location typeCode="LOC">
> <clinic classCode="SDLOC">
> <id root="2.16.840.1.113883.2.1.3.2.4.2" extension="DAVID" 
> displayable="true" />
> </clinic>
> </location>
> </RequestAvailableSlots>
> </subject>
> </ControlActEvent>
> </PRSC_IN080000UK06>
> ==============================================================
> =========
> ==============================================================
> =========
> 
> /* Code */
> InputStream is = 
> CabCfg.class.getClassLoader().getResourceAsStream("testdoc.xml");  // 
> testdoc.xml is doc above
> Document doc = new SAXReader().read(is);
> Element el = doc.getRootElement();
> el.add(new Namespace("", "urn:hl7-org:v3"));
> Element interIdEl = (Element)(el.selectSingleNode("//interactionId"));
> ==============================================================
> =========
> ==============================================================
> =========
> 
> interIdEl returns null.
> 
> 
> Any help with this would be greatly appreciated!
> 
> Thanks,
> Barbara 

Current Thread