I'm getting the following error when I try to use the JSTL XML taglib:
/server-side-transform.jsp(51,0)
According to TLD or attribute directive in tag file,
attribute xml does not accept any expressions
I'm looking into the tlds etc, but if anyone knows what this is an can save me some time, it'd be appreciated!
If it helps, I get this error running the example code
<c:set var="xml">
<paragraph>
This document uses <bold>unusual</bold> markup,
which we want to replace with <bold>HTML</bold>.
</paragraph>
</c:set>
<c:set var="xsl">
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="paragraph">
<p><xsl:apply-templates/></p>
</xsl:template>
<xsl:template match="bold">
<b><xsl:value-of select="."/></b>
</xsl:template>
</xsl:stylesheet>
</c:set>
<x:transform xml="${xml}" xslt="${xsl}"/>
in my /server-side-transform.jsp - my taglib directives are:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/xml" prefix="x" %>
and I do have standard.jar and jstl.jar in /WEB-INF/lib.
Use the following code:
Instead of:
I realize this question was asked quite a while ago but I just ran into the same problem. In my case, the example I was following directed me to use:
When I should have been using:
I was staring at the solution for a while before the extra jsp in the uri popped out at me.
Not exactly, you should use
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
to use JSTL 1.1.
Unfortunately the standard.jar files includes many versions of *.tld tag for eg.
so by using
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
you tell the jsp to specifically use JSTL 1.1 which btw fixes the above issue, if this does not work try using
<%@ page isELIgnored="false" %>
which basically tells jsp to evaluate EL.
/srm
change <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> is not right for me. for my project(web-app version="3.0" ) IDE(MyEclipse) I see the configuration file of x.tld.There is the false of select which do not allow the select apperance ${} or <%=%>.So I got a way to cheat in the web.xml.
<jsp-config> <taglib> <taglib-uri>/huang</taglib-uri> <taglib-location>/WEB-INF/x.tld</taglib-location> </taglib> </jsp-config>
add to web.xmldeclare the new taglib-url name "huang" to my jsp file like this:
<%@ taglib prefix="x" uri="/huang" %>
to use
<x:out select="$casexml//案例//${node.name }" />
I can get the right result
I found that the Sun documentation refers to the URI as
http://java.sun.com/jsp/jstl/xml
The tag is now being called correctly, so this was the cause of the problem; however I am getting a NullPointerException in doEndTag()... ho hum
Your code is picking up an "incorrect" version of x-1_0.tld, probably due to classpath issues. I see for instance on my current classpath, I have one version of x-1_0.tld that ALLOWS runtime-expressions ${syntax} in this tag and one that does not. The one in standard.jar does not allow EL expressions, while the one I have in jetty does.