[ 
https://issues.apache.org/jira/browse/XALANJ-2474?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17735942#comment-17735942
 ] 

Joe Kesselman edited comment on XALANJ-2474 at 6/22/23 4:58 AM:
----------------------------------------------------------------

Simplifying this down drastically, renaming it {*}jalan-xira-2474.{*}{*}, and 
using my *identitext.xsl{*} transformation to roughly dump (non-indented) 
content of a node in the messages.

The first computed path they try to execute expands to:
{code:java}
"document('jira-xalanj-2474.xml')/*/NetworkElement[Name='FTMYFLXABB0' and 
Description='Ascend CBX 500' and Id='1000000010' and CreationTime='' and 
LastUpdatedTime='' and Enabled='EnableType.Enabled' and ManagementAddress='' 
and LastDiscovered='2002-05-11 21:21:56.0' and FirstDiscoveryFailure='' and 
LastDiscoveryFailure='' and NumDiscoveryFailures='0' and 
NemClass='com.comanage.truesource.nem.naviscore.NavisCoreNem' and 
ContactAddress='Ipv4Address:172.20.254.1' and Vendor='Lucent' and Model='CBX 
500' and HardwareVersion='03' and SoftwareVersion='04.02.00.00' and 
SerialNumber='' and Supplier='' and PartNumber='' and Clei='' and Label='' and 
Credibility='CredibilityLevel.Medium' and SlotCount='4' and 
AvailableSlotCount='-1' and HostAgent[@xlink:href='nil'] and 
HostSystem[@xlink:href='nil'] and Host[@xlink:href='nil']]"
{code}
 

If I invoke the path "normally" from the stylesheet, it returns the correct 
node.
{code:java}
    <xsl:message>
      <xsl:text>Standard selection, literal path string: </xsl:text>
      <xsl:apply-templates mode="identitext" 
select="document('jira-xalanj-2474.xml')/*/NetworkElement[Name='FTMYFLXABB0' 
and Description='Ascend CBX 500' and Id='1000000010' and CreationTime='' and 
LastUpdatedTime='' and Enabled='EnableType.Enabled' and ManagementAddress='' 
and LastDiscovered='2002-05-11 21:21:56.0' and FirstDiscoveryFailure='' and 
LastDiscoveryFailure='' and NumDiscoveryFailures='0' and 
NemClass='com.comanage.truesource.nem.naviscore.NavisCoreNem' and 
ContactAddress='Ipv4Address:172.20.254.1' and Vendor='Lucent' and Model='CBX 
500' and HardwareVersion='03' and SoftwareVersion='04.02.00.00' and 
SerialNumber='' and Supplier='' and PartNumber='' and Clei='' and Label='' and 
Credibility='CredibilityLevel.Medium' and SlotCount='4' and 
AvailableSlotCount='-1' and HostAgent[@xlink:href='nil'] and 
HostSystem[@xlink:href='nil'] and Host[@xlink:href='nil']]"/>
    </xsl:message>
{code}
produces
{code:java}
file:///home/keshlam/git/xalan-test/tests/jira/jira-xalanj-2474.xslt; Line #20; 
Column #18; Standard selection, literal path string: <NetworkElement 
id="NetworkElement_1" package="com.comanage.truesource.schema.physical">
<Name>FTMYFLXABB0 </Name>
<Description>Ascend CBX 500 </Description>
<Id>1000000010 </Id>
<HostAgent xlink:type="simple" xlink:href="nil"> </HostAgent>
<HostSystem xlink:type="simple" xlink:href="nil"> </HostSystem>
<Host xlink:type="simple" xlink:href="nil"> </Host>
<CreationTime> </CreationTime>
<LastUpdatedTime> </LastUpdatedTime>
<Enabled>EnableType.Enabled </Enabled>
<ManagementAddress> </ManagementAddress>
<LastDiscovered>2002-05-11 21:21:56.0 </LastDiscovered>
<FirstDiscoveryFailure> </FirstDiscoveryFailure>
<LastDiscoveryFailure> </LastDiscoveryFailure>
<NumDiscoveryFailures>0 </NumDiscoveryFailures>
<NemClass>com.comanage.truesource.nem.naviscore.NavisCoreNem </NemClass>
<ContactAddress>Ipv4Address:172.20.254.1 </ContactAddress>
<Vendor>Lucent </Vendor>
<Model>CBX 500 </Model>
<HardwareVersion>03 </HardwareVersion>
<SoftwareVersion>04.02.00.00 </SoftwareVersion>
<SerialNumber> </SerialNumber>
<Supplier> </Supplier>
<PartNumber> </PartNumber>
<Clei> </Clei>
<Label> </Label>
<Credibility>CredibilityLevel.Medium </Credibility>
<SlotCount>4 </SlotCount>
<AvailableSlotCount>-1 </AvailableSlotCount>
 </NetworkElement>{code}
 

