Subject: the useless name() function (was Re: Using the not function) From: "Mark D. Anderson" <mda@xxxxxxxxxxxxxx> Date: Mon, 17 Jan 2000 09:43:53 -0800 |
--On Monday, January 17, 2000 11:23 AM +0000 David Carlisle <davidc@xxxxxxxxx> wrote: > No, name() gives the literal prefixed name from the source. and Michael Kay agrees: >Generally speaking, it's best to avoid testing the result of the name() >function, because two XML documents that are equivalent except for their >choice of namespace prefixes will give different answers. Using >"not(self::element3)" is safer. Damn, I wasn't aware of this. So: - if you have an expanded name which is a literal, and you want to match only on that name in that namespace, then use self:: xmlns:myprefix = urn:some-uri ... [self::myprefix:el] <!-- if desired node has a namespace which myprefix expands to --> [self::el] <!-- if desired node has no namespace --> - if you want to match any element which has a particular local name, regardless of namespace, use local-name(): [local-name() = 'el'] - if you want to match a local name against a variable, that is easy: <xsl:variable name="local_elname" select="'el'"/> ... [local-name() = $local_elname] - if you want to match an expanded name against a variable, that is hard: <xsl:variable name="local_elname" select="'el'"/> <xsl:variable name="ns_el" select="'urn:some-uri'"/> ... [local-name() = $local_elname and namespace-uri() = $ns_el] - if you want to match qnames, that is easy but not what you want: <xsl:variable name="q_elname" select="'myprefix:el'"/> ... [name() = $q_elname] Did i get that right? -mda XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: Using the not function, David Carlisle | Thread | Re: Using the not() function, Brett McLaughlin |
Re: help with numbering (xsl:number, Seema Ramanathan | Date | Searching for individual characters, Araquel, Ed E. |
Month |