[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] XPath problem


Subject: Re: [xsl] XPath problem
From: "Liron" <magilam@xxxxxxxxxxxxxxxx>
Date: Mon, 30 Jan 2006 20:42:44 +0100

Hello,

Thank you very much for your replies. You helped a lot

Liron

----- Original Message ----- From: "Jay Bryant" <jay@xxxxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Monday, January 30, 2006 7:00 PM
Subject: Re: [xsl] XPath problem



One XSLT 2.0 way:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" indent="yes"/>

 <xsl:template match="/">
   <out>
     <xsl:for-each select="root/test/para except root/test[2]/para[2]">
       <xsl:copy-of select="."/>
     </xsl:for-each>
   </out>
 </xsl:template>

</xsl:stylesheet>

One XSLT 1.0 way:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" indent="yes"/>

 <xsl:template match="/">
   <out>
     <xsl:for-each
select="root/test/para[not(count(../preceding-sibling::test) = 1 and
count(preceding-sibling::para) = 1)]">
       <xsl:copy-of select="."/>
     </xsl:for-each>
   </out>
 </xsl:template>

</xsl:stylesheet>

HTH

Jay Bryant
Bryant Communication Services


----- Original Message ----- From: "Liron" <magilam@xxxxxxxxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Monday, January 30, 2006 10:24 AM
Subject: [xsl] XPath problem



Hello all,

Assuming I have a document like this:

<root>
   <test>
      <para>Text1</para>
      <para>Text2</para>
      <para>Text3</para>
    </test>
    <test>
      <para>Text1</para>
      <para>Text2</para>
      <para>Text3</para>
    </test>
    <test>
      <para>Text1</para>
      <para>Text2</para>
      <para>Text3</para>
    </test>
</root>

I'm trying to figure out how to build a xpath statement to get all the
text
nodes besides from the 2nd <para> element of the 2nd <test> element. I was
trying to write something like /root/test/para[position()!=2 and
ancestor::*[1][position()!=2]]/text() but it didn't work (I guess that
you're not surprised by that result...)
Is such a statement even possible in xpath? Also, how would I implement
such
a query on xslt?

(In my real document there could be more levels to avoid)

Thank you very much for your patience and help
Liron


Current Thread
  • [xsl] XPath problem
    • Liron - Mon, 30 Jan 2006 17:24:33 +0100
      • Jay Bryant - Mon, 30 Jan 2006 12:00:12 -0600
        • Liron - Mon, 30 Jan 2006 20:42:44 +0100 <=
      • <Possible follow-ups>
      • cknell - Mon, 30 Jan 2006 11:58:59 -0500
Keywords