我有以下检查xml中的字符串...但是,我需要创建另一个测试来检查$validItems
第一行变量中的'Null'或没有文本...
<xsl:if test="$validItems[(Caption | CalltoAction)[string(.)]]">
<div class="text">
<xsl:choose>
<xsl:when test="$horizontal">
<div class="holder">
<div class="frame">
<div class="slides-descriptions">
<xsl:apply-templates select="$validItems" mode="horizontal"/>
</div>
<div class="switcher"/>
</div>
</div>
</xsl:when>
<xsl:otherwise>
<div class="slides-descriptions">
<xsl:apply-templates select="$validItems" mode="vertical"/>
</div>
<div class="switcher"/>
</xsl:otherwise>
</xsl:choose>
</div>
</xsl:if>
Run Code Online (Sandbox Code Playgroud)
我将如何测试变量xsl:if test = $ validItems?
如果我明白你的要求,
<xsl:if test="$validItems[(Caption | CalltoAction)[not(string(.))]]">
Run Code Online (Sandbox Code Playgroud)
会做的.换句话说,"如果$ validItems节点集中有一个元素,它有一个字符串值为空的Caption或CalltoAction子元素".你也可以说
<xsl:if test="$validItems[(Caption | CalltoAction)[. = '']]">
Run Code Online (Sandbox Code Playgroud)
XPath数据模型中没有"Null"这样的东西.
至于"变量$ validItems中没有文本",它将有助于了解此变量的类型.如果它是单个元素节点(可能从您显示的代码示例中看到),并且您要测试的是它没有文本节点子节点,则测试将是not($ValidItems/text())
.如果要测试它没有文本节点后代,请尝试not(string($validItems))
或等效,$validItems=''
.