xsl-list
[Top] [All Lists]

Re: Re: Sibling in the Pattern(match)

2003-11-24 15:25:30

There is no restriction on the axis that can be used
within *predicates* of
the match pattern. The only restriction in the
predicates (in XSLT 1.0) is
that no variable references are allowed.

Therefore, you can specify the restricting condition
like this:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

 <xsl:output omit-xml-declaration="yes"
indent="yes"/>

 <xsl:strip-space elements="*"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template
match="*[not(preceding-sibling::*)]">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="*[preceding-sibling::*]"/>
</xsl:stylesheet>

When this transformation is applied on the following
source.xml:

<a>
  <b/>
  <c/>
  <d/>
</a>

the wanted result is produced:

<a>
   <b/>
</a>


Thanks!

It works in your example. But for my example, how can
I filter out the member "acc12"?

<xsl:template match="*[preceding-sibling::Member[(_at_)name
='acc1']/Member[(_at_)name='acc11']]"/>

It filtered members "acc2" and "acc3" instead of
"acc12" and its child "acc121"?

Here is the source XML:

<D>
<Member comment="" name="acc1">
                <Calc>+</Calc>
                <Member comment="" name="acc11">
                        <Calc>+</Calc>
                        <Member name="account3_1"/>
                </Member>
                <Member comment="" name="acc12">
                        <Calc>+</Calc>
                        <Member name="acc121"/>
                </Member>
</Member>
<Member comment="" name="acc2">
                <Calc>+</Calc>
        </Member>
        <Member comment="" name="acc3">
                <Calc>+</Calc>
                <Member comment="" name="acc31">
                        <Calc>+</Calc>
                </Member>
                <Member comment="" name="acc32">
                        <Calc>+</Calc>
                </Member>
</Member>
</D>



Dongling





__________________________________
Do you Yahoo!?
Free Pop-Up Blocker - Get it now
http://companion.yahoo.com/

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