[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] XSL comparing nodesets by name only


Subject: Re: [xsl] XSL comparing nodesets by name only
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Mon, 15 Nov 2010 12:34:47 +0000

  >  I want to find out if the two nodesets share one or more elements. I
  >  only want a comparison regarding their nodenames not the values of
  >  the nodes.  In the above example $me1 and $me2 share the name of one
  >  element: and that is the element "<a/>". So my nodeset comparison
  >  should return "true".

In XSLT 1.0:

<xsl:value-of select="name($me1) = name($me2)"/>

Unfortunately, no. In XSLT 1.0, name($nodeset) returns the name of the first item in the nodeset.


I don't see any alternative to coding it as a nested loop

<xsl:variable name="matches">
<xsl:for-each select="$me1">
<xsl:for-each select="$me2">
<xsl:if test="name($me1) = name($me2)">yes</xsl:if>
</
</
</

<xsl:if test="contains($matches, 'yes')"

Michael Kay
Saxonica
In 2.0:

<xsl:value-of select="$me1/name() = $me2/name()"/>


Current Thread
Keywords