select the following node

Discussion in 'XML' started by naima.mans@gmail.com, Jan 17, 2007.

  1. Guest

    Hello,

    i want to select 2 following brothers nodes wich are one under another
    (one closed to another)... i have done one xslt file... but it's not
    really good..

    for example:
    the xml file:
    -----------------------------------------------------
    <loanService>
    <tradePart product="L1712"> <!-- NOT this one -->
    <positionInfo>
    <position partyReference="EXPCFTCL"
    code="CommitmentNetAmounts" /> <!-- this one -->

    <position partyReference="EXPCFTCL"
    code="CommitmentNetAmount" /> <!-- this one -->

    </positionInfo>
    </tradePart>

    <tradePart product="L1712"> <!-- NOT this one -->
    <positionInfo>
    <positionRate>0.0000</positionRate> <!-- this one -->

    <positionRate>20.0000</positionRate> <!-- this one -->
    </positionInfo>
    </tradePart>
    </loanService>
    -----------------------------------------------------

    the XSLT:
    --------------------------------------
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:diff="http://www.via.ecp.fr/~remi/soft/xml/xmldiff"
    xmlns:msg="http://defiml.loanService.V3_40">
    <xsl:eek:utput method="text" encoding="ISO-8859-1" />

    <xsl:strip-space elements="*" />
    <xsl:template match="/">
    <xsl:apply-templates select="//*"/>
    </xsl:template>

    <xsl:template match="//*">

    <xsl:variable name="actual" select="."></xsl:variable>
    <xsl:variable name="follow"
    select="following-sibling::node()[position()=1]"></xsl:variable>

    <xsl:if test="local-name($actual) = name($follow)">
    <xsl:text> actual </xsl:text> <xsl:value-of
    select="local-name($actual)"/>
    <xsl:text>/ </xsl:text>
    <xsl:text> follow </xsl:text><xsl:value-of select="name($follow)"
    />
    <xsl:text> ; </xsl:text>
    <xsl:text>
    </xsl:text>
    </xsl:if>
    </xsl:template>

    </xsl:stylesheet>

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

    the result:
    --------------------------------------
    actual tradePart/ follow tradePart
    ;
    actual position/ follow position ;
    actual positionRate/ follow positionRate ;
    --------------------------------------


    The problem is that I want this result:
    actual position/ follow position
    ;
    actual positionRate/ follow positionRate ;

    I just want to select the brother which are just one under another ...

    thanks a lot

    Tachi
     
    , Jan 17, 2007
    #1
    1. Advertising

  2. Since you haven't told us what you're really trying to accomplish
    ("brother" is not a defined term in XPath and XSLT.), it's hard to say
    whether you are overcomplicating the problem or not.

    If you really need the same-name-as-first-child-element test, then yes,
    it's going to be somewhat ugly. (And in fact you should probably be
    checking namespace as well as localname.) If you just need the first two
    child elements no matter what their names are, or if you know the names
    at the time you're writing the stylesheet, that's a significantly simpler.

    --
    () ASCII Ribbon Campaign | Joe Kesselman
    /\ Stamp out HTML e-mail! | System architexture and kinetic poetry
     
    Joe Kesselman, Jan 17, 2007
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    0
    Views:
    1,570
  2. CB
    Replies:
    1
    Views:
    596
    Johannes Koch
    Oct 2, 2003
  3. Eddy C
    Replies:
    6
    Views:
    6,452
    Eddy C
    Oct 18, 2005
  4. Tjerk Wolterink
    Replies:
    2
    Views:
    1,460
    Dimitre Novatchev
    Aug 24, 2006
  5. Replies:
    1
    Views:
    1,217
    Joe Kesselman
    Nov 1, 2006
Loading...

Share This Page