Re: [xsl] Generating a list of items NOT present in source XML

Subject: Re: [xsl] Generating a list of items NOT present in source XML
From: Greg Faron <gfaron@xxxxxxxxxxxxxxxxxx>
Date: Fri, 17 May 2002 11:54:03 -0600
At 11:17 AM 5/17/2002, you wrote:

It depends a bit what your missing nodes are, if it's numbers then the
stylesheet has a chance, if the thing is a list of family birthdays and
I've forgotten one (not uncommon:-) then the stylesheet probably won't
have much of a chance of filling in the gaps. (Hmm now there's a
challenge for Jeni, can she provide a stylesheet that will fill in my
Mum's birthday...)

:) No, I realize that XSL is not magical (though it is pretty close). I was talking particular about positive, integral index values.


Anyway for your example,

<xsl:for-each select="//*[position()&lt;/root/obj]">
<xsl:if test="not(position() = /root/obj)">
 <obj><childnode><xsl:value-of select="position()"/></childnode></obj>
</xsl:for-each>

probably works, but not if node 10 was missing.

Exposition:
My query originates from a collection of Star Wars toys that I have at home. Each toy is manufactured with a series index value, and I am missing some of the individual products. Since I'm a geek and have keyed my collection into XML, I would like for XSL to generate a listing of all the missing indices. The upper limit is variable (for different collections), but is almost guaranteed to be greater than 10. In fact, the indexed node is figure/details/title/series/number.


I thought a called-template with parameters would be best, since the indexed node might change for different kinds of collectibles (e.g. a comic book might be listed as publisher/title/volume/issue) and the starting value may not even 1.

It would be supremely cool if the type of indexed data could be changed dynamically to some pre-determinable "growing" type (e.g. a,b,c,d,e,...; 1,2,3,4,5,... ; i,ii,iii,iv,v,vi,...).

Probably, the outputted node tree should only be something like

<missing>
  <datum>2</datum>
  <datum>6</datum>
  <datum>8</datum>
</missing>

instead of the complex tree I imagined in the first post. Hmmmm...


Greg Faron Integre Technical Publishing Co.



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


Current Thread