Print

Print


Michael,  the two examples that you give seem to be the same; namely, I
don't see how the
second xsl fragment accomplishes goal # 2.
curiously yours,
Rick


Fox, Michael wrote:

>The logic of this template is two-fold
>
>1.   To suppress the display of box numbers and column headings when the box
>number has appeared previously  but
>2.   to display the box number and column heading at the beginning of each
>new c01 even if it has previously been displayed with an earlier component
>in the dsc.
>
>
>To do one or the other seemed simple but to do both appeared complex when
>this stylesheet was first written about 3 years ago (a lifetime in this
>environment).
>
>The problem is the limitation of the preceding axis.
>
>If one only wanted to achieve goal number one, there are several options.
>
>when="container[@type='box'][.=preceding::container[@type='box']]"
>
>or more directly
>
>when="container[@type='box']=preceding::container[@type='box']"
>
>But neither of these satisfies goal number 2.
>
>What is needed is a way to intersect the ancestor::c01 axis and the
>preceding::container axis.  This is possible in XSLT 2 or XPath 2, I forget
>which, and may laready have been implemented in Saxon.
>
>Michael Kay finally broke the iced with this solution that does both and
>which I have incorproated into the the next generation of the EAD Cookbook
>stylesheets, to wit,
>
>when="container[@type='box'][.=preceding::container[@type='box']]"
>
>
>
>
>
>-----Original Message-----
>From: Rick Silterra [mailto:[log in to unmask]]
>Sent: Sunday, July 21, 2002 6:04 PM
>To: [log in to unmask]
>Subject: XPath deconstruction
>
>
>Deconstructing  EAD style sheets,
>Looking at the  cookbooks style sheets, I am trying to understand some
>of the XPaths.
>For example:
>When deciding to display a box number or not, we want to know if it has
>changed from
>the preceding sibling, so we use logic like this:
>
><xsl:choose>
><xsl:when
>test="not(../preceding-sibling::C02/DID[CONTAINER[@type='box']=$box-number]
>or ../preceding-sibling::C02//DID[CONTAINER[@type='box']=$box-number])">
><xsl:call-template name="showbox-C02-box" />
></xsl:when>
><xsl:otherwise>
><xsl:call-template name="hidebox-C02-box" />
>
>"If not (the preceeding c02 node has a did child, which has a container
>child whose type is box and value = box number)
>then show the box number,
>otherwise hide the box"
>But the second condition, where we have the "//"  (any descendant), I
>don't quite get,
>"If the preceeding C02 has any did child at any level with a matching
>container type box value" --
>Is it possible for this expression to be true for some "did" 's, but
>they don't immediately
>preceed this one, so we should show the box number anyway?
>I  "express" my thanks in advance,
>Rick
>
>---
>Rick Silterra
>Implementation Technical Consultant
>Endeavor Information Systems, Inc.
>2200 E. Devon Ave. Suite 382
>Des Plaines, IL, USA 60018-4505
>Voice: (847) 296-2200 x2625
>Fax: (847) 296-5636
>Toll Free: (800) 762-6300 x2625
>Email: [log in to unmask]
>
>Any opinions expressed in this message are those only
>of the sender and not of Endeavor Information Systems, Inc.
>
>
>


--
Rick Silterra
Implementation Technical Consultant
Endeavor Information Systems, Inc.
2200 E. Devon Ave. Suite 382
Des Plaines, IL, USA 60018-4505
Voice: (847) 296-2200 x2625
Fax: (847) 296-5636
Toll Free: (800) 762-6300 x2625
Email: [log in to unmask]

Any opinions expressed in this message are those only
of the sender and not of Endeavor Information Systems, Inc.