[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Validating/enforcing a list of names (Was: Re: Detecti
Well done, Jeni! Why don't we call it with a proper name -- isn't this a general method of validating and enforcing a list of valid names? I haven't seen this before -- shall we call it "the Tennison method"? :o))) Cheers, Dimitre. Jeni Tennison wrote: Well, inspired by Dimitre's insight about id(), here's a solution that doesn't involve recursive templates, as long as you don't mind repeating in the stylesheet the list of allowed options: <?xml version="1.0"?> <!DOCTYPE xsl:stylesheet [ <!ATTLIST thesis:opt id ID #REQUIRED> ]> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:thesis="http://www.silmaril.ie/thesis" exclude-result-prefixes="thesis"> <thesis:opts> <thesis:opt id="foo" /> <thesis:opt id="bar" /> </thesis:opts> <xsl:template match="thesis"> <xsl:text>Options: </xsl:text> <xsl:variable name="options" select="@options" /> <!-- change the context to the stylesheet document --> <xsl:for-each select="document('')/*"> <!-- get the id attributes of any options identified by ID --> <xsl:for-each select="id($options)/@id"> <xsl:value-of select="." /> <xsl:if test="position() != last()">, </xsl:if> </xsl:for-each> </xsl:for-each> </xsl:template> </xsl:stylesheet> It has the advantage that you can deal with bad values (e.g. if 'blort' wasn't actually allowed) within the stylesheet - if that's an advantage. Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/ __________________________________________________ Do You Yahoo!? Yahoo! Auctions - Buy the things you want at great prices. http://auctions.yahoo.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
|