Re: Can I use Axes from Attribute Context Node?

Subject: Re: Can I use Axes from Attribute Context Node?
From: "S.Ramaswamy" <srswamy@xxxxxxxxxxxxxxxxxxxx>
Date: Thu, 02 Dec 1999 07:45:47 +0530

> Your code is broadly correct. The only thing wrong with it is that
> <browseList> is not, in your example, an ancestor of the relevant attribute
> node. Also I think it would be clearer if you wrote
> ancestor::something/browseList/MxColumn/text().

Yes there is a root element MxDOM which I missed in this post. I have it in my
program however.

> You haven't said what product you are using, as the failure is a ClassCast
> it looks to me like a bug in the product.

I am using LotusXSL 0.18.5. Subsequently, I wrote an intermediate XSL that
converted all the attributes of the node to elements. That is

Old XML
=======
<browseList>
    <MxColumn>SUBCODE</MxCOlumn>
    <MxColumn>SUBDESC</MxColumn>
 </browseList>
 ...............
 ...............
 <bookhouse>
   <SUBJECT>
     <row SUBCODE="ANM" SUBDESC="Animal Science"  CREATEDATE="1999-10-10"
CREATEBY"BABY" />
     <row SUBCODE="COM" SUBDESC="Computer Science"  CREATEDATE="1998-12-10"
CREATEBY"XYZ" />
     <row SUBCODE="BIO" SUBDESC="Biology" CREATEDATE="1999-01-05" CREATEBY"ABC"
/>
     <row SUBCODE="GEO" SUBDESC="Geography" CREATEDATE="1999-08-13"
CREATEBY"BABY" />
   </SUBJECT>
 </bookhouse>


New XML
=======

<browseList>
    <MxColumn>SUBCODE</MxCOlumn>
    <MxColumn>SUBDESC</MxColumn>
 </browseList>
 ...............
 ...............
 <bookhouse>
   <SUBJECT>
     <row>
       <SUBCODE>ANM</SUBCODE>
       <SUBDESC>Animal Science</SUBDESC>
       <CREATEDATE>1999-10-10</CREATEDATE>
       <CREATEBY>BABY</CREATEBY>
         </row>
    <row>
       <SUBCODE>COM</SUBCODE>
       <SUBDESC>Computer Science</SUBDESC>
       <CREATEDATE>1998-12-10</CREATEDATE>
       <CREATEBY></CREATEBY>
       </row>
   .... other rows .....

  </SUBJECT>
 </bookhouse>

 With the new XML, Now I am able to select

  bookhouse/SUBJECT/row/SUBCODE and
  bookhouse/SUBJECT/row/SUBDESC

 because these occur under
   /bookhouse/MxColumn

using

   <xsl:for-each select="/bookhouse/SUBJECT/row">
     <xsl:for-each select="*">
               <!--   @* gives error and This works -->
       <xsl:variable name="columnName"
          select="ancestor::MxDOM/browseList/MxColumn/." />

        <xsl:if test='name()=$columnName'>
         <xsl:value-of select=current() />
       </xsl:if>
      </xsl:for-each>
    </xsl:for-each>


Is it a bug (that you cannot traverse the Document using Axes when the context
node is an attribute). then in LotusXSL 0.18.5?

> > -----Original Message-----
> > From: S.Ramaswamy [mailto:srswamy@xxxxxxxxxxxxxxxxxxxx]
> > Sent: 25 November 1999 23:34
> > To: xsl-list@xxxxxxxxxxxxxxxx
> > Subject: Can I use Axes from Attribute Context Node?
> >
> >
> > I have the following XML fragment
> >
> > <browseList>
> >    <MxColumn>SUBCODE</MxCOlumn>
> >    <MxColumn>SUBDESC</MxColumn>
> > </browseList>
> > ...............
> > ...............
> > <bookhouse>
> >   <SUBJECT>
> >     <row SUBCODE="ANM" SUBDESC="Animal Science"
> > CREATEDATE="1999-10-10"
> > CREATEBY"BABY" />
> >     <row SUBCODE="COM" SUBDESC="Computer Science"
> > CREATEDATE="1998-12-10" CREATEBY"XYZ" />
> >     <row SUBCODE="BIO" SUBDESC="Biology" CREATEDATE="1999-01-05"
> > CREATEBY"ABC" />
> >     <row SUBCODE="GEO" SUBDESC="Geography" CREATEDATE="1999-08-13"
> > CREATEBY"BABY" />
> >   </SUBJECT>
> > </bookhouse>
> >
> > What I am trying to do
> > ======================
> >
> > I want to select
> >
> >   bookhouse/SUBJECT/row/@SUBCODE and
> >   bookhouse/SUBJECT/row/@SUBDESC
> >
> > because these occur under
> >   /bookhouse/MxColumn
> >
> > Code I have tried
> > =================
> >
> > <xsl:for-each select="/bookhouse/SUBJECT/row">
> >  <xsl:for-each select="@*">
> >    <xsl:variable name="columnName"
> > select="ancestor::browseList/MxColumn/." />
> >    <!-- error on the above line ClassCast cannot cast to
> > TXAttribute -->
> >
> >    <xsl:if test='name()=$columnName'>
> >       <xsl:value-of select=current() />
> >    </xsl:if>
> >  </xsl:for-each>
> > </xsl:for-each>
> >
> >
> > Am I not allowed to use ancestor from within Attribute
> > Context Node? If
> > not what will be the solution for the above?



> ==--==--==--==--==--==--==--==--==--==--==--==--==--==

S.Ramaswamy
Matrix Infotech Syndicate
D-7, Poorti, Vikaspuri, New Delhi, 110018, India
PHONE:    +91-11-5610050,   FAX: +91-11-5535103
WEB         http://MatrixInfotech.HyperMart.Net
==--==--==--==--==--==--==--==--==--==--==--==--==--==



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


Current Thread