[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Find the root element from an attribute node
2008/7/10 Marroc <marrocdanderfluff@xxxxxxxxxxx>: > Hi all, [xslt 2.0, Saxon 9] > > I'm processing dita and xhtml documents with the same template. All I'm > doing is rewriting the links, that is @hef and @src attributes. However, > I've discovered laterly, for reasons I don't want to go into, that sometimes > the @href in the xhtml need to be handled differently. I want to detect > whether the ancestor of the particular href is <html> as opposed to <map>, > <task>, <concept> or <reference> so that I can treat it differently. How do > I do it? > > <xsl:template match="@href[ancestor::html]"> > > Is never going to work. I've read with bewilderment the threads about the > xslt spec and that attributes are children of elements but elements are not > parents of children... So, that being the case, how exactly do I find out > where my current @href came from? What you've done should be fine, but its slow to walk the ancestor axis to the root element each time, so just do: <xsl:variable name="isHTML" select="exists(/html)" as="xs:boolean"/> and then: match="@href[$isHTML]" Perhaps you're doing xsl:copy within the attribute matching template? That copies the entire attribute, name and value, the result, so its different to the standard way of modifying an element - you have to explicitly create a new attribute if you want to modify its value. -- Andrew Welch http://andrewjwelch.com Kernow: http://kernowforsaxon.sf.net/
|
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
|