XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
RE: [xml-dev] How to get XPath in a XSLT shylesheet

> Heres the code we use in Schematron (I think from David Carlisle
> originally?)
> 
>    		<xsl:template match="*|@*" mode="get-full-path">
> 
> 			<xsl:apply-templates select="parent::*" 
> mode="get-full-path"/>
> 			<xsl:text>/</xsl:text>
> 			<xsl:if test="count(. | ../@*) = 
> count(../@*)">@</xsl:if>
> 			<xsl:value-of select="name()"/>
> 			<xsl:text>[</xsl:text>
> 	  		<xsl:value-of 
> select="1+count(preceding-sibling::*[name()=name(current())])"/>
> 	  		<xsl:text>]</xsl:text>
>        	 	</xsl:template>
> 

Two criticisms: 

(a) it's not namespace-safe (e.g. comparing name(x)=name(y) is thoroughly
dubious)

(b) It would make more sense to have separate template rules for elements
and attributes. This will output an attribute as @a[1] which doesn't make
much sense.

Michael Kay
http://www.saxonica.com/



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS