Subject: Re: [xsl] Find the root element from an attribute node From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx> Date: Thu, 10 Jul 2008 14:16:18 +0100 |
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/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Find the root element from an, Marroc | Thread | Re: [xsl] Find the root element fro, David Carlisle |
[xsl] Find the root element from an, Marroc | Date | Re: [xsl] Find the root element fro, David Carlisle |
Month |