[XSL XHTML]   entity problem

T

Tjerk Wolterink

In XHTML the entity nbsp stands for  

A normal space like " " is also displayed as an normal space,
but multiple spaces like " " are interpreted as 1 space in the
xhtml page.
So there comes the   in handy: with "  " you have two
spaces. So with the nbsp entity you can create multiple spaces (in the display).

Now i have an xml file with   entities,
i put it in an xsl-file that know xhtml entities.
But the output of this:

"  "

is translated (correctly) to:

" "

But now the whole point of the   entity in xhtml is gone!!
How do you solve this problem
 
R

Richard Tobin

  is defined as   which is a reference to the
non-breaking-space character. If you have a way to type it in, you
can perfectly well use that character directly instead of using an
entity or reference, and it is different from an ordinary space
character even though it may look the same when you look at the file.
"  "

is translated (correctly) to:

" "

So those blank spaces between the quotes should be perfectly good
non-breaking-space characters, not ordinary spaces, and should work
just like   references in XHTML.

-- Richard
 
T

Tjerk Wolterink

Richard said:
  is defined as   which is a reference to the
non-breaking-space character. If you have a way to type it in, you
can perfectly well use that character directly instead of using an
entity or reference, and it is different from an ordinary space
character even though it may look the same when you look at the file.




So those blank spaces between the quotes should be perfectly good
non-breaking-space characters, not ordinary spaces, and should work
just like   references in XHTML.

-- Richard

so you mean that " " and " " can be different characters?
 
R

Richard Tobin

Tjerk Wolterink said:
so you mean that " " and " " can be different characters?

Yes, Unicode has several different characters that may look like that.

-- Richard
 
T

Tjerk Wolterink

Richard said:
Yes, Unicode has several different characters that may look like that.

-- Richard

i have foudn a smart solution:

<!DOCTYPE stylesheet [
<!ENTITY nbsp
"<xsl:text disable-output-escaping='yes'>&amp;nbsp;</xsl:text>">
]>

now it works
 
M

Martin Honnen

Tjerk said:
i have foudn a smart solution:

<!DOCTYPE stylesheet [
<!ENTITY nbsp
"<xsl:text disable-output-escaping='yes'>&amp;nbsp;</xsl:text>">
]>

Use it if your circumstances allow it and require it but be aware that
disable-output-escaping is an optional feature that is not supported by
every XSLT processor respectively output mode, for instance when the
result of the transformation is a tree that is not serialized then it
usually doesn't work.
 
T

Tjerk Wolterink

Richard said:
It should have worked anyway!

-- Richard

i know what you mean, maybe the output document is valid and the " " is really a
non breaking space. the fact is that browsers like IE do not treat it like that.

But anyways, thanks for your help
 
J

Jukka K. Korpela

Tjerk Wolterink said:
i know what you mean, maybe the output document is valid

How would validity be relevant here? (I suspect you are using the word
"valid" in some non-XML and not-so-well defined meaning.)
and the " " is really a non breaking space.

No, what you have typed here is surely a normal space. You could not
have included a no-break space (that's the term, btw) into your
posting, since your message headers specify 7bit transfer.

I wonder why you use &nbsp; in the first place. Why don't you simply
write no-break spaces in whatever encoding you are using? If your
authoring tool does not let you type them easily, maybe you need a
better tool, or to find out how to define keyboard macros in the tool
you are using, or something. Even in Notepad you can type no-break
spaces. (Typing Alt 0160 is not very convenient, but it's comparable to
typing the six characters &nbsp;.)
the fact is that browsers like IE
do not treat it like that.

The fact is that browsers, even IE, treat the no-break space exactly as
the &nbsp; or   reference when processing an HTML document. You
have done something wrong. In the absence of specific information, such
as a URL of a demo page, it is impossible to say what went wrong.
 
R

Richard Tobin

The fact is that browsers, even IE, treat the no-break space exactly as
the &nbsp; or   reference when processing an HTML document. You
have done something wrong. In the absence of specific information, such
as a URL of a demo page, it is impossible to say what went wrong.

If you want to try to track down the problem, you could try setting
the output encoding of your stylesheet to ascii (using the encoding
attribute of the xsl:eek:utput element). The processor will then have to
use a character reference to output any non-breaking spaces (since
they aren't in the ascii character set), so you will be able to see
them more easily.

-- Richard
 
T

Tjerk Wolterink

Jukka said:
How would validity be relevant here? (I suspect you are using the word
"valid" in some non-XML and not-so-well defined meaning.)

yes you are right, i just meant that the " " really is a non-breaking space,
(ok not in this post but you know what i mean)
No, what you have typed here is surely a normal space. You could not
have included a no-break space (that's the term, btw) into your
posting, since your message headers specify 7bit transfer.
duh


I wonder why you use &nbsp; in the first place. Why don't you simply
write no-break spaces in whatever encoding you are using? If your
authoring tool does not let you type them easily, maybe you need a
better tool, or to find out how to define keyboard macros in the tool
you are using, or something. Even in Notepad you can type no-break
spaces. (Typing Alt 0160 is not very convenient, but it's comparable to
typing the six characters &nbsp;.)




The fact is that browsers, even IE, treat the no-break space exactly as
the &nbsp; or   reference when processing an HTML document. You
have done something wrong. In the absence of specific information, such
as a URL of a demo page, it is impossible to say what went wrong.

ok maybe that is the case, i think i had some problem in the output-encoding,
but anyways i solved the problem with something completely different.
 
D

David Carlisle

Tjerk Wolterink said:
Richard said:
Yes, Unicode has several different characters that may look like that.

-- Richard

i have foudn a smart solution:

<!DOCTYPE stylesheet [
<!ENTITY nbsp
"<xsl:text disable-output-escaping='yes'>&amp;nbsp;</xsl:text>">
]>

now it works


Use of disable-output-escaping almost always implies some kind of design
error in the stylesheet. It is also explictly non-portable and an
optional feature that may be ignored by the XSLT engine.
For example it will always be ignored in mozilla family browsers and
it will be ignored (for the same reason) in MSXML if outputting to a DOM
rather than to a character string.

You should just use & # 1 6 0 ; directly in the stylesheet.


David
 
P

Peter Flynn

Tjerk said:
In XHTML the entity nbsp stands for  

A normal space like " " is also displayed as an normal space,
but multiple spaces like " " are interpreted as 1 space in the
xhtml page.
So there comes the &nbsp; in handy: with "&nbsp;&nbsp;" you have two
spaces. So with the nbsp entity you can create multiple spaces (in the
display).

The moment you think you need to do this usually means there is a design
problem somewhere.
Now i have an xml file with &nbsp; entities,
i put it in an xsl-file that know xhtml entities.
But the output of this:

"&nbsp;&nbsp;"

is translated (correctly) to:

" "

But now the whole point of the &nbsp; entity in xhtml is gone!!

Yes, it's mean to be. That's what parsing does, among other things:
it replaces entity references with the referents.
How do you solve this problem

Declare <!ENTITY nbsp "&#160;"> in your DTD or internal subset.
Now your &nbsp;s will be output as &nbsp;s

///Peter
 

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

Forum statistics

Threads
473,995
Messages
2,570,233
Members
46,820
Latest member
GilbertoA5

Latest Threads

Top