[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: failed to find the right child node
>It seems likely that the number that you are trying to calculate is >obtainable just from a simple xpath count and doesn't require a >recursive template, but I'm not sure as I don't follow your description. The example I gave is not very clear. It is possible <fast_load_stream> doesn't have channel_object. So I have to recursively to check each <fast_load_stream> to see whether it contains channel object. One example is channel_objects spread on more than one networks. <streams> <legacy_stream name="stream1"> <mpt_stream> <apg_stream> <fast_load_stream> <network_id>0</network_id> <objects> <channel_object ref="CO1"/> <channel_object ref="CO2"/> </objects> </fast_load_stream> </apg_stream> </mpt_stream> </legacy_stream> <legacy_stream name="stream2"> <mpt_stream> <apg_stream> <fast_load_stream> <network_id>1</network_id> <objects> <boot_event_object ref="BEO1"/> </objects> </fast_load_stream> </apg_stream> </mpt_stream> </legacy_stream> <legacy_stream name="stream3"> <mpt_stream> <apg_stream> <fast_load_stream> <network_id>2</network_id> <objects> <channel_object ref="CO3"/> <channel_object ref="CO4"/> </objects> </fast_load_stream> </apg_stream> </mpt_stream> </legacy_stream> </streams> Another example is all channel_objects are in one network. <streams> <legacy_stream name="stream1"> <mpt_stream> <apg_stream> <fast_load_stream> <network_id>0</network_id> <objects> <channel_object ref="CO1"/> <channel_object ref="CO2"/> <channel_object ref="CO3"/> <channel_object ref="CO4"/> </objects> </fast_load_stream> </apg_stream> </mpt_stream> </legacy_stream> <legacy_stream name="stream2"> <mpt_stream> <apg_stream> <fast_load_stream> <network_id>1</network_id> <objects> <boot_event_object ref="BEO1"/> </objects> </fast_load_stream> </apg_stream> </mpt_stream> </legacy_stream> <legacy_stream name="stream3"> <mpt_stream> <apg_stream> <fast_load_stream> <network_id>2</network_id> <objects> <boot_event_object ref="BEO2"/> </objects> </fast_load_stream> </apg_stream> </mpt_stream> </legacy_stream> </streams> >what output do you want from your posted input? My output is also an xml file. If all channel objects are in the same network, I will store a true() boolean value in a global variable. Otherwise I will store false(). This global variable I will use in other part of my process. Here is the modify xslt file. It does find the right fast_load_stream. Thanks David! <xsl:template match="/"> <xsl:call-template name="isInSameNetwork"/> </xsl:template> <xsl:template name="isInSameNetwork"> <xsl:param name="sumNetworks" select="0"/> <xsl:param name="nodes" select="//fast_load_stream"/> <xsl:if test="$nodes"> <xsl:choose> <xsl:when test="$nodes[1]/objects/channel_object" > <xsl:call-template name="isInSameNetwork"> <xsl:with-param name="sumNetworks" select="$sumNetworks + 1" /> <xsl:with-param name="nodes" select="$nodes[position()!=1]"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:call-template name="isInSameNetwork"> <xsl:with-param name="sumNetworks" select="$sumNetworks" /> <xsl:with-param name="nodes" select="$nodes[position()!=1]"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:if> <xsl:if test="not($nodes)"> <xsl:choose> <xsl:when test="$sumNetworks > 1"> <xsl:value-of select="false()"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="true()"/> </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:template> David thanks again for your help. English is my second language. I spend a lot of time and effort to write the email to post question in this mailing-list. I don't know that no one understood my question cause no replies. I am sorry for that. I know everyone is busy and time is valuable to everyone. It is possible to let me know if you don't understand my question in a very short reply? I will try my best to illustrate that and clarify my question. ---- Jessica
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|