首页 > 解决方案 > 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]" />

我什么都没有。

标签: xslt

解决方案


你有正确的想法,但是你的谓词选择位置是错误的。

您要选择@libelleCompteDeFacturation第二个compteFacturation元素的。

//compteFacturation[2]/@libelleCompteDeFacturation

或者,如果您使用的是 XSLT 2.0 或更高版本,则可以从所选属性的序列中选择第二项(注意括号):

( //compteFacturation/@libelleCompteDeFacturation )[2]

用你的其他表达方式:

//compteFacturation/@libelleCompteDeFacturation[position() = 2] 

正在尝试选择位置为 2 的所有属性,但一个元素只能有一个具有该名称的属性,因此它永远不会超过 1。

并用这个表达式:

//compteFacturation/@libelleCompteDeFacturation/*[2]

您要求的是@libelleCompteDeFacturation属性的第二个子元素。一个属性不能有子元素,所以这永远不会选择任何东西。


推荐阅读