Subject: RE: [xsl] RE: Testing values from parent nodes From: "M. David Peterson" <m.david@xxxxxxxxxx> Date: Wed, 26 May 2004 03:42:10 -0600 |
Hey Neil, I'm assuming that based on your sample code and the source XML that you are interested in the value of RR_group2/type as opposed to RR_group1/type (which doesnt exist)? If so, and without seeing the context in which you are processing RR_group4, heres a sample that should help get you where you need to go... <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="text"/> <xsl:template match="/"> <xsl:apply-templates select="RR/RR_row/RR_group1/RR_group2/RR_group3/RR_group4"/> </xsl:template> <xsl:template match="RR_group4"> <xsl:if test="ancestor::RR_group2[type = '1']"> hello world </xsl:if> </xsl:template> </xsl:stylesheet> This will output "hello world" if the value of ancestor::RR_group2/type is equal to 1. I treated 1 as a string by using the single quotes but this would work just as well without them given that 1 can be treated as a string or a number by the processor. You could also use <xsl:if test="ancestor::RR_group2/type = '1'"> and get the same result. The difference between these two methods is show when they are used to process the node and its children (as opposed to test for a value.) "ancestor::RR_group2/type" puts 'type' into context where as "ancestor::RR_group2[type]" puts 'RR_group2' into context if it has a child with a local-name() of 'type'. Let me know if this helps get you to where you need to be... Best of luck! <M:D/> > -----Original Message----- > From: SMITH Neil [mailto:neil.smith@xxxxxxxx] > Sent: Wednesday, May 26, 2004 3:07 AM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] RE: Testing values from parent nodes > > <RR> > <RR_row> > <ind_no>81723</ind_no> > <pos_acad_m_no>1</pos_acad_m_no> > <pos_acad_lib>Emeritierte(r) Professor(in)</pos_acad_lib> > <et25_lng>2</et25_lng> > <RR_group1> > <gr_no>330</gr_no> > <gr_nom>Analysis: Gruppe Kaup</gr_nom> > <RR_group2> > <type>1</type> > <type_lib>Publications</type_lib> > <RR_group3> > <cle>15381</cle> > <RR_group4> > <ordre>10</ordre> > <text>G. Bissig: \ber die Stabilitdt > separierbarer Bldtterungen. Dissertation Fribourg, Juni 2002</text> > <date_debut/> > <date_fin/> > <financement/> > <montant>0</montant> > </RR_group4> > </RR_group3> > </RR_group2> > > > Here is a part of my XML file that I am parsing to HTML. > Here is my problem, I would like to test the value of > /RR/RR_Row/RR_group1[type=1] while I am parsing the values of the > RR_group4 node (the output is not the same depending on the type). > > I tried : > <xsl:if test="ancestor::RR/RR_row/RR_group1/RR_group2[type=1]"> > But that doesn't work (crashes XMLSPY...) > <xsl:if test="/RR/RR_row/RR_group1/RR_group2[type=1]"> > Same same... > > > Could someone please help me as I have been stuck on this for a couple of > days now... > > Thanks a lot > Best regards, > Neil. > > > > Neil Smith > Analyste Programmeur > Universiti de Fribourg > Av. de l'Europe 20 > CH - 1700 Fribourg > Til. +41 26 300 7091
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] RE: Testing values from paren, SMITH Neil | Thread | RE: [xsl] RE: Testing values from p, M. David Peterson |
[xsl] RE: Testing values from paren, SMITH Neil | Date | Re: [xsl] RE: Testing values from p, Jeni Tennison |
Month |