[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Attribute Handling
I just have started to explore XML and thus my question may be a FAQ: (1) How do I write a template that matches optional attributes such that I have access to the values of the attributes? Let's look at the HTML IMG element: <!ELEMENT IMG - O EMPTY -- Embedded image --> <!ATTLIST IMG %attrs; -- %coreattrs, %i18n, %events -- src %URI; #REQUIRED -- URI of image to embed -- alt %Text; #REQUIRED -- short description -- longdesc %URI; #IMPLIED -- link to long description (complements alt) -- height %Length; #IMPLIED -- override height -- width %Length; #IMPLIED -- override width -- usemap %URI; #IMPLIED -- use client-side image map -- ismap (ismap) #IMPLIED -- use server-side image map -- > The following template will only match elements where certain attributes are present. Am I forced to write a template for every possible combination of attributes if I want to make use of the present attributes? <xsl:template match="img[attribute(src), attribute(alt), attribute(width), attribute(height), attribute(border)]"> <img src="{attribute(src)}" alt="{attribute(alt)}" width="{attribute(width)}" height="{attribute(height)}" border="{attribute(border)}"/> </xsl:template> <xsl:template match="img[attribute(src), attribute(width), attribute(height)]"/> <img src="{attribute(src)}" width="{attribute(width)}" height="{attribute(height)}"/> </xsl:template> Related to the problem above I would like to make a suggestion. (2) The template above just passes the element together with all its attributes matched. It would be convenient to have something like the built-in template rule available for this: <!-- standard rule --> <xsl:template match="*"> <xsl:process-children/> </xsl:template> <!-- suggested rule --> <xsl:template match="*"> <xsl:insert-match-and-process-children/> </xsl:template> <xsl:insert-match-and-process-children/> does what <xsl:process-children/> does, but inserts the result of <xsl:process-children/> into an element that was just matched including all its attributes (instead of forgetting what was just matched like the standard rule does). This would allow to write a single rule for all elements that are just passed through XML and concentrate on the elements that need non trivial processing. This way XML could be used to implement new elements for existing DTDs by translating the new elements to the existing ones. Only rules for the new elements would be needed and all other ones would be matched by the suggested rule. -- Christian ------------------------------------------------------------------------------ Christian Lindig http://www.cs.tu-bs.de/softech/people/lindig mail: lindig@xxxxxxxxxxxxxxx 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
|