XML Transformation tags do JSTL

3 respostas
Daniel_Quirino_Olive

Estou com um probleminha muito chato usando JSTL (trabalho de faculdade, sabe como é). A questão é a seguinte: eu preciso pegar um XML (resultado de uma Action do webwork) e aplicar uma transformação sobre ele para mostrar como XHTML para o usuário.
Estou usando o seguinte pedaço de código no meu JSP:

<%@ taglib uri="c" prefix="c" %>
<%@ taglib uri="x" prefix="x" %>
<c:import var='bookmarks' url='getItemsAsXML.action'/>
<c:import var='stylesheet' url='stylesheet.xsl'/>
<x:transform xml='bookmarks' xslt='stylesheet' />

Tudo configurado, bonitinho. Mas, na hora de invocar a operação:

javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: Document root element is missing.

Esta bela exception pula no meu colo. Alguém tem alguma dica de como fazer este tipo de transformação funcionar?

p.s.: já tentei colocar a diretiva <?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> no meu XML, mas também não rola.

3 Respostas

smota

O seu xml gerado pela action tem um documentRoot? Mostra um pedacinho dele e do xsl pra nois ve

Daniel_Quirino_Olive

Opa, tem sim, Samuel.

XSL:

<?xml version="1.0" encoding="ISO-8859-1"?>
&lt;xsl:stylesheet version="1.0" xmlns : xsl="http://www.w3.org/1999/XSL/Transform"&gt;
&lt;xsl:template match="/bookmark"&gt;
    &lt;html&gt;
    &lt;head&gt;&lt;title&gt;Meus bookmarks&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
    
    &lt;center&gt;&lt;h3&gt;Meus bookmarks&lt;/h3&gt;&lt;/center&gt;    
    &lt;table border="0"&gt;
        &lt;tr bgcolor="#c0c0c0"&gt;
            &lt;td&gt;<b>Descrição</b>&lt;/td&gt;
            &lt;td&gt;<b>URL</b>&lt;/td&gt;
            &lt;td&gt;<b>Tags</b>&lt;/td&gt;
        &lt;/tr&gt;
        
        &lt;xsl:for-each select="usp.hipermidia.nutricious.model.Item"&gt;
                &lt;tr bgcolor="white"&gt;    
                &lt;td&gt;&lt;xsl:value-of select="description"/&gt;&lt;/td&gt;
                &lt;td&gt;&lt;xsl:value-of select="title"/&gt;</a>&lt;/td&gt;                
                &lt;td&gt;
                	&lt;xsl:for-each select="tags"&gt;
                		&lt;tr&gt;
                			&lt;td&gt;&lt;xsl:value-of select="string"/&gt;&lt;/td&gt;
                		&lt;/tr&gt;
                	&lt;/xsl:for-each&gt;
                &lt;/td&gt;
                &lt;/tr&gt;
        &lt;/xsl:for-each&gt;
    &lt;/table&gt;
    
    &lt;/body&gt;
    &lt;/html&gt;
&lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;

XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
&lt;bookmark&gt;
    &lt;usp.hipermidia.nutricious.model.Item&gt;
         &lt;title/&gt;
         &lt;description/&gt;
         &lt;url/&gt;
         &lt;tags/&gt;
    &lt;/usp.hipermidia.nutricious.model.Item&gt;
    &lt;usp.hipermidia.nutricious.model.Item&gt;
         &lt;title/&gt;
         &lt;description/&gt;
         &lt;url/&gt;
         &lt;tags/&gt;
    &lt;/usp.hipermidia.nutricious.model.Item&gt;
    &lt;usp.hipermidia.nutricious.model.Item&gt;
         &lt;title/&gt;
         &lt;description/&gt;
         &lt;url/&gt;
         &lt;tags/&gt;
    &lt;/usp.hipermidia.nutricious.model.Item&gt;
&lt;/bookmark&gt;

(sim, eu estou fazendo uma versãozinha imbecil do delicious como trabalho de faculdade)

Daniel_Quirino_Olive

Problema resolvido. O imbecil aqui estava referenciando a URL errado. Dumb!

Criado 2 de dezembro de 2004
Ultima resposta 2 de dez. de 2004
Respostas 3
Participantes 2