Return-Path: Mailing-List: contact taglibs-dev-help@jakarta.apache.org; run by ezmlm Delivered-To: mailing list taglibs-dev@jakarta.apache.org Received: (qmail 43109 invoked from network); 25 Dec 2000 13:03:58 -0000 Received: from chmls06.mediaone.net (24.147.1.144) by h29.sny.collab.net with SMTP; 25 Dec 2000 13:03:58 -0000 Received: from h000094b62ef1.ne.mediaone.net (h000094b62ef1.ne.mediaone.net [24.128.25.40]) by chmls06.mediaone.net (8.8.7/8.8.7) with ESMTP id IAA12928 for ; Mon, 25 Dec 2000 08:03:57 -0500 (EST) Message-Id: <200012251303.IAA12928@chmls06.mediaone.net> Subject: Re: Documenting Taglibs From: jrun To: taglibs-dev@jakarta.apache.org In-Reply-To: <200012250958.EAA04981@chmls20.mediaone.net> References: <200012250519.AAA07638@chmls05.mediaone.net> <3A46E922.CCECB6AE@gefionsoftware.com> <200012250958.EAA04981@chmls20.mediaone.net> Content-Type: multipart/mixed; boundary="=-wcdUVgetncj2p3Zeja5i" X-Mailer: Evolution 0.8 (Developer Preview) Date: 25 Dec 2000 08:01:56 -0500 Mime-Version: 1.0 X-Spam-Rating: h29.sny.collab.net 1.6.2 0/1000/N --=-wcdUVgetncj2p3Zeja5i Content-Type: text/plain Continuing this thread on a Christmas morn'...I am attaching the XSL sheet to auto-gen HTML doc from TLD files. Like I said, I followed the example set on the better and more recent Jakarta Taglib documentation pages. I am sending a build.xml with it, and a couple pre-run samples and TLD files in case you just want to see what the output looks like. The README.TXT inside the zip file explains a little more, like why the output doesn't show "Examples," "Restrictions" or "Properties." Now that it's done (or probably re-done (at which I expect Glenn to have a good chuckle when he's done with his Christmas goose and reading this...), it's easy to change things so that the colors or fonts are different. I added the tagclass to the output. I used a CSS page for minimal HTML formatting -- that could be relied on more, but formatting nested tables is a pain no matter how you do it. Best regards, Scott Stirling Wes Newton, MA P.S. If Evolution emails this attachment successfully, I will be psyched. On 25 Dec 2000 04:56:05 -0500, jrun wrote: > Judging from the standardized HTML docs for most of the Jakarta taglibs > (with a few exceptions, like the older ones and the JNDI one), it looks > like Glenn Nielsen or someone might've already done this. But I'm not > finding a stylesheet in the taglib CVS. > > So for the meanwhile, I'm reverse-engineering the HTML in the more > complete-looking taglib doc pages, and creating an XSL sheet that > produces this from a TLD file. The more I work on it, the more I think > someone else (like Glenn) must have already done it. If whoever did > finds this email before I'm done let me/us know and share the wealth. > :-> Otherwise, I'll post the XSL page and an Ant build.xml to use it. > > I suck at XSL (it's a freaking programming language, isn't it? It's not > supposed to be, but every time I have to deal with it it seems so > complicated), so I'd be interested in how one would _really_ do this if > they knew what they were doing. > > Merry Christmas! > > > On 24 Dec 2000 22:28:50 -0800, Hans Bergsten wrote: > > jrun wrote: > > > > > > Hello, > > > > > > What's a smart way to document tag libraries? I'm thinking an XSLT > > > sheet that works on taglib.tld files would be a good start: spit out at > > > least a nicely formatted HTML doc with all the tag names, attributes, > > > and other info in the TLD. Whaddya think? Does anyone already have > > > something like this? > > > > I've been thinking about the same thing, but I haven't gotten around > > to do it yet. So if you do, please share :-) > > > > Hans --=-wcdUVgetncj2p3Zeja5i Content-Type: application/zip Content-Disposition: attachment; filename=taglib-xsl.zip Content-Transfer-Encoding: base64 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 L2pRI6yWvSQzH0EBw6LFRnj8wA3G+gGKnmOYdr5BVVxDXFa4UxT/5EdOyscv3QQ1TQKxUQapygjZ vi1NPDLd1lGVbtUlj0zVj7KqX2XUGOb05bI6Oz85f39yfnp6Wv0CUEsHCD/a8vGlAgAA1gQAAFBL AQIUABQACAAIAMg+mSkAAAAAAgAAAAAAAAAJAAQAAAAAAAAAAAAAAAAAAABNRVRBLUlORi/+ygAA UEsBAhQAFAAIAAgAyD6ZKTP5NaREAAAARAAAABQAAAAAAAAAAAAAAAAAPQAAAE1FVEEtSU5GL01B TklGRVNULk1GUEsBAgoACgAAAAAApj6ZKQAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAAAwwAAAHRh Z2xpYi14c2wvUEsBAgoACgAAAAAARjyZKQAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAA7AAAAHRh Z2xpYi14c2wvaHRtbC9QSwECFAAUAAgACABFPJkpWMaLi0MAAABfAAAAGgAAAAAAAAAAAAAAAAAa AQAAdGFnbGliLXhzbC9odG1sL3RhZ2xpYi5jc3NQSwECFAAUAAgACADbPZkpwbpSI9oHAACRTQAA HQAAAAAAAAAAAAAAAAClAQAAdGFnbGliLXhzbC9odG1sL2FudC10YWdzLmh0bWxQSwECFAAUAAgA CADbPZkpwXjweswIAAAFewAAIAAAAAAAAAAAAAAAAADKCQAAdGFnbGliLXhzbC9odG1sL2FwcGxp Y2F0aW9uLmh0bWxQSwECFAAUAAgACAATPJkpHHCglRICAABRBAAAFAAAAAAAAAAAAAAAAADkEgAA dGFnbGliLXhzbC9idWlsZC54bWxQSwECCgAKAAAAAADYPZkpAAAAAAAAAAAAAAAADwAAAAAAAAAA AAAAAAA4FQAAdGFnbGliLXhzbC94bWwvUEsBAhQAFAAIAAgAwi2ZKS5PU3fXAgAAHQ4AABsAAAAA AAAAAAAAAAAAZRUAAHRhZ2xpYi14c2wveG1sL2FudC10YWdzLnRsZFBLAQIUABQACAAIANg9mSnA vW/+vQgAALAdAAAdAAAAAAAAAAAAAAAAAIUYAAB0YWdsaWIteHNsL3htbC90YWdsaWItdGxkLnhz bFBLAQIUABQACAAIAN02mSlYxouLQwAAAF8AAAAZAAAAAAAAAAAAAAAAAI0hAAB0YWdsaWIteHNs L3htbC90YWdsaWIuY3NzUEsBAhQAFAAIAAgAVCOZKbdzIaWDAQAA/AIAABkAAAAAAAAAAAAAAAAA FyIAAHRhZ2xpYi14c2wveG1sL2Zvb3Rlci54c2xQSwECFAAUAAgACACxO5kpUNsbNhsEAAC4FwAA HgAAAAAAAAAAAAAAAADhIwAAdGFnbGliLXhzbC94bWwvYXBwbGljYXRpb24udGxkUEsBAhQAFAAI AAgApj6ZKT/a8vGlAgAA1gQAABUAAAAAAAAAAAAAAAAASCgAAHRhZ2xpYi14c2wvUkVBRE1FLlRY VFBLBQYAAAAADwAPAAUEAAAwKwAAAAA= --=-wcdUVgetncj2p3Zeja5i--