You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by "Dean Wang (JIRA)" <xa...@xml.apache.org> on 2011/09/20 18:52:09 UTC

[jira] [Created] (XALANJ-2543) document() function changed the context inside for-each

document() function changed the context inside for-each
-------------------------------------------------------

                 Key: XALANJ-2543
                 URL: https://issues.apache.org/jira/browse/XALANJ-2543
             Project: XalanJ2
          Issue Type: Bug
      Security Level: No security risk; visible to anyone (Ordinary problems in Xalan projects.  Anybody can view the issue.)
          Components: XPath-function
    Affects Versions: 2.7.1
         Environment: Java 1.5 and 1.6
            Reporter: Dean Wang
            Priority: Minor


I don't know if this is default/standard behaviour. But Sun JRE work fine with it, with Xalan 2.6.0

XSL: 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="improvisation">
	<my:order>
		<order>3</order>
		<order>4</order>
		<order>2</order>
		<order>1</order>
	</my:order>
	
	<xsl:template match="/">
		<html>
			<body>
			<ul>
				<!-- document('')/*/my:order/order -->
				<xsl:for-each select="document('')//my:order/order" >
					<xsl:variable name="num" select="." />
					<li>Order: <xsl:value-of select="$num" /></li>
					<xsl:for-each select="/root/opt[@attr=$num]">
						<li>Value: <xsl:value-of select="." /></li>
					</xsl:for-each>
				</xsl:for-each>
			</ul>
			<ol>
				<xsl:for-each select="/root/opt">
					<li>XML: <xsl:value-of select="." /></li>
				</xsl:for-each>
			</ol>
			</body>
		</html>
	</xsl:template>

</xsl:stylesheet>

XML:
<root>
	<opt attr="1">a</opt>
	<opt attr="2">b</opt>
	<opt attr="3">c</opt>
	<opt attr="4">d</opt>
</root>

Expected:
<xsl:for-each select="/root/opt[@attr=$num]">
return element from XML

Acutal:
<xsl:for-each select="/root/opt[@attr=$num]">
has context in document('') and return nothing

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-dev-help@xml.apache.org


[jira] [Commented] (XALANJ-2543) document() function changed the context inside for-each

Posted by "Dean Wang (JIRA)" <xa...@xml.apache.org>.
    [ https://issues.apache.org/jira/browse/XALANJ-2543?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13109518#comment-13109518 ] 

Dean Wang commented on XALANJ-2543:
-----------------------------------

I tested M$XML and Saxon. It seems to be a common behaviour. Could anyone tell me why document() function could affect the context outside the XPath expression?
http://www.w3.org/TR/xslt#document did not tell any thing about the context change.

> document() function changed the context inside for-each
> -------------------------------------------------------
>
>                 Key: XALANJ-2543
>                 URL: https://issues.apache.org/jira/browse/XALANJ-2543
>             Project: XalanJ2
>          Issue Type: Bug
>      Security Level: No security risk; visible to anyone(Ordinary problems in Xalan projects.  Anybody can view the issue.) 
>          Components: XPath-function
>    Affects Versions: 2.7.1
>         Environment: Java 1.5 and 1.6
>            Reporter: Dean Wang
>            Priority: Minor
>              Labels: context, document, function
>
> I don't know if this is default/standard behaviour. But Sun JRE work fine with it, with Xalan 2.6.0
> XSL: 
> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="improvisation">
> 	<my:order>
> 		<order>3</order>
> 		<order>4</order>
> 		<order>2</order>
> 		<order>1</order>
> 	</my:order>
> 	
> 	<xsl:template match="/">
> 		<html>
> 			<body>
> 			<ul>
> 				<!-- document('')/*/my:order/order -->
> 				<xsl:for-each select="document('')//my:order/order" >
> 					<xsl:variable name="num" select="." />
> 					<li>Order: <xsl:value-of select="$num" /></li>
> 					<xsl:for-each select="/root/opt[@attr=$num]">
> 						<li>Value: <xsl:value-of select="." /></li>
> 					</xsl:for-each>
> 				</xsl:for-each>
> 			</ul>
> 			<ol>
> 				<xsl:for-each select="/root/opt">
> 					<li>XML: <xsl:value-of select="." /></li>
> 				</xsl:for-each>
> 			</ol>
> 			</body>
> 		</html>
> 	</xsl:template>
> </xsl:stylesheet>
> XML:
> <root>
> 	<opt attr="1">a</opt>
> 	<opt attr="2">b</opt>
> 	<opt attr="3">c</opt>
> 	<opt attr="4">d</opt>
> </root>
> Expected:
> <xsl:for-each select="/root/opt[@attr=$num]">
> return element from XML
> Acutal:
> <xsl:for-each select="/root/opt[@attr=$num]">
> has context in document('') and return nothing

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-dev-help@xml.apache.org