Subject: Re: [xsl] XSL - Documentation From: Tony Graham <Tony.Graham@xxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 13 May 2009 14:51:52 +0100 |
On Wed, May 13 2009 13:09:56 +0100, gkholman@xxxxxxxxxxxxxxxxxxxx wrote: > At 2009-05-13 11:57 +0200, Michael SchC$fer wrote: >>I've given this subject some thoughts I'd like to share. They centre on two >> central aspects: a possible requirement for a general approach to >> standardising >>XML documentation and simple XML comments vs. structured, namespace-based >>comments. >>... >> * XSLStyle supports DITA and DocBook. I have practically no experience >> with these document types, but from the little I know I'd say that >> in the vast majority of cases they go far beyond the requirements for >> documenting XSLT, XSD and so on. >> >> When generating documentation from an XSL document, one gets most of the >> information by analysing the code, so in a comment one would add >> maybe some >> descriptive text, change and state information and a hyperlink here and >> there, or an image. The same probably applies to XSD. >> >> So I think that allowing the full set of DITA and DocBook features for >> use in comments may introduce unnecessary complexity. > > Interestingly I saw the choice of DITA and DocBook as introducing > simplicity because in both cases I use off-the-shelf stylesheets > (included in the package) that render these vocabularies to HTML. No > need to write one's own documentation vocabulary and then stylesheets > for that vocabulary. ... I got to this point in Michael's message and, like Ken, was thinking that using DocBook or DITA made things simpler; not so much because you can get from them to HTML, but because you can merge the documentation for your XSLT with other documentation in DocBook or DITA and produce unified documentation for a whole system. >> If one looks at Wiki text formatting like it's supported in Trac, one >> can do impressively much with little effort and complexity, including >> tables, images and hyperlinks, and the learning curve is flat. If more >> was needed, one could mix in XML islands as one does with HTML in Java >> comments. Then I got to this point in Michael's message and light dawned. There is or could be a role for simplified, non-XML markup for documenting the common things like the description of the template or the function or the descriptions of the function's parameters. Something like a Javadoc or a GTK-Doc for XSLT that also allows XML for the parts that are too complex to express in the simplified syntax (as GTK-Doc, for example, does). I'll talk about GTK-Doc because I know where to find the documentation [1] and because it produces DocBook on the way to HTML. With GTK-Doc, structured comments in C code get turned into HTML documentation. Here's an example lifted from xmlroff [2]: ------------------------------------------------------------ /** * xml_doc_to_fo_and_area_trees: * @res: Result tree. * @fo_doc: #FoDoc to which to write output. * @fo_tree: Pointer to generated FO tree. * @area_tree: Pointer to generated area tree. * @continue_after_error: Whether to continue after a formatting error. * @debug_level: What debugging output to generate. * @error: Indication of any error that occurred. * * Generates FO and area trees from @res result tree. **/ ------------------------------------------------------------ The '@' and '#' are significant to GTK-Doc, as is the line with no text, and there's a lot of Perl munging that goes on to turn that into DocBook and also, for example, produce DocBook markup linking the two '@res' and linking '#FoDoc' to the FoDoc documentation as well as an <indexterm> for the function. The DocBook generated from the structured comments gets merged with some static DocBook chapters to produce the complete xmlroff manual. When you need more, you can add real DocBook [4]. This example is from Xacerbate [3]: ------------------------------------------------------------ /** * SECTION:xac-extensions * @short_description: Custom extension functions * * Registers extension functions written in C for use with the libxslt * library. Functions are registered in the #XAC_NAMESPACE_XACF_URI * namespace and conventionally use the #XAC_NAMESPACE_XACF_PREFIX * prefix. * * <itemizedlist> * <listitem><para> * <funcsynopsis><funcprototype><funcdef><type>string</type> <function>xacf:epoch_time</function></funcdef><void/></funcprototype></funcsy nopsis> * </para> * <para>Returns the time since the Epoch (00:00:00 UTC, January 1, 1970), measured in seconds.</para> * </listitem> ... ------------------------------------------------------------ To do something similar for XSLT, you'd probably rely on proximity to associate documentation with its template or function. I.e., the documentation element documents its following sibling element unless the documentation starts with a keyword (as 'SECTION:', above, is a keyword for GTK-Doc). If you pretended that the C function documented above was a XSLT function and invented some simplified syntax on the fly (as I'm about to do), you'd end up with something like: ------------------------------------------------------------ <x:doc xmlns:x="http://example.org/documentation"> $res:: Result tree. $fo_doc:: #FoDoc to which to write output. $fo_tree:: Pointer to generated FO tree. $area_tree:: Pointer to generated area tree. $continue_after_error:: Whether to continue after a formatting error. $debug_level:: What debugging output to generate. $error:: Indication of any error that occurred. Generates FO and area trees from $res result tree. </x:doc> ------------------------------------------------------------ which is a lot easier to write, read, and update than putting DocBook or DITA into the stylesheet and is still sufficiently structured that, with some XSLT munging this time, you can get from there to DocBook or DITA and from thence to HTML or to whatever. Regards, Tony Graham Tony.Graham@xxxxxxxxxxxxxxxxxxxxxx Director W3C XSL FO SG Invited Expert Menteith Consulting Ltd XML, XSL and XSLT consulting, programming and training Registered Office: 13 Kelly's Bay Beach, Skerries, Co. Dublin, Ireland Registered in Ireland - No. 428599 http://www.menteithconsulting.com -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- xmlroff XSL Formatter http://xmlroff.org xslide Emacs mode http://www.menteith.com/wiki/xslide Unicode: A Primer urn:isbn:0-7645-4625-2 [1] http://library.gnome.org/devel/gtk-doc-manual/stable/documenting_syntax.html. en [2] http://xmlroff.org [3] http://www.xcruciate.co.uk/xacerbate-server-intro [4] http://library.gnome.org/devel/gtk-doc-manual/stable/documenting_docbook.html .en
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XSL - Documentation, G. Ken Holman | Thread | RE: [xsl] XSL - Documentation, Michael Kay |
[xsl] Grouping question, M Balaji | Date | Re: [xsl] Grouping question, Martin Honnen |
Month |