[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: ancestor axis order

Subject: Re: ancestor axis order
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 04 May 2004 07:22:18 -0400
xsl ancestor
At 2004-05-04 11:34 +0100, David.Pawson@xxxxxxxxxxx wrote:
Given XML such as
...
I need to determine, for each <ref/> child, whether there is
a <choice/> ancestor prior to the <define/> Ancestor.

By "prior" I'm assuming that you need to know if you have a <choice> ancestor that has a <define> ancestor.


for the example above, references should be 'no' and
scope should be 'yes'

Not sure what you mean by that.


But, below is the use of the test:

<xsl:when test="ancestor::choice/ancestor::define">

I hope this helps.

......................... Ken

T:\ftemp>type david.xml
   <define name="report">
      <element>
         <name ns="">report</name>
         <group>
            <group>

               <group>
                  <group>
                     <group>
                        <group>
                           <group>
                              <ref name="issues"/>
                              <ref name="vision"/>
                           </group>
                           <ref name="goals"/>
                        </group>
                        <ref name="scope"/>
                     </group>
                     <ref name="tasks"/>
                  </group>
                  <ref name="assessment"/>
               </group>

               <choice>
                  <empty/>
                  <ref name="references"/>
               </choice>
            </group>
            <ref name="owner"/>
         </group>
      </element>
   </define>

T:\ftemp>type david.xsl
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">

<xsl:output indent="yes"/>

<xsl:template match="/">
   <xsl:for-each select=".//ref">
      <xsl:element name="{@name}">
        <xsl:choose>
          <xsl:when test="ancestor::choice/ancestor::define">
            <xsl:attribute name="required">no</xsl:attribute>
          </xsl:when>
          <xsl:otherwise>
            <xsl:attribute name="required">yes</xsl:attribute>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:element>
   </xsl:for-each>
 </xsl:template>

</xsl:stylesheet>
T:\ftemp>saxon david.xml david.xsl
<?xml version="1.0" encoding="utf-8"?>
<issues required="yes"/>
<vision required="yes"/>
<goals required="yes"/>
<scope required="yes"/>
<tasks required="yes"/>
<assessment required="yes"/>
<references required="no"/>
<owner required="yes"/>
T:\ftemp>


-- Public courses: Spring 2004 world tour of hands-on XSL instruction Each week: Monday-Wednesday: XSLT/XPath; Thursday-Friday: XSL-FO

Hong Kong May 17-21; Bremen Germany May 24-28; Helsinki June 14-18

World-wide on-site corporate, govt. & user group XML/XSL training.
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
Male Breast Cancer Awareness  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.