Subject: AW: [xsl] substitute with <br/> From: Markus Abt <abt@xxxxxxxx> Date: Thu, 7 Aug 2003 19:03:36 +0200 |
Hello Andrew, Andrew Welch wrote: > >> Hello Andrew, >> >> Andrew Welch wrote: >> >> Hello Alexander, >> >> >> >> this is probably a FAQ. It's also an XML topic not an XSLT one. >> >> >> >> Look to 2.11 "End-Of-Line Handling" in the XML spec. >> > >> >No, it's an html issue. Carriage returns are normalised to a single >> >space (I think) so to recreate their behaviour you need to use <br /> >> ><div /> <p /> etc. >> >> No, the original issue is clearly an XML one, as he wrote: >> "I thought of doing it with entities in the source XML >> like <!ENTITY #13 "<br/>">, but that doesn't work." > >But why was he trying to replace &_#13; with <br />? Because in html >&_#13; doesn't cause a carriage return, a <br /> does. He could learn >all of the possible line endings in xml and still not have the answer. Line endings in HTML have *not* been the question. He already knew that he has to use <br/>. So why do you want to teach him the line endings of HTML? >> >I think your best plan of action is to modify your xml to replace >&_#13; >> >with <br /> (Im assuming that as you can insert entities this >shouldn't >> >be too much trouble). >> This was exactly what Alexander was trying, without success. (or do >> you mean: manually, with a text editor?) > >Inserting entity declarations is not the same as replacing &_#13; with ><br /> with some tool... How would the parser distinguish between &_#13; >the character reference and &_#13; the entity? Ok, it was not exactly the same. You didn't mention the tool. Entities cannot have a name starting with #. The parser doesn't need to distinguish, he has to report an error. >> >If however that breaks a DTD or is not possible, you will have to use >a >> >recursive named template that gets called from you text() matching >> >template. This can then use substring-before() and substring-after() >to >> >recursively replace what you need. >> >> &_#13; cannot be matched or replaced with XSLT functions, as it has >> been deleted by the XML parser. > >Yeah it can - it hasn't been deleted by the parser, its just been >resolved. You can still check if a string contains it, just like you >can check if a string contains &_#120; (the letter 'x'). No, it can't. You didn't read "2.11 End-Of-Line Handling" in the XML spec very well: | 2.11 End-of-Line Handling | XML parsed entities are often stored in computer files which, for editing | convenience, are organized into lines. These lines are typically separated | by some combination of the characters carriage-return (#xD) and | line-feed (#xA). | To simplify the tasks of applications, wherever an external parsed entity | or the literal entity value of an internal parsed entity contains either the | literal two-character sequence "#xD#xA" or a standalone literal #xD, | an XML processor must pass to the application the single character #xA. | (This behavior can conveniently be produced by normalizing all line | breaks to #xA on input, before parsing.) #xD is the same character as #13. It must be replaced by #xA, which happens to be #10. The XML parsers does the replacement during reading the file effectively *before doing anything else*. Obviously, my term "deleted" was misleading, this only applies to the typical DOS line ending #13#10. Sorry. >As DC always says 'the reference and the character are one and the same >thing' - you could write your entire xml file in character references >(if you were mad). > >As long as you cover all your bases with all possible line endings >(iirc, the parser can choose which kind of line ending to produce, but >theres still only a few) then a recursive template is the usual >technique. > >Or for performance, if you were using java you could write a sax filter >that coverted the value on its way into the trasform, then write a >template to deal with whatever you has converted line endings to. You can program great recursive templates or fine sax filters to replace #13 by the line ending of your choice. But don't be too disappointed if you see none of your line endings in your result. >Or, of course, to save all the hassle just wrap the text that contains >the line endings in html's <pre>...</pre> which will render the text as >is (if it fits your needs). > >cheers >andrew Regards, Markus __________________________ Markus Abt Comet Computer GmbH http://www.comet.de XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
AW: [xsl] substitute with <br, Markus Abt | Thread | AW: [xsl] Variables, Markus Abt |
RE: [xsl] <xsl:if>, Richard Lander | Date | [xsl] Need Help in Creating folder , velmurugan mariappan |
Month |