[
https://issues.apache.org/jira/browse/XALANJ-2602?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Robert Papp updated XALANJ-2602:
--------------------------------
Attachment: Solution.java
items.xslt
items.xml
> Selected attribute is not iterated correctly
> --------------------------------------------
>
> Key: XALANJ-2602
> URL: https://issues.apache.org/jira/browse/XALANJ-2602
> Project: XalanJ2
> Issue Type: Bug
> Security Level: No security risk; visible to anyone(Ordinary problems in
> Xalan projects. Anybody can view the issue.)
> Components: transformation, XPath, XSLTC
> Affects Versions: 2.7.1, 2.7.2
> Environment: Android 5 and Windows 10 x64
> Reporter: Robert Papp
> Assignee: Steven J. Hathaway
> Attachments: Solution.java, items.xml, items.xslt
>
>
> {code:title=items.xml}
> <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
> <?xml-stylesheet type="text/xsl" href="items.xslt"?>
> <root>
> <item name="Item 1">
> <item name="Item 2">
> <item name="Item 3">
> <item name="Item 4" />
> </item>
> </item>
> </item>
> </root>
> {code}
> The context where the problem occurs is "Item 4"'s element node.
> {code:title=items.xslt}
> <?xml version="1.0" encoding="utf-8"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0">
> <xsl:output method="html" encoding="utf-8" />
> <xsl:template match="//item[@name='Item 4']">
> <p>ancestor::item<ul>
> <xsl:for-each select="ancestor::item">
> <li>
> <xsl:value-of select="position()" />
> /
> <xsl:value-of select="last()" />
> :
> <xsl:value-of select="@name" />
> </li>
> </xsl:for-each>
> </ul></p>
> <p>ancestor::item/@name<ul>
> <xsl:for-each select="ancestor::item/@name">
> <li>
> <xsl:value-of select="position()" />
> /
> <xsl:value-of select="last()" />
> :
> <xsl:value-of select="." />
> </li>
> </xsl:for-each>
> </ul></p>
> </xsl:template>
> </xsl:stylesheet>
> {code}
> If the parents of the context node are selected, everything is ok, but if the
> {{@name}}s of each parent is selected, then the iteration stops abruptly
> without error.
> {code:title=Expected output (sans HTML)}
> ancestor::item
> 1 / 3 : Item 1
> 2 / 3 : Item 2
> 3 / 3 : Item 3
> ancestor::item/@name
> 1 / 3 : Item 1
> 2 / 3 : Item 2
> 3 / 3 : Item 3
> {code}
> {code:title=Actual output (sans HTML)}
> ancestor::item
> 1 / 3 : Item 1
> 2 / 3 : Item 2
> 3 / 3 : Item 3
> ancestor::item/@name
> 1 / 3 : Item 1
> {code}
> I tried Java 5 and 8 built-in processor, Chrome 52 and Internet Explorer 11;
> they all agree that the second iterations should result in 3 items.
> Originally I found the issue while running a similar XPath query foreach in
> Android 5.0 on a Galaxy S5, which uses Xalan 2.7.1; on my Windows 10 machine
> I ran the processing with Xalan 2.7.2 on the classpath:
> {code}
> import java.io.*;
> import javax.xml.transform.*;
> import javax.xml.transform.stream.*;
> public class Solution {
> public static void main(String[] args) throws IOException,
> TransformerException {
> TransformerFactory factory = TransformerFactory.newInstance();
> Transformer transformer = factory.newTransformer(new
> StreamSource(new FileInputStream("items.xslt")));
> StringWriter capture = new StringWriter();
> transformer.transform(new StreamSource(new
> FileInputStream("items.xml")), new StreamResult(capture));
> System.out.println(capture.toString());
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]