Were you not able to do: <xsl:variable name="uniqueTypes" select="distinct-values(//container/@type)" /> You definitely need the xpath 1.0 workaround? On Thu, Apr 26, 2012 at 2:49 PM, Michele R Combs <[log in to unmask]> wrote: > Thanks for all your feedback, everybody.� It�s becoming clearer what the > problem is, so let me sum up. > > > > What (apparently) this <xsl:variable> is supposed to do is grab ONE of each > container type that exists -- it needs to know how many there are up front, > so it can allocate a column in the table for each one.� So if my document > has a hundred <container> elements but the only @type attributes are Box, > Folder and Reel, the variable hunts through them all and ends up with three > container types. > > > > Right now, it says this: > > > > <xsl:variable name="uniqueTypes" > select="ead/archdesc/dsc/descendant::*/container[not(@type=following::*/container/@type)]/@type" > /> > > > > Right now, if I have more than one <container> with the same @type in the > LAST c0#, e.g.: > > > > <container type=�Folder�> > > <container type=�Folder�> > > > > it interprets them as two different types, so the number of possible > container types is incorrect, leading to surplus columns in the table.� Now, > I tried changing it to use preceding rather than following, like so: > > > > <xsl:variable name="uniqueTypes" > select="ead/archdesc/dsc/descendant::*/container[not(@type=preceding::*/container/@type)]/@type" > /> > > > > And sure enough, in that case if I have more than one <container> with the > same @type in the FIRST c0#, it show the same behavior: it interprets them > as two different types, not as the same type. > > > > So I�m guessing that the <xsl:variable select string does not look at > sibling <container>s in the same <did>, it only looks at containers > above/below the current node?� That would explain why if I use > following::*/container/@type , it gets confused over containers in the LAST > c0# (because there are no following containers to compare it to) and why if > I use preceding::*/container/@type it gets confused over containers in the > FIRST c0# (because there are no preceding containers to compare it to. > > > > So, options: Make it look at siblings as well? Exclude the last c0# from > consideration?� Something else? > > > > There may just not be an easy fix for this without tearing a lot more of the > code apart... > > > > Michele -- Joyce Chapman Triangle Research Libraries Network CB# 3926, Wilson Special Collections Library Chapel Hill, NC 27514-8890 Phone: (919) 962-1345 Email:�[log in to unmask] Website: www.trln.org/ccc