[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Inconsistent XPath Evaluation

Subject: Inconsistent XPath Evaluation
From: "Richard Patchet" <rpatchet@xxxxxxxxxx>
Date: Wed, 21 Jan 2004 17:45:49 -0600
xpath evaluation
I have a transform that cross-references an external file for some data.
The expressions were created by copying the long expressions from the
first for-each loop of the transform to the second for-each loop and
changing just the "parentcir_" literal to "childcir_" in the latter
xpaths. I am using Saxon 6.5.3 throughout.

I added some debugging displays between the "cmdId" attribute and the
"count" element unrelated to the original transform:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:opl="http://www.a4networks.com/schemas/opl" version="1.1"
exclude-result-prefixes="xsl opl">
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
  <xsl:strip-space elements="*"/>
  <xsl:template match="/">
    <xsl:element name="btradeCollaborationReport">
      <xsl:copy-of select="/btradeCollaboration/header"/>
      <xsl:for-each
select="/btradeCollaboration/linkCmdList/linkCmd/link/parent[not(itemId
!= '')]">
        <xsl:element name="cmdStatus">
          <xsl:attribute name="cmdId">
            <xsl:value-of select="concat('parentcir_', ../../@cmdId,
'-', position())"/>
          </xsl:attribute>
          <xsl:variable name="test" select="concat('parentcir_',
../../@cmdId, '-', position())"/>
          text:<xsl:value-of
select="document('dbResultDoc.xml')/ResultSet/ResultList[@query-id =
concat('parentcir_', current()/../../@cmdId, '-',
position())]/@query-id"/>:
          var:<xsl:value-of
select="document('dbResultDoc.xml')/ResultSet/ResultList[@query-id =
$test]/@query-id"/>:
            <xsl:element name="count">
            <xsl:value-of
select="document('dbResultDoc.xml')/ResultSet/ResultList[@query-id =
concat('parentcir_', current()/../../@cmdId, '-',
position())]/Result/Row/tradeItem/updateCount"/>
          </xsl:element>
        </xsl:element>
      </xsl:for-each>
      <xsl:for-each
select="/btradeCollaboration/linkCmdList/linkCmd/link/child[not(itemId
!= '')]">
        <xsl:element name="cmdStatus">
          <xsl:attribute name="cmdId">
            <xsl:value-of select="concat('childcir_', ../../@cmdId, '-',
position())"/>
          </xsl:attribute>
          <xsl:variable name="test" select="concat('childcir_',
../../@cmdId, '-', position())"/>
          text:<xsl:value-of
select="document('dbResultDoc.xml')/ResultSet/ResultList[@query-id =
concat('childcir_', current()/../../@cmdId, '-',
position())]/@query-id"/>:
          var:<xsl:value-of
select="document('dbResultDoc.xml')/ResultSet/ResultList[@query-id =
$test]/@query-id"/>:
            <xsl:element name="count">
            <xsl:value-of
select="document('dbResultDoc.xml')/ResultSet/ResultList[@query-id =
concat('childcir_', current()/../../@cmdId, '-',
position())]/Result/Row/tradeItem/updateCount"/>
          </xsl:element>
        </xsl:element>
      </xsl:for-each>
    </xsl:element>
  </xsl:template>
</xsl:transform>


The source XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="t_linkPrepareDBReport.xslt"?>
<btradeCollaboration force="true">
  <header>
    <username>rbat</username>
    <transactionId>link2004-01-20T16:58:40-6:00</transactionId>
  </header>
  <linkCmdList>
    <linkCmd cmdId="5" type="LINK">
      <link>
        <parent>
 
<catalogueItemReference>100444222010174442223333309840</catalogueItemRef
erence>
        </parent>
        <child>
 
<catalogueItemReference>000444219010034442223333309840</catalogueItemRef
erence>
        </child>
      </link>
    </linkCmd>
    <linkCmd cmdId="6" type="LINK">
      <link>
        <parent>
 
<catalogueItemReference>100444222011164442223333309840</catalogueItemRef
erence>
        </parent>
        <child>
 
<catalogueItemReference>000444219210014442223333309840</catalogueItemRef
erence>
        </child>
      </link>
    </linkCmd>
  </linkCmdList>
</btradeCollaboration>


The cross-reference file:

<?xml version="1.0" encoding="UTF-8"?>
<ResultSet resultLists="14"
correlation-id="link2004-01-20T16:58:40-6:00">
  <ResultList results="1" query-id="parentcir_5-5">
    <Result rows="1">
      <Row cols="1">
        <tradeItem>
          <id>298</id>
          <status>1</status>
          <updateCount>0</updateCount>
        </tradeItem>
      </Row>
    </Result>
  </ResultList>
  <ResultList results="1" query-id="parentcir_6-6">
    <Result rows="1">
      <Row cols="1">
        <tradeItem>
          <id>299</id>
          <status>1</status>
          <updateCount>0</updateCount>
        </tradeItem>
      </Row>
    </Result>
  </ResultList>
  <ResultList results="1" query-id="childcir_5-1">
    <Result rows="1">
      <Row cols="1">
        <tradeItem>
          <id>294</id>
          <status>1</status>
          <updateCount>0</updateCount>
        </tradeItem>
      </Row>
    </Result>
  </ResultList>
  <ResultList results="1" query-id="childcir_6-2">
    <Result rows="1">
      <Row cols="1">
        <tradeItem>
          <id>296</id>
          <status>1</status>
          <updateCount>0</updateCount>
        </tradeItem>
      </Row>
    </Result>
  </ResultList>
</ResultSet>


The output:

<?xml version="1.0" encoding="UTF-8"?>
<btradeCollaborationReport>
   <header>
      <username>rbat</username>
      <transactionId>link2004-01-20T16:58:40-6:00</transactionId>
   </header>
   <cmdStatus cmdId="parentcir_5-1">
          text:parentcir_5-1:
          var:parentcir_5-1:
            <count>0</count>
   </cmdStatus>
   <cmdStatus cmdId="parentcir_6-2">
          text:parentcir_6-2:
          var:parentcir_6-2:
            <count>0</count>
   </cmdStatus>
   <cmdStatus cmdId="childcir_5-1">
          text::
          var:childcir_5-1:
            <count/>
   </cmdStatus>
   <cmdStatus cmdId="childcir_6-2">
          text::
          var:childcir_6-2:
            <count/>
   </cmdStatus>
</btradeCollaborationReport>


It makes no sense to me why the xpath expression works for with
"parentcir_" but not "childcir_" and that it works with the concat() in
a variable but not in the xpath.

What am I missing here?

Richard Patchet
bTrade, Inc.
2324 Gateway Drive
Irving, TX 75063
972-5802981
www.bTrade.com

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.