An attempt to put that string into a *$path* variable and then call 
{*}xalan:execute(string($path)){*}, as they are doing, does not.
{code:java}
    <xsl:variable name="path">
      
<xsl:text>document('jira-xalanj-2474.xml')/*/NetworkElement[Name='FTMYFLXABB0' 
and Description='Ascend CBX 500' and Id='1000000010' and CreationTime='' and 
LastUpdatedTime='' and Enabled='EnableType.Enabled' and ManagementAddress='' 
and LastDiscovered='2002-05-11 21:21:56.0' and FirstDiscoveryFailure='' and 
LastDiscoveryFailure='' and NumDiscoveryFailures='0' and 
NemClass='com.comanage.truesource.nem.naviscore.NavisCoreNem' and 
ContactAddress='Ipv4Address:172.20.254.1' and Vendor='Lucent' and Model='CBX 
500' and HardwareVersion='03' and SoftwareVersion='04.02.00.00' and 
SerialNumber='' and Supplier='' and PartNumber='' and Clei='' and Label='' and 
Credibility='CredibilityLevel.Medium' and SlotCount='4' and 
AvailableSlotCount='-1' and HostAgent[@xlink:href='nil'] and 
HostSystem[@xlink:href='nil'] and Host[@xlink:href='nil']]</xsl:text>
    </xsl:variable>
    <xsl:message>
      <xsl:text>Path string: </xsl:text>
      <xsl:value-of select="$path"/>
    </xsl:message>
    <xsl:variable name="targetNode" select="xalan:evaluate(string($path))"/>
    <xsl:message>
      <xsl:text>Eval(string($path)): </xsl:text>
      <xsl:apply-templates mode="identitext" select="$targetNode"/>
    </xsl:message>
{code}
yields
{code:java}
file:///home/keshlam/git/xalan-test/tests/jira/jira-xalanj-2474.xslt; Line #30; 
Column #18; Path string: 
document('jira-xalanj-2474.xml')/*/NetworkElement[Name='FTMYFLXABB0' and 
Description='Ascend CBX 500' and Id='1000000010' and CreationTime='' and 
LastUpdatedTime='' and Enabled='EnableType.Enabled' and ManagementAddress='' 
and LastDiscovered='2002-05-11 21:21:56.0' and FirstDiscoveryFailure='' and 
LastDiscoveryFailure='' and NumDiscoveryFailures='0' and 
NemClass='com.comanage.truesource.nem.naviscore.NavisCoreNem' and 
ContactAddress='Ipv4Address:172.20.254.1' and Vendor='Lucent' and Model='CBX 
500' and HardwareVersion='03' and SoftwareVersion='04.02.00.00' and 
SerialNumber='' and Supplier='' and PartNumber='' and Clei='' and Label='' and 
Credibility='CredibilityLevel.Medium' and SlotCount='4' and 
AvailableSlotCount='-1' and HostAgent[@xlink:href='nil'] and 
HostSystem[@xlink:href='nil'] and Host[@xlink:href='nil']]
file:///home/keshlam/git/xalan-test/tests/jira/jira-xalanj-2474.xslt; Line #36; 
Column #18; Eval(string($path)):
{code}
 

