[jdom-interest] Problems outputting HTML

Robert Koberg rob at koberg.com
Tue Apr 27 13:52:02 PDT 2004


Jason Hunter wrote:

>> <script language="JavaScript" 
>> src="http://www.newatlanta.com/shared/us.js"></script>
>>
>> Although the body of this tag is empty, it is expanded because, if it 
>> is not, then
>> some browsers won't import the script library.
> 
> 
> I've hit that browser bug too.  I think adding a space of text content 
> between the script tags is also helpful on some browsers, and a 
> convenient workaround to the issue you have here.

When outputting XHTML I usually do:

<script>//</script>

A couple of others to watch out for are:

<title/> -- cause the page not to display

<textarea/> -- cause the rest of the page to be in the textarea.

(see XSL below)


> 
>> It appears that unless I set expandEmptyElements(true), then XMLOutputter
>> will collapse empty elements (although this is not stated in the 
>> Javadocs).
>> (It seems like there should be an collapseEmptyElements(boolean flag) 
>> since
>> <tag></tag> is still well-formed XML..)
> 
> 
> Semantically the expanded and unexpanded forms are identical.  You're 
> just trying to work around browser bugs.  We have the 
> expandEmptyElements() option specifically for this.
> 
>> Not a problem...until <br/> tags are expanded. The browser interprets 
>> both
>> <br> and <br/> as line breaks!
> 
> 
> It's <br> and </br> actually, which a decent browser shouldn't see as 
> two breaks.  Argh.


You can run an identity transformation before it goes to tyhe browser:

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns="http://www.w3.org/1999/xhtml">

   <xsl:output omit-xml-declaration="yes"
     doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
 
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
     encoding="UTF-8"
     indent="no"
     method="xml"/>

<!--
   <xsl:output
     encoding="UTF-8"
     indent="no"
     method="html"
     doctype-public="-//W3C//DTD HTML 4.01//EN"/>
-->

   <xsl:template match="html">
     <html xmlns="http://www.w3.org/1999/xhtml">
       <xsl:apply-templates/>
     </html>
   </xsl:template>

   <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="@*"/>
       <xsl:apply-templates/>
     </xsl:copy>
   </xsl:template>

   <xsl:template match="textarea">
     <xsl:copy>
       <xsl:apply-templates select="@*"/>
       <xsl:text> </xsl:text>
       <xsl:apply-templates/>
     </xsl:copy>
   </xsl:template>

</xsl:stylesheet>


> 
>> One solutions was proposed over a year ago (sublass XMLOutputter and 
>> implement an HTMLOutputter...)
>> http://www.servlets.com/archive/servlet/ReadMsg?msgId=335507&listName=jdom-interest 
>>
>>
>> Is this still the case? Are there any other solutions?
> 
> 
> No one's bothered with an HTMLOutputter yet.  For you adding a space in 
> the script element and leaving empties unexpanded would fix the issue.
> 
> -jh-
> 
> _______________________________________________
> 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