Re: [xsl] dynamic node access

Subject: Re: [xsl] dynamic node access
From: RQamar <qamar_rahil@xxxxxxxxxxx>
Date: Mon, 21 Feb 2005 17:19:41 +0000
David Carlisle wrote:


Then you might need something


<xsl:template match="/">
   <Top>
       <PrimeConcept><xsl:apply-templates select="something"mode="top"/></PrimeConcept>
       <SubConcept><xsl:apply-templates select="something else "mode="somethingelse"/></SubConcept>
   </Top>
</xsl:template>

or you might not.



I wrote my code in this form initially although I didnt think it was ideal for my requirement.


By writing a <SubConcept> node in this form, the output xml file ensures that a <SubConcept> node definitely exists. However, I want the output xml file to have a <SubConcept> node only if

(i) A <TopNode> Car is found in the input xml, and
(ii) A <TopNode> Toyota is found in the input xml provided (i) is true, which is why I have an <xsl:if> clause nested within another <xsl:if> clause.


My input file is very large so Im not sure whether it makes sense to post the entire doc but a snippet of it is

-------------------
<TopNode id="10180" name="Car">
     <Child>
          <Concept name="Toyota" ref="10235"/>
      </Child>
</TopNode>
<TopNode id="10235" name="Toyota">
      <Child>
          <Concept name="Corolla" ref="10279"/>
      </Child>
</TopNode >
<TopNode id="10279" name="Corolla"/>

-------------------

Is it possible to do what I want? One way I was thinking of coming round this problem is to declare a global variable and then assign it a value locally (I know there are some issues with assignment in XSLT and Im reading them at the moment). This variable will contain a boolean value of whether 'Toyota' exists from the inner <xsl:if> clause and only call the <SubConcepts> <xsl:apply-template> if the value is 'true'. Dont know if its the best approach but that was one way I was thinking of resolving the issue.

Comments?

Thanks
Rahil

but only you know what your input looks like or what transformation you
are trying to do.



David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Current Thread