xml – XSLT – 将先前的同级元素与当前节点元素进行比较

前端之家收集整理的这篇文章主要介绍了xml – XSLT – 将先前的同级元素与当前节点元素进行比较前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这个XML文件
  1. <recursos>
  2. <recurso url="http://w3c.com">
  3. <descripcion>Consorcio W3C</descripcion>
  4. <tipo>externo</tipo>
  5. <idioma>ingles</idioma>
  6. <contenido>General</contenido>
  7. <unidad>Unidad 2</unidad>
  8. </recurso>
  9. <recurso url="http://html.com">
  10. <descripcion>Especificación HTML</descripcion>
  11. <tipo>externo</tipo>
  12. <idioma>castellano</idioma>
  13. <contenido>HTML</contenido>
  14. <version>4.01</version>
  15. <unidad>Unidad 3</unidad>
  16. </recurso>
  17. </recursos>

我想比较一个“recurso”的前一个兄弟元素“unidad”与当前“recurso”的“unidad”,以检查它们是否不同。

我在尝试:

  1. <xsl:if test="preceding-sibling::recurso[position()=1]::unidad != unidad">
  2. </xsl:if>

但我知道这是非常错误的:(
我希望你能帮助我,非常感谢你。

几乎正确。
  1. <xsl:if test="preceding-sibling::recurso[1]/unidad != unidad">
  2. </xsl:if>

::是用于轴,而不是沿着路径移动(“进行位置步骤”)。在XPath术语中:

  1. preceding-sibling::recurso[1]/unidad != unidad
  2. ''''''''''''''''' ++++++++++ ++++++
  3. ###
  4. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
  5.  
  6. ' = axis name (optional,defaults to "child")
  7. + = node test (required)
  8. # = predicate (optional,for filtering)
  9. ~ = location step (required at least once per select expression)

[1]是[position()= 1]的缩写。

子轴在位置步骤中隐含,所以这样

  1. preceding-sibling::recurso[1]/unidad != unidad

相当于:

  1. preceding-sibling::recurso[1]/child::unidad != unidad

猜你在找的XML相关文章