XSLT计算空节点之前的所有兄弟元素

时间:2018-04-25 12:29:50

标签: xml xslt

这是我正在处理的XML文件类型的框架。

SubConvertTemp()
Centigrade=MsgBox(Do you want to convert to centigrade?"),vbYesNo)
InputNumber=Val(InputBox("Enter a temperature for conversion?"))
If Centigradde= vbYes Then 
ConvertedTemp= ((9/5 *InputNumber)+32)
MsgBox((InputNumber & " degrees C converts to " & ConvertedTemp &" Degrees F."))
Else: ConvertedTemp=(5/9)*(InputNumber-32)
MsgBox(InputNumber & "degrees F converts to " & ConvertedTemp & "degrees C.")
Worksheets.("Sheet 1).Cells(InputNumber,ConvertedTemp).Offset(-1,0).Value="Name"
end sub

我想在第一个空节点之前计算所有兄弟元素。 在示例中,我希望从上面的元素返回4。

我尝试了<table><tr> <td>x</td> <td>y</td> <td>q</td> <td>z</td> <td></td> <td>o</td> </tr></table> ,但它返回0.

我做错了什么?

谢谢。

2 个答案:

答案 0 :(得分:3)

假设您位于文档节点上(或者更确切地说,是table节点的父节点),您想要的表达式就是这个......

<xsl:value-of select="count(table/tr[1]/td[.=''][1]/preceding-sibling::*)" />

如果您位于table节点上,只需将其缩短为此...

<xsl:value-of select="count(tr[1]/td[.=''][1]/preceding-sibling::*)" />

答案 1 :(得分:0)

在下面找到答案代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="2.0">
    <xsl:template match="/">
        <xsl:value-of select="count(//tr[1]//td[. = ''][1]/preceding::td)"/>
    </xsl:template>
</xsl:stylesheet>