Simplifying the path string to just the *document()* call shows that this isn't 
even getting that far:
{code:java}
    <xsl:message>Does it work just with document()?</xsl:message>
    <xsl:variable name="path">
      <xsl:text>document('jira-xalanj-2474.xml')</xsl:text> -->
    </xsl:variable>
    <xsl:message>
      <xsl:text>Path string: </xsl:text>
      <xsl:value-of select="$path"/>
    </xsl:message>
    <xsl:variable name="targetNode" select="xalan:evaluate(string($path))"/>
    <xsl:message>
      <xsl:text>Eval(string($path)): </xsl:text>
      <xsl:apply-templates mode="identitext" select="$targetNode"/>
    </xsl:message>{code}
yields
{code:java}
file:///home/keshlam/git/xalan-test/tests/jira/jira-xalanj-2474.xslt; Line #43; 
Column #18; Does it work just with document()?
file:///home/keshlam/git/xalan-test/tests/jira/jira-xalanj-2474.xslt; Line #47; 
Column #18; Path string: document('jira-xalanj-2474.xml')
file:///home/keshlam/git/xalan-test/tests/jira/jira-xalanj-2474.xslt; Line #52; 
Column #18; Eval(string($path)):{code}
So it looks like the root problem is either that *xalan:evaluate()* isn't 
working at all for a string supplied in a variable, or it isn't supporting 
*document()* within that string.

Tried removing the *string()* call, made no difference.

But this is now simple enough that it's worth considering debugging into.


was (Author: JIRAUSER285361):
Simplifying this down drastically, renaming it {*}jalan-xira-2474.*{*}, and 
using my *identitext.xsl* transformation to roughly dump (non-indented) content 
of a node in the messages.

The first computed path they try to execute expands to:
{code:java}
"document('jira-xalanj-2474.xml')/*/NetworkElement[Name='FTMYFLXABB0' and 
Description='Ascend CBX 500' and Id='1000000010' and CreationTime='' and 
LastUpdatedTime='' and Enabled='EnableType.Enabled' and ManagementAddress='' 
and LastDiscovered='2002-05-11 21:21:56.0' and FirstDiscoveryFailure='' and 
LastDiscoveryFailure='' and NumDiscoveryFailures='0' and 
NemClass='com.comanage.truesource.nem.naviscore.NavisCoreNem' and 
ContactAddress='Ipv4Address:172.20.254.1' and Vendor='Lucent' and Model='CBX 
500' and HardwareVersion='03' and SoftwareVersion='04.02.00.00' and 
SerialNumber='' and Supplier='' and PartNumber='' and Clei='' and Label='' and 
Credibility='CredibilityLevel.Medium' and SlotCount='4' and 
AvailableSlotCount='-1' and HostAgent[@xlink:href='nil'] and 
HostSystem[@xlink:href='nil'] and Host[@xlink:href='nil']]"
{code}
 

If I invoke the path "normally" from the stylesheet, it returns the correct 
node.
{code:java}
    <xsl:message>
      <xsl:text>Standard selection, literal path string: </xsl:text>
      <xsl:apply-templates mode="identitext" 
