xsl-list
[Top] [All Lists]

RE: getting the text nodes from a set of attribute nodes

2003-09-04 11:53:41
On Thu, 4 Sep 2003, Michael Kay wrote:

  <a>
   <b attr="w1 w3 w6">...</b>
   <b attr="w2 w12 w3 w7">...</b>
   ... more <b>s here ...
  </a>

when processing an <a> element, i need to calculate the 
maximum number of whitespace-separated words for any 
"b/@attr" attribute. so just what you see above, the value 
would be 4, based on that second <b> child of <a>.

AFAICT, this will involve three steps:

1) collect the "b/@attr" attributes (easy)
2) normalize space and word count each of those attribute values
   (again, easy, stealing from kay, p. 527, the "word-count"
   template :-)
3) finding the maximum of those values

You can count the words without recursive processing:

$x := normalize-space(@attr)
$y := translate(@attr, ' ', '')
$wc := string-length($x) - string-length($y) +1

ok, thanks.  that makes things easier.

since, as i understand it, you can't have a node-set of just 
numbers, 

Since numbers aren't nodes, how could you have a node-set containing
numbers?

but that was my point.  the sample XSL i showed for calculating the 
minimum value was *treating* a node-set as if the individual elements
were numbers, and was comparing them numerically.

  <xsl:value-of select="$nodes[not($nodes &lt; .)]"/>

how would this be interpreted?  the book refers to this as calculating
"the minimum value of a node set", which to my mind is viewing the 
"nodes" as numerical values.  i wasn't trying to suggest that numbers
were actual nodes, only that they were being "treated" that way by
the above expression.

rday


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list