我认为有一个简单的轴或其他东西可以选择所有兄弟姐妹的文本,包括自我,但我似乎无法找到它。
XML:
<panelTabs>
<field></field>
<field></field>
</panelTabs>
我目前在<xsl:template match="panelTabs/field>
,我需要在此模板中。我想检查每个<field>
中的所有值是否为空,我该怎么做?
修改
更具体一点。我希望我的XSLT是这样的:
<xsl:template match="panelTabs/field>
<xsl:if test="allfieldshaventgottext = true">
<p>All are empty</p>
</xsl:if>
<xsl:if test="thereisafieldwithtext = true">
<p>There is a field with text</p>
</xsl:if>
</xsl:template>
而xsl:if
代替xsl:when
修改
我创造了一个新的,更加解释的问题。我在这里:XPath/XSLT select all siblings including self
答案 0 :(得分:2)
您可以使用../*
选择所有兄弟姐妹,包括当前元素(或../field
,以专门选择field
元素。)
所以在你的情况下,你可以这样做:
<xsl:template match="panelTabs/field">
<xsl:if test="not(../field[normalize-space()])">
<p>All are empty</p>
</xsl:if>
<xsl:if test="../field[normalize-space()]">
<p>There is a field with text</p>
</xsl:if>
</xsl:template>
但是,使用模式匹配会更加惯用:
<xsl:template match="panelTabs/field">
<p>All are empty</p>
</xsl:template>
<xsl:template match="panelTabs[field[normalize-space()]]/field" priority="2">
<p>There is a field with text</p>
</xsl:template>
如果您只想检查所有字段是否为空白,则可以执行以下操作:
<xsl:template match="panelTabs[not(field[normalize-space()])]">
<p>All are empty</p>
</xsl:template>
<xsl:template match="panelTabs/field">
<p><xsl:value-of select="." /></p>
</xsl:template>
<xsl:template match="panelTabs/field[not(normalize-space())]" priority="2" />
答案 1 :(得分:0)
如果您检查not(../field[not(normalize-space())])
,那么您就知道没有空字段或仅包含空格。