xslt - XSL 从节点获取下一个值
问题描述
如何从 xml 树中获取下一个值?
List<Noeud> compteFacturation = new List<Noeud>();
compteFacturation.Add(new Noeud("libelleCompteDeFacturation", "Compte N° 1"));
compteFacturation.Add(new Noeud("nombreLigneTraitees", "10"));
compteFacturation.Add(new Noeud("nombreLigneStatutOK", "19"));
compteFacturation.Add(new Noeud("nombreLigneStatutKO", "11"));
compteFacturations.Add(new Noeud("compteFacturation", compteFacturation));
compteFacturation = new List<Noeud>();
compteFacturation.Add(new Noeud("libelleCompteDeFacturation", "Compte N° 2"));
compteFacturation.Add(new Noeud("nombreLigneTraitees", "26"));
compteFacturation.Add(new Noeud("nombreLigneStatutOK", "25"));
compteFacturation.Add(new Noeud("nombreLigneStatutKO", "24"));
compteFacturations.Add(new Noeud("compteFacturation", compteFacturation));
当我这样说时:
<xsl:value-of select="//compteFacturation/@libelleCompteDeFacturation" />
我得到了第一个元素
完成 N° 1
我怎样才能得到第二个
完成 N° 2
?
我努力了
<xsl:value-of select="//compteFacturation/@libelleCompteDeFacturation[position() = 2]" />
或者
<xsl:value-of select="//compteFacturation/@libelleCompteDeFacturation/*[2]" />
我什么都没有。
解决方案
你有正确的想法,但是你的谓词选择位置是错误的。
您要选择@libelleCompteDeFacturation
第二个compteFacturation
元素的。
//compteFacturation[2]/@libelleCompteDeFacturation
或者,如果您使用的是 XSLT 2.0 或更高版本,则可以从所选属性的序列中选择第二项(注意括号):
( //compteFacturation/@libelleCompteDeFacturation )[2]
用你的其他表达方式:
//compteFacturation/@libelleCompteDeFacturation[position() = 2]
正在尝试选择位置为 2 的所有属性,但一个元素只能有一个具有该名称的属性,因此它永远不会超过 1。
并用这个表达式:
//compteFacturation/@libelleCompteDeFacturation/*[2]
您要求的是@libelleCompteDeFacturation
属性的第二个子元素。一个属性不能有子元素,所以这永远不会选择任何东西。
推荐阅读
- google-data-studio - 附加分区表格并混合到同一个 Google Data Studio 数据源中?
- python - 正则表达式:匹配 char + new line before (new line new line)
- python - 在 Python 中使用 Map-Reduce 实现 ARIMA 或 Holt Winter
- c++ - 数组c ++之间的比较
- javascript - 期望一个赋值或函数调用,而是看到一个表达式:Calling function in a return statement
- python - 使用 joblib 加载经过训练的大型机器学习模型
- c++ - 我在连接这些字符串时遇到问题
- c++ - 静态链接外部库问题 - Visual Studio 2019
- spring-boot - 使用 gradle 的 2 个不同构建:一个 spring boot 和一个 non sping boot 可执行文件
- javascript - 在超级账本结构链码中合并 2 个对象