首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSL: results ()函数和Counting:不准确的结果

XSL: results ()函数和Counting:不准确的结果
EN

Stack Overflow用户
提问于 2014-10-22 18:55:48
回答 1查看 155关注 0票数 0

因此,我一直在试图理解为什么当我输入似乎正确的(语法明智)时,XPath没有返回正确的值。

这里的目标是创建一个Gs1标签,该标签显示“容器”的总量以及哪个容器是当前容器。({总计}的容器{i} )

在这个具体的例子中,for循环遍历ASNShipmentContainers部分,了解ASNShipmentContainers中有6个ASNShipmentContainer,因此打印出6个不同的标签。

我认为,which ()函数将是返回我的foreach循环正在执行的迭代的最佳方法。我上上下下地搜索了一下,并意识到这将是最简单和正确的方法。但是在实现它时,它经常在每个标签上返回一个"1“,而不是递增。

此外,当我试图找到总容器的值时,我使用: count(ASNShipmentContainers/ASNShipmentContainer),,它与foreach循环中声明的内容相同,应该返回我的容器总值6,但这也返回了1。

以下是相关代码:

代码语言:javascript
复制
<xsl:variable name="ROOT" select="." />
<!--For each loop, knows there are 6 iterations-->
<xsl:for-each select="ASNShipmentContainers/ASNShipmentContainer">

    <Section Margins="5,5">


          <!--Start creation of table that will display info here-->
          <Table Width="275" Height="30" Margins="161,0,0,0">
            <Row Height="100%">
                <Cell Borders="Black" Width=".125"/>
                    <Cell Width="274.375">
                        <Text>Count:<xsl:value-of select="position()" /> of <xsl:value-of select="count(ASNShipmentContainers/ASNShipmentContainer))" /></Text>
                    </Cell>
                <Cell Borders="Black" Width=".5"/>
              </Row>
            </Table>


</Section>

</xsl:for-each>

那么,为什么当我这样做的时候,位置值和总容器数量都是"1“。我的理解是,即使在for-each循环中调用它,该位置也应该工作。

另外,如果我要求清点集装箱,难道我不应该收到总量吗?为什么它会给我1分。

我唯一能想象的是,不知怎的,我的循环/select语句的作用域关闭了。这需要再使用一次吗?

编辑:谢谢你的快速反应,但这个问题实际上与XSL无关。在与以前使用过此代码的人一起工作之后,他向我解释说,问题来自我们的C#代码,而不是XSL本身。C#将删除它目前没有处理的所有元素,因此每次我试图计算所有元素时,它都会给我一个,因为从技术上讲,只有一个。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-22 19:45:49

当您处于以下情况时:

代码语言:javascript
复制
<xsl:for-each select="ASNShipmentContainers/ASNShipmentContainer">

这句话:

代码语言:javascript
复制
count(ASNShipmentContainers/ASNShipmentContainer)

尝试计算ASNShipmentContainer元素,这些元素是当前节点的子节点ASNShipmentContainers的子元素。我觉得这不是你想要的。

要在当前级别计数ASNShipmentContainer元素,请尝试:

代码语言:javascript
复制
count(../ASNShipmentContainer)

或者--最好是--在调用for-each之前定义一个带有计数的变量,以避免重复计数相同的事情。

不确定如何处理position() --您必须发布一个更完整的示例,这样我们才能重现问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26515007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档