You are viewing a plain text version of this content. The canonical link for it is here.
Posted to taglibs-user@tomcat.apache.org by Tim Stephenson <ts...@tibco.com> on 2009/04/16 01:25:57 UTC
How to specify namespace context for jstl x tags?
> Hi,
>
> I have a feeling this must be a common problem but I'm afraid I can't
> find the answer...
>
> I am trying to use the JSTL x tags in v1.1.2 of the 'standard' tag
> library. Something like this:
> <c:import url="WorkItem.xml" var="url" />
> <x:parse xml="${url}" var="doc" />
> <x:out select="$doc/ap:ActionResult" />
>
> The problem is the namespace in my XPath query and it results in the
> error:
> com.sun.org.apache.xpath.internal.domapi.XPathStylesheetDOM3Exception:
> Prefix must resolve to a namespace: ap
>
> Fair enough. But how can I tell the x:out tag about the namespace?
>
> In Java I would write a NamespaceContext implementation and supply
> that to the XPath engine. Something like this:
> NamespaceContext ctx = new NamespaceContext() {
> public String getNamespaceURI(String prefix) {
> String uri;
> if (prefix.equals("ap"))
> uri = "http://example.com/ap";
> else
> uri = null;
> return uri;
> }
>
> // Dummy implementation - not used!
> public Iterator getPrefixes(String val) {
> return null;
> }
>
> // Dummy implemenation - not used!
> public String getPrefix(String uri) {
> return null;
> }
> };
>
> // Now the XPath expression
> String xpathStr = "/ap:ActionResult";
> XPathFactory xpathFact = XPathFactory.newInstance();
> XPath xpath = xpathFact.newXPath();
> xpath.setNamespaceContext(ctx);
> String result = xpath.evaluate(xpathStr, doc);
>
> In JSTL it seems there is no equivalent? Is there any 'under the
> radar' way to supply the namespace context to the tag?
>
> Seems a real shame to have to write a new taglib just to support this...
> thanks for your suggestions,
> Tim
>
---------------------------------------------------------------------
To unsubscribe, e-mail: taglibs-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: taglibs-user-help@jakarta.apache.org