我有这个XML文件:
- <recursos>
- <recurso url="http://w3c.com">
- <descripcion>Consorcio W3C</descripcion>
- <tipo>externo</tipo>
- <idioma>ingles</idioma>
- <contenido>General</contenido>
- <unidad>Unidad 2</unidad>
- </recurso>
- <recurso url="http://html.com">
- <descripcion>Especificación HTML</descripcion>
- <tipo>externo</tipo>
- <idioma>castellano</idioma>
- <contenido>HTML</contenido>
- <version>4.01</version>
- <unidad>Unidad 3</unidad>
- </recurso>
- </recursos>
我想比较一个“recurso”的前一个兄弟元素“unidad”与当前“recurso”的“unidad”,以检查它们是否不同。
我在尝试:
- <xsl:if test="preceding-sibling::recurso[position()=1]::unidad != unidad">
- </xsl:if>
但我知道这是非常错误的:(
我希望你能帮助我,非常感谢你。
几乎正确。
- <xsl:if test="preceding-sibling::recurso[1]/unidad != unidad">
- </xsl:if>
::是用于轴,而不是沿着路径移动(“进行位置步骤”)。在XPath术语中:
[1]是[position()= 1]的缩写。
子轴在位置步骤中隐含,所以这样
- preceding-sibling::recurso[1]/unidad != unidad
相当于:
- preceding-sibling::recurso[1]/child::unidad != unidad