select="document('jira-xalanj-2474.xml')/*/NetworkElement[Name='FTMYFLXABB0' 
and Description='Ascend CBX 500' and Id='1000000010' and CreationTime='' and 
LastUpdatedTime='' and Enabled='EnableType.Enabled' and ManagementAddress='' 
and LastDiscovered='2002-05-11 21:21:56.0' and FirstDiscoveryFailure='' and 
LastDiscoveryFailure='' and NumDiscoveryFailures='0' and 
NemClass='com.comanage.truesource.nem.naviscore.NavisCoreNem' and 
ContactAddress='Ipv4Address:172.20.254.1' and Vendor='Lucent' and Model='CBX 
500' and HardwareVersion='03' and SoftwareVersion='04.02.00.00' and 
SerialNumber='' and Supplier='' and PartNumber='' and Clei='' and Label='' and 
Credibility='CredibilityLevel.Medium' and SlotCount='4' and 
AvailableSlotCount='-1' and HostAgent[@xlink:href='nil'] and 
HostSystem[@xlink:href='nil'] and Host[@xlink:href='nil']]"/>
    </xsl:message>
{code}
produces
{code:java}
file:///home/keshlam/git/xalan-test/tests/jira/jira-xalanj-2474.xslt; Line #20; 
Column #18; Standard selection, literal path string: <NetworkElement 
id="NetworkElement_1" package="com.comanage.truesource.schema.physical">
<Name>FTMYFLXABB0 </Name>
<Description>Ascend CBX 500 </Description>
<Id>1000000010 </Id>
<HostAgent xlink:type="simple" xlink:href="nil"> </HostAgent>
<HostSystem xlink:type="simple" xlink:href="nil"> </HostSystem>
<Host xlink:type="simple" xlink:href="nil"> </Host>
<CreationTime> </CreationTime>
<LastUpdatedTime> </LastUpdatedTime>
<Enabled>EnableType.Enabled </Enabled>
<ManagementAddress> </ManagementAddress>
<LastDiscovered>2002-05-11 21:21:56.0 </LastDiscovered>
<FirstDiscoveryFailure> </FirstDiscoveryFailure>
<LastDiscoveryFailure> </LastDiscoveryFailure>
<NumDiscoveryFailures>0 </NumDiscoveryFailures>
<NemClass>com.comanage.truesource.nem.naviscore.NavisCoreNem </NemClass>
<ContactAddress>Ipv4Address:172.20.254.1 </ContactAddress>
<Vendor>Lucent </Vendor>
<Model>CBX 500 </Model>
<HardwareVersion>03 </HardwareVersion>
<SoftwareVersion>04.02.00.00 </SoftwareVersion>
<SerialNumber> </SerialNumber>
<Supplier> </Supplier>
<PartNumber> </PartNumber>
<Clei> </Clei>
<Label> </Label>
<Credibility>CredibilityLevel.Medium </Credibility>
<SlotCount>4 </SlotCount>
<AvailableSlotCount>-1 </AvailableSlotCount>
 </NetworkElement>{code}
 

An attempt to put that string into a *$path* variable and then call 
{*}xalan:execute(string($path)){*}, as they are doing, does not.
{code:java}
    <xsl:variable name="path">
      
<xsl:text>document('jira-xalanj-2474.xml')/*/NetworkElement[Name='FTMYFLXABB0' 
and Description='Ascend CBX 500' and Id='1000000010' and CreationTime='' and 
LastUpdatedTime='' and Enabled='EnableType.Enabled' and ManagementAddress='' 
and LastDiscovered='2002-05-11 21:21:56.0' and FirstDiscoveryFailure='' and 
LastDiscoveryFailure='' and NumDiscoveryFailures='0' and 
NemClass='com.comanage.truesource.nem.naviscore.NavisCoreNem' and 
ContactAddress='Ipv4Address:172.20.254.1' and Vendor='Lucent' and Model='CBX 
500' and HardwareVersion='03' and SoftwareVersion='04.02.00.00' and 
SerialNumber='' and Supplier='' and PartNumber='' and Clei='' and Label='' and 
Credibility='CredibilityLevel.Medium' and SlotCount='4' and 
AvailableSlotCount='-1' and HostAgent[@xlink:href='nil'] and 
HostSystem[@xlink:href='nil'] and Host[@xlink:href='nil']]</xsl:text>
    </xsl:variable>
    <xsl:message>
      <xsl:text>Path string: </xsl:text>
      <xsl:value-of select="$path"/>
    </xsl:message>
    <xsl:variable name="targetNode" select="xalan:evaluate(string($path))"/>
    <xsl:message>
      <xsl:text>Eval(string($path)): </xsl:text>
      <xsl:apply-templates mode="identitext" select="$targetNode"/>
    </xsl:message>
{code}
yields
{code:java}
file:///home/keshlam/git/xalan-test/tests/jira/jira-xalanj-2474.xslt; Line #30; 
Column #18; Path string: 
document('jira-xalanj-2474.xml')/*/NetworkElement[Name='FTMYFLXABB0' and 
Description='Ascend CBX 500' and Id='1000000010' and CreationTime='' and 
LastUpdatedTime='' and Enabled='EnableType.Enabled' and ManagementAddress='' 
and LastDiscovered='2002-05-11 21:21:56.0' and FirstDiscoveryFailure='' and 
LastDiscoveryFailure='' and NumDiscoveryFailures='0' and 
NemClass='com.comanage.truesource.nem.naviscore.NavisCoreNem' and 
ContactAddress='Ipv4Address:172.20.254.1' and Vendor='Lucent' and Model='CBX 
500' and HardwareVersion='03' and SoftwareVersion='04.02.00.00' and 
SerialNumber='' and Supplier='' and PartNumber='' and Clei='' and Label='' and 
Credibility='CredibilityLevel.Medium' and SlotCount='4' and 
AvailableSlotCount='-1' and HostAgent[@xlink:href='nil'] and 
HostSystem[@xlink:href='nil'] and Host[@xlink:href='nil']]
file:///home/keshlam/git/xalan-test/tests/jira/jira-xalanj-2474.xslt; Line #36; 
Column #18; Eval(string($path)):
{code}
 

