如何获取下一个节点&x27;XSLT中for循环中的s子值
我试图从XSLT中for循环内的下一个节点访问值 XML源是:如何获取下一个节点&x27;XSLT中for循环中的s子值,xslt,Xslt,我试图从XSLT中for循环内的下一个节点访问值 XML源是: <?xml version="1.0" encoding="UTF-8"?> <tree> <parent> <id>1</id> <child> <effective_date>01-09-2019</effective_date> <hours>10</hours>
<?xml version="1.0" encoding="UTF-8"?>
<tree>
<parent>
<id>1</id>
<child>
<effective_date>01-09-2019</effective_date>
<hours>10</hours>
<dept>1</dept>
</child>
<child>
<effective_date>01-10-2019</effective_date>
<hours>20</hours>
<dept>1</dept>
</child>
<child>
<effective_date>01-10-2019</effective_date>
<class>A</class>
</child>
</parent>
<parent>
<id>2</id>
<child>
...
</child>
<child>
..
</child>
</parent>
</tree>
在我最初的xslt中,我在一个for循环中,我根据子元素是否在小时内发生变化有条件地输入该循环。因此这必须在for循环中访问。如果
xsl:for-each
迭代同级元素,那么您可以使用后续同级元素::*
如果对任意序列$SEQ进行迭代,则可以使用以下方法获得下一个元素:
- XSLT2.0:
子序列($SEQ,position()+1,1)
- XSLT1.0:
不要犯使用
$SEQ[position()+1]
的错误,position()
的值在谓词中会发生变化。我看不到下面将“weci:Effective\u Change”作为weci:Effective\u Moment
?@AmrendraKumar:基本上,我想访问下一个有效的变化,weci:Effective\u Moment。我不确定,当我还在for each循环的第一次迭代中时,如何才能实现这一点。使用最少的样本,而不是您的实际数据,您将得到更好的答案。另外,那些嵌套的xsl:choose
不是典型的XSLT流。我现在将其修改为一个更简单的版本,以解释我需要在结果中实现什么谢谢。我在第二个xslt中使用了以下同级::*[1]/我在第一个xslt的输出xml上使用了它,它解决了我的问题。
<?xml version="1.0" encoding="UTF-8"?>
<employees>
<departments>
<department>
<code>1</code>
<weeklyHours>10</weeklyHours>
<validFrom>2019-09-09</validFrom>
<validUntil>2019-10-01</validUntil
</department>
<department>
<code>1</code>
<weeklyHours>20</weeklyHours>
<validFrom>2019-10-01</validFrom>
<validUntil/>
</department>
</departments>
</employees>