Subject: Re: [xsl] pretty-printing XML From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Wed, 26 Mar 2003 22:26:10 +0000 |
Mike Brown wrote: >>> In particular, my XML has lots of very long comment lines, which I >>> would like to be wrapped to a sensible line length, and indented >>> with a hanging indent like this: >>> >>> <!-- blah blah >>> blah blah >>> blah blah --> [snip] > Nevertheless, it is possible to devise a word-wrapping algorithm in > pure XSLT, with hanging indents, even. It would be very slow and > about 200 lines long, though. We used to use something like this to > generate documentation, but I recently switched us to using an > extension function that uses a Python 1-liner to do most of the > work. For what it's worth, XSLT 2.0 makes this a whole lot easier with its regular expression support. For example, you could use: <xsl:template match="comment()"> <xsl:text><!-- </xsl:text> <xsl:analyze-string select="normalize-space(.)" regex=".{{1,69}}(\s|$)"> <xsl:matching-substring> <xsl:if test="position() != 1"><xsl:text> </xsl:text></xsl:if> <xsl:value-of select="." /> <xsl:text>
</xsl:text> </xsl:matching-substring> </xsl:analyze-string> <xsl:text> --></xsl:text> </xsl:template> [Note the doubling of the {}s in the regex attribute because it's an attribute value template; that's caught me out twice today!] You could use something more subtle than normalize-space() to preserve *some* of the spacing within the comment but not others. Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] pretty-printing XML, Mike Brown | Thread | RE: [xsl] pretty-printing XML, David . Pawson |
Re: [xsl] XML to XML, Rick Taylor | Date | Re: [xsl] example of really good XS, S Woodside |
Month |