Simplifying the path string to just the *document()* call shows that this isn't 
even getting that far:
{code:java}
    <xsl:message>Does it work just with document()?</xsl:message>
    <xsl:variable name="path">
      <xsl:text>document('jira-xalanj-2474.xml')</xsl:text> -->
    </xsl:variable>
    <xsl:message>
      <xsl:text>Path string: </xsl:text>
      <xsl:value-of select="$path"/>
    </xsl:message>
    <xsl:variable name="targetNode" select="xalan:evaluate(string($path))"/>
    <xsl:message>
      <xsl:text>Eval(string($path)): </xsl:text>
      <xsl:apply-templates mode="identitext" select="$targetNode"/>
    </xsl:message>{code}
yields
{code:java}
file:///home/keshlam/git/xalan-test/tests/jira/jira-xalanj-2474.xslt; Line #43; 
Column #18; Does it work just with document()?
file:///home/keshlam/git/xalan-test/tests/jira/jira-xalanj-2474.xslt; Line #47; 
Column #18; Path string: document('jira-xalanj-2474.xml')
file:///home/keshlam/git/xalan-test/tests/jira/jira-xalanj-2474.xslt; Line #52; 
Column #18; Eval(string($path)):{code}
So it looks like the root problem is either that *xalan:evaluate()* isn't 
working at all for a string supplied in a variable, or it isn't supporting 
*document()* within that string.

Tried removing the *string()* call, made no difference.

But this is now simple enough that it's worth considering debugging into.

NOTE: It's also simple enough that I can go back to just outputting the results 
rather than using my *identitext* kluge to convert them to text and put them 
into messages. I'll do that and post the simplified testcase.

> document() function returns different values with xalan version 2.7.1. and 
> 2.6.0.
> ---------------------------------------------------------------------------------
>
>                 Key: XALANJ-2474
>                 URL: https://issues.apache.org/jira/browse/XALANJ-2474
>             Project: XalanJ2
>          Issue Type: Bug
>      Security Level: No security risk; visible to anyone(Ordinary problems in 
> Xalan projects.  Anybody can view the issue.) 
>    Affects Versions: 2.7.1
>         Environment: Windows, using command line transform of xalan.
>            Reporter: pavankumar
>            Priority: Blocker
>         Attachments: input.xml, transform.xslt
>
>
> xslt document() function returns duplicate and improper values with 2.7.1. 
> where as the same code works with 2.6.0.
> Info : document and evaluate functions are used in xslt and there were other 
> slightly inconsistent behaviour also for 2 versions in terms of syntax and 
> all. and xlink:href is getting nil values in 2.7.1
> document result contained by path variable line 93 - transform.xsl is the one 
> causing problem. and and when printed, it outputs different values with 
> different versions.
> Executed using xalan CLI
> C:\>java org.apache.xalan.xslt.Process -IN "C:\input.xml" -XSL 
> "C:\transform.xslt" -OUT new.html -PARAM global.result input.xml
> attaching the files.transform.xslt and input.xml



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to