[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Empty object

Subject: Re: Empty object
From: scott gabelhart <swgabel@xxxxxxxxxxxx>
Date: Wed, 28 Jan 2004 16:17:52 -0500
xsl passthrough
Mike Haarman wrote:

I have attached my xml input file and my stylesheet I am still getting
in my output <OBJECT> </OBJECT> instead of <OBJECT>&nbsp;</OBJECT>.



Scott,


I think what you are missing is the role of an entity as a placeholder,
a name for, something to be textually substituted where the reference
appears in content.  Thus, your & nbsp; *is* appearing in your output as
the character you have defined it to be: a non-breaking space, i.e. &
#xa0; or & #160; (spaces added to prevent munging).

But, since you are no longer referring to an entity in your source
document, the DOCTYPE declaration is no longer necessary.  Or the
content of OBJECT below was changed to facilitate debugging and you
really are receiving & nbsp; in your sources, in which case it is
required.

There is nothing magic about & nbsp; for your HTML output.  The
character designated 160 functions as you expect when rendered by the
browser, holding space, etc.  Indeed, & nbsp; is merely a predefined
entity for HTML which is resolved to the character when processed by a
client browser.  You don't need to make this entity reference appear in
your output for it to function properly.



Obvisouly my OBJECT template is not properly copying my element and
character contents over properly.



Your OBJECT template looks fine; however, it could be rewritten to be more idiomatically XSL and rather more succinct. Rather than a for-each and a test against a hard list of attributes to process, you can apply-templates and select any available attributes, or if only those particular attributes interest you, use select="ALIGN | STYLE | WIDTH | HEIGHT | NAME | TYPE | VALIGN | COLSPAN | ROWSPAN". Using a mode will prevent stepping on any default templates.

The template for processing attributes could look like this:

<xsl:template match="@*" mode="passthrough">
  <xsl:attribute name="translate(name(.),ABCDEFGHIJKLMNOPQRSTUVWXYZ,
abcdefghijklmnopqrstuvwxyz)">
     <xsl:value-of select="."/>
  </xsl:attribute>
</xsl:template



If you absolutely, positively, have to see the entity & nbsp; in your
output, test the text() content of the OBJECT node for & #160; and
output literally:

<xsl:text>&amp;nbsp;</xsl:text>

This entity is already defined for XHTML, I believe.

hth,

Mike


XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list





Mike,

thanks for the reply. Will look into cleaning up my method for finding attributes for a element. But my first priority is to get &nbsp; into my transformed output.
<xsl:text>&amp;nbsp;</xsl:text> when transformed still places &amp;nbsp; into my output when viewed with a browser.


What am I doing wrong?

- Scott

XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.