xslt - 使用索引从数组中获取值不起作用 - XSL
问题描述
我已经创建了如下所示的数组。
<xsl:variable name="dispatchLiTotal" as="element()*">
<xsl:for-each select=" /*/invoice/invline">
<xsl:if test="/sbo/invoice/invline/deliverytotal">
<xsl:for-each select="deliverytotal">
<xsl:value-of select="subtotal" />
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</xsl:variable>
稍后在我的代码中,我从中获取值,但我只能获取像这样的“字符串连接” 171.15136.92128.99128.99126.00131.15124.611
<xsl:value-of select="$dispatchLiTotal" />
正在返回 171.15136.92128.99128.99126.00131.15124.611
<xsl:value-of select="$dispatchLiTotal[1]" />
正在返回错误:javax.xml.transform.TransformerException:java.lang.ClassCastException:类 org.apache.xpath.objects.XRTreeFrag 无法转换为类 org.apache.xpath.objects.XNodeSet (org.apache.xpath.objects .XRTreeFrag 和 org.apache.xpath.objects.XNodeSet 位于加载程序“app”的未命名模块中)
我的期望是 index[1] 返回 171.15
XML 结构。
<sbo>
<invoice>
<invline>
</invline>
<invline>
<deliverytotal>
<subtotal>171.15</subtotal>
</deliverytotal>
</invline>
<invline>
</invline>
<invline>
<deliverytotal>
<subtotal>136.92</subtotal>
</deliverytotal>
</invline>
</invoice>
我该怎么做?
解决方案
看起来好像您只是想用 eg 选择输入元素作为序列或节点集<xsl:variable name="dispatchLiTotal" select="/*/invoice/invline/deliverytotal/subtotal"/>
,然后$dispatchLiTotal[1]
选择序列或节点集中的第一个元素。这在 XSLT 2/3 或 1 中的工作方式相同,只是技术上在 XSLT 2/3 中您正在处理一个序列,而在 XSLT 1 中它是一个节点集。
推荐阅读
- batch-file - 故意的批处理文件异常
- google-analytics - 我有时会在 Tag Assistant 和 Google Analytics 中获得 2 次综合浏览量
- forms - rasa 2.0.2 上未激活表单
- flutter - 有什么帮助吗?安卓工作室新手
- oracle - 使用 UTL_MAIL.SEND 发送大型 CLOB 消息
- docker - 如何在 GitLab 代码质量 Docker 映像中削减对外部资源 registry-1.docker.io 的寻址?
- c# - 如何在 linq 上的数据库中搜索两个表?
- c# - 使用 Entity Framework Core 实现通用 GetByIds()
- pine-script - 提醒每根柱线收盘的买入或卖出信号
- python - 在heroku dyno上的python中优雅地处理多线程进程