[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: pretty-printing XML
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
|
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
|