xsl-list
[Top] [All Lists]

Re: [xsl] same content refuses to convert

2010-03-04 10:31:32
Hi

I have tried debugging this code with no luck!

Michael, yes that intent is to create a <step2> for every <item> in
<list2> . And list2 can have a nested list3.

There is a typo in my code. Here is the corrected one. Sorry about that.

<xsl:template match="list2">

<xsl:for-each select="item">
<step2>
<text>
       <xsl:apply-templates select="*[not(following-sibling::list3)]"/>
</text>

</step2>
<xsl:apply-templates
select="following-sibling::*[1][not(self::item)]|list3|item"/>
</xsl:for-each>


</xsl:template>


So if the content of an <item> is the same from the one following it,
the second <item> is getting skipped. I just cannot figure out what
the issue is here. Can someone please help me.



On Tue, Mar 2, 2010 at 1:32 PM, Michael Kay <mike(_at_)saxonica(_dot_)com> 
wrote:
What am I doing here that is making it skip the content is
the content is duplicated?

There's no obvious bug in the code you've shown us, though some of it looks
odd. If your list2 template is processed at all, then it will create a step2
child for every item child in the input.

Create a simplified example that demonstrates the problem but is complete,
so anyone can run it. You might find the bug while you're doing that, of
course.

Regards,

Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay



-----Original Message-----
From: a kusa [mailto:akusa8(_at_)gmail(_dot_)com]
Sent: 02 March 2010 19:19
To: xsl-list
Subject: [xsl] same content refuses to convert

Hi

I have a very strange problem. I will try to explain it as
effectively as possible.

When I have the same content in the XML, it fails to transform.

Example:

My input looks like this:

<list2>
 <item><text>First text</text></item>
<item><text>Second text</text></item>
 <item><text>Third text</text></item>
 <item><text>First text</text></item>
 <item><text>Fourth text</text></item>
 <item><text>First text</text></item>
</list2>

Converted output:

<step2>
<text>First text</text>
</step2>
<step2>
<text>Second text</text>
</step2>
<step2>
<text>Third text</text>
</step2>
<step2>
<text>Fourth text</text>
</step2>

As you can see the 'First text' content at the fourth and
last item level is missing from the output.

And in my XSLT which is rather long, all I am doing is a
template match on list2, item, and a template match on text.

<xsl:template match="list2">
      <xsl:apply-templates select="*[not(following-sibling::list3)]"/>
<xsl:for-each select="item">
<step2>
<text>

</text>

</step2>
<xsl:apply-templates
select="following-sibling::*[1][not(self::item)]|list3|item"/>
</xsl:for-each>


</xsl:template>


What am I doing here that is making it skip the content is
the content is duplicated?

Any help/suggestions is appreciated.

Thanks in advance.

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>