[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Where did my tabs go? Trying to understand xsl:value-o
Hi List!
I do a lot of XML-2-TEXT processing, of which some are tab-delimited based. I have some troubles understanding what <xsl:value-of /> (and other constructs) do with tab characters, when you explicitly do not want them to be normalized to spaces. Here's what I trialled and errorred: Two entities: <!ENTITY tab "	" > <!ENTITY separator "" > A character map: <xsl:character-map name="separator"> <xsl:output-character character="&separator;" string="&tab;"/> </xsl:character-map> An applied output method: <xsl:output method="text" indent="no" use-character-maps="separator" /> A variable: <xsl:variable name="tabchar" select="'	'" /> With the following statements gives: (a tab) <xsl:value-of select="$tabchar" /> (a tab) <xsl:value-of select="'	'" /> (no tab) <xsl:value-of select="'&tab;'" /> (no tab) <xsl:value-of select="'&separator;'" /> (tabs) <xsl:value-of select="somenode" separator="{$tabchar}" /> (tabs) <xsl:value-of select="somenode" separator="	" /> (no tabs) <xsl:value-of select="somenode" separator="{&tab;}" /> (no tabs) <xsl:value-of select="somenode" separator="{&separator;}" /> Basically the same story applies to other instructions, like copy-of, <xsl:text> etc. I was under the impression that it didn't matter whether you had a numerical entity reference of something, or a named entity reference. If I replace the tab mapping for something different, say " ", the spaces are kept. Or for "|||", the string will be kept. Though I can resolve this by using a global variable, or intersperse my code everywhere with xsl:text, things go worse when using functions etc returning strings with tabs. Mostly, they are lost somewhere along the process. So my hope was on using a character map, so that I can freely substitute the separator in the end with a tab character. It works for everything, including a bunch of spaces, but not for tab characters With newlines, btw, it is even a bit different: it works when putting the numerical character reference into the character map (the eqv. does not work for tabs), it does not work if I put the named entity inside the character map. I am sure I missed a theory lesson somewhere. And I am not so sure anymore if this has a nice solution. If someone can enlighten me, I would be most thankful. I have been working around this issue with odd solutions for weeks now. Cheers -- Abel Braaksma http://www.nuntia.com NB: I have tried the character map literal string with a literal tab, a numerical char reference and a named char reference, all the same results.
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|