Xalan 2.7.0 output method="html" - empty HTML tags

X

Xh

Hi All,

I have problems with generating valid HTML output

there are few HTML elements that i don't what to output as <tagname/>
but as <tagname></tagname> but Xalan keeps generating them as
<tagname/>

there are few really annoying situations where adding   to some
HTML elements is necessary:

<textarea class="textarea" name="{concat($textarea/ancestor::form/@id,
@id)}">
 
</textarea>

otherwise FF produces very, very strange code when displaying:
<textarea .... />

but when I add   user sees this space in textarea field...

or in this situation:

<xsl:template name="generateHelp">
<xsl:param name="help"/>
<xsl:param name="formId"/>
<xsl:param name="fieldId"/>
<span id="{concat($formId, '_', $fieldId,'_msg')}" style="font-
weight: bold; color: red;">
</span>
<label for="{concat($formId, '_', $fieldId)}">
<xsl:value-of select="$help"/>
</label>
</xsl:template>

the <span> element is generated as <span {attributes...} />

when i use JavaScript innerHTML for span id FireFox swallows
everything as innerHTML including
the <label> element

any idea how to solve this?

or I should always use the   space entity?

best regards
Åukasz
 
J

Joe Kesselman

Xh said:
there are few HTML elements that i don't what to output as <tagname/>
but as <tagname></tagname> but Xalan keeps generating them as
<tagname/>

there are few really annoying situations where adding   to some
HTML elements is necessary:

<textarea class="textarea" name="{concat($textarea/ancestor::form/@id,
@id)}">
 
</textarea>

otherwise FF produces very, very strange code when displaying:
<textarea .... />

but when I add   user sees this space in textarea field...

or in this situation:

<xsl:template name="generateHelp">
<xsl:param name="help"/>
<xsl:param name="formId"/>
<xsl:param name="fieldId"/>
<span id="{concat($formId, '_', $fieldId,'_msg')}" style="font-
weight: bold; color: red;">
</span>
<label for="{concat($formId, '_', $fieldId)}">
<xsl:value-of select="$help"/>
</label>
</xsl:template>

the <span> element is generated as <span {attributes...} />

when i use JavaScript innerHTML for span id FireFox swallows
everything as innerHTML including
the <label> element

any idea how to solve this?

or I should always use the   space entity?

best regards
Åukasz
 
J

Joe Kesselman

Xh said:
>there are few HTML elements that i don't what to output as <tagname/>
>but as <tagname></tagname> but Xalan keeps generating them as
><tagname/>

Shouldn't be happening necessary if you're really specifying HTML output
mode, and if you're letting Xalan handle the serialization. (If you're
using a SAXResult rather than a StreamResult, maintaining this
distinction is your responsibility).

Can you provide a minimal example that demonstrates the problem?



but when I add   user sees this space in textarea field...

If you don't want the user to see a space, don't use a Required Blank
character as the content; if you use ordinary spaces/linebreaks HTML
will probably discard them.
 
J

Joe Kesselman

Joe said:
If you don't want the user to see a space, don't use a Required Blank
character as the content; if you use ordinary spaces/linebreaks HTML
will probably discard them.

(BTW, to make sure that space is output to the HTML file rather than
being dropped, you'll probably want to wrap it in an <xsl:text>. Which
is generally a good practice for literal text even when it isn't
entirely necessary.)
 
X

Xh

Hi Joe!

(BTW, to make sure that space is output to the HTML file rather than
being dropped, you'll probably want to wrap it in an <xsl:text>. Which
is generally a good practice for literal text even when it isn't
entirely necessary.)

I'd like to provide an example but it is a bit complicated because I
use it my XML + XSLT in JBossAS

but <xsl:text> </xsl:text> is doing great job and so far I overcame
all
inconveniences

best regards
Åukasz
 
S

Simon Brooke

Xh said:
Hi All,

I have problems with generating valid HTML output

there are few HTML elements that i don't what to output as <tagname/>
but as <tagname></tagname> but Xalan keeps generating them as
<tagname/>

Tag minimisation. One of the real experts will be along in a moment to tell
you how to prevent this properly, but the following works:

<div class="othernews">
<xsl:comment> prevent tag minimisation of DIV -
Internet Explorer barfs </xsl:comment>
<xsl:apply-templates select="feed"/>
</div>

If '<xsl:apply-templates select="feed"/>' in the above generates nothing
(e.g., if there are no 'feed' elements) the XML would naturally contain an
empty element which would be tag minimised on serialisation (printing to
thee and me). So you put in the xsl:comment essentially to force the tag
to have content, so that it can't be minimised. Don't think this solution
will work for text areas, though - you may have to generate some default
text.

--
(e-mail address removed) (Simon Brooke) http://www.jasmine.org.uk/~simon/
;; Skill without imagination is craftsmanship and gives us
;; many useful objects such as wickerwork picnic baskets.
;; Imagination without skill gives us modern art.
;; Tom Stoppard, Artist Descending A Staircase
 
A

Andy Dingley

Shouldn't be happening necessary if you're really specifying HTML output
mode,

I've been getting this recently too. Unchanged application code,
"maintenance" update of libraries and before I know it, I've got "/>"
in my HTML 8-(
Can you provide a minimal example that demonstrates the problem?

Nope. 8-( It's a vast pile of Ant (a Java-ish build tool) with the
<xslt> task in it, grabbing the nearest available Trax processor. I
might get to sort it out some time around the next millenium.
 
J

Joseph Kesselman

Andy said:
Nope. 8-(

Unfortunately, that limits the amount of volunteer debugging assistance
you're going to get.. If I think of anything I'll let you know.

I presume you've asked this on Xalan's own mailing list, since if there
really has been a behavioral change that's where you're most likely to
find the folks who know what it was.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,817
Latest member
DicWeils

Latest Threads

Top