[jdom-interest] TransformerException: stylesheet requires attribute: version
Malachi de AElfweald
malachi at tremerechantry.com
Thu Oct 10 22:52:20 PDT 2002
Further testing also shows this:
with TransformerException being found in rt.jar (xalan.jar is in ext):
E:\malachi\projects>java -cp classes org.eoti.util.xml.XMLFile pandora.xml xml2h
tml.xsl
This line will kill it.
Exception: javax.xml.transform.TransformerConfigurationException: javax.xml.tran
sform.TransformerException: org.jdom.JDOMException: Exception in startElement: s
tylesheet requires attribute: version; Missing or incorrect XSLT Namespace. : st
ylesheet requires attribute: version
with TransformerException being found in xalan.jar (xalan.jar in endorsed):
E:\malachi\projects>java -cp classes org.eoti.util.xml.XMLFile pandora.xml xml2h
tml.xsl
This line will kill it.
SystemId Unknown; Line -1; Column -1; Exception: Exception in startElement: styl
esheet requires attribute: version
BTW: This is JDK1.4
10/10/2002 10:31:53 PM, Malachi de AElfweald <malachi at tremerechantry.com> wrote:
>Just to clarify other issues that might be involved....
>
>The example below givesthis error message:
>This line will kill it.
>Exception: javax.xml.transform.TransformerConfigurationException: javax.xml.tran
>sform.TransformerException: org.jdom.JDOMException: Exception in startElement: s
>tylesheet requires attribute: version; Missing or incorrect XSLT Namespace. : st
>ylesheet requires attribute: version
>
>I tried to narrow the problem down.... it seems that JDOM does not correctly handle
>the xsl namespace, or I am missing something completely obvious... This error occurs
>in non-JDOM stuff when setNamespaceAware(true) is not set... however, with JDOM, I
>don't know how to set that. I verified that the Documents were JDOM documents by
>doing System.out.println("DOC: " + in.getClass()).... Neither the JDOMSource or StreamSource
>worked, but StreamSource stopped before "Missing or incorrect", whether it used new File(args[1])
>or just args[1]....
>
>I also tried (in case the error was the url):
><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XML/Transform">
>-------
> public static void main(String[] args)
> {
> try{
> SAXBuilder builder = new SAXBuilder();
> Document in = builder.build(args[0]);
> Document out = builder.build(args[1]);
> JDOMSource ss = new JDOMSource(out);
>// StreamSource ss = new StreamSource(new File(args[1]));
> System.out.println ("This line will kill it.");
> Transformer transformer = TransformerFactory.newInstance().newTransformer(ss);
> System.out.println ("Didn't get here, did you?");
>// rest ripped out till we fix this part
> }catch (Exception e) {
> System.out.println("Exception: " + e.getMessage());
> System.exit(0);
> }
> }
>-------
>cmdline:
>java -cp classes org.eoti.util.xml.XMLFile pandora.xml xml2html.xsl
>-------
>
>pandora.xml:
><?xml version="1.0" encoding="UTF-8"?>
><?xml-stylesheet type="text/xsl" href="xml2html.xsl"?>
><!-- This file is only intended for testing XMLMod, it isn't live -->
><!-- Author: Malachi de AElfweald -->
><!DOCTYPE pandora SYSTEM "pandora.dtd">
><pandora>
> <service name="httpd" port="80" base="E:\malachi\projects\www" verbose="true">
> <module class="org.eoti.pandora.modules.XMLMod"/>
> <module class="org.eoti.pandora.modules.JavaExecMod"/>
> <module class="org.eoti.pandora.modules.InternalServicesMod"/>
> <module class="org.eoti.pandora.modules.StaticContentMod"/>
> </service>
></pandora>
>
>-------
>xml2html.xsl (found online and added the version="1.0" to the xsl:stylesheet):
><?xml version="1.0"?>
><!-- Generic stylesheet for viewing XML -->
><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
> <!-- This template will always be executed, even if this stylesheet is not run on the document root
-->
> <xsl:template>
> <DIV STYLE="font-family:Courier; font-size:10pt; margin-bottom:2em">
> <!-- Scoped templates are used so they don't interfere with the "kick-off" template. -->
> <xsl:apply-templates select=".">
> <xsl:template><xsl:apply-templates/></xsl:template>
>
> <xsl:template match="*">
> <DIV STYLE="margin-left:2em; color:#003366">
> <<xsl:node-name/><xsl:apply-templates select="@*"/>/>
> </DIV>
> </xsl:template>
>
> <xsl:template match="*[node()]">
> <DIV STYLE="margin-left:2em">
> <SPAN STYLE="color:#003366"><<xsl:node-name/><xsl:apply-templates select="@*"/>>
</SPAN><xsl:apply-templates
>select="node()"/><SPAN STYLE="color:#003366"></<xsl:node-name/>></SPAN>
> </DIV>
> </xsl:template>
>
> <xsl:template match="@*">
> <SPAN STYLE="color:green"> <xsl:node-name/>="<SPAN STYLE="color:red"><xsl:value-of />
</SPAN>"</SPAN>
> </xsl:template>
>
> <xsl:template match="pi()">
> <DIV STYLE="margin-left:2em; color:maroon"><?<xsl:node-name/><xsl:apply-templates
select="@*"/>?></DIV>
> </xsl:template>
>
> <xsl:template match="cdata()"><pre><![CDATA[<xsl:value-of />]]></pre></xsl:template>
>
> <xsl:template match="textNode()"><xsl:value-of /></xsl:template>
> </xsl:apply-templates>
> </DIV>
> </xsl:template>
></xsl:stylesheet>
>-------
>
>
>
>10/10/2002 8:23:11 PM, Malachi de AElfweald <malachi at tremerechantry.com> wrote:
>
>>I am getting the following error.
>>
>>org.jdom.JDOMException: XSLT Transformation failed:
javax.xml.transform.TransformerConfigurationException:
>>javax.xml.transform.TransformerException: javax.xml.transform.TransformerException: stylesheet
requires attribute: version
>>
>>Looking online, everyone said I had to set DocumentFactory.setNamespaceAware(true) to get rid of that
error. But I am not
>>using DocumentFactory, since I just using JDOM's SAXBuilder...
>>
>>My transform routine needs to return a char[] so I can create a CharBuffer to create an NIO
ByteBuffer....
>>
>>Here's my transform routine that is causing the problem...
>>
>> public char[] transform(InputStream stylesheet)
>> throws JDOMException
>> {
>> try{
>> CharArrayWriter output = new CharArrayWriter();
>> StreamSource ss = new StreamSource(stylesheet);
>>
>> Transformer transformer = TransformerFactory.newInstance().newTransformer(ss);
>>//Properties p = transformer.getOutputProperties();
>>//p.store(new FileOutputStream("transformer.prop"), "Transformer Configuration");
>> StreamResult out = new StreamResult(output);
>>// JDOMResult out = new JDOMResult(); // output may not be well-formed XML, so can't use
this?
>> transformer.transform(new JDOMSource(doc), out);
>>
>> output.flush();
>> return output.toCharArray();
>> }catch (Exception e) {
>> throw new JDOMException("XSLT Transformation failed", e);
>> }
>> }
>>
>>
>>Any help would be greatly appreciated...
>>
>>Malachi
>>
>>
>>
>>
>>_______________________________________________
>>To control your jdom-interest membership:
>>http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhost.com
>>
>>
>
>
More information about the jdom-interest
mailing list