【问题标题】:XSLT/XPath test for 'Null''Null' 的 XSLT/XPath 测试
【发布时间】:2018-06-09 11:31:48
【问题描述】:

我有以下检查 xml 中的字符串...但是,我需要创建另一个测试来检查变量 $validItems 在第一行中是否存在“空”或没有文本...

<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>

我将如何测试变量 xsl:if test=$validItems?

【问题讨论】:

  • 您尝试过xsl:if test="not($validItems)" 或阅读w3.org/TR/xpath/#section-Boolean-Functions 吗?
  • 不清楚你想做什么。 “另一个检查变量 $validItems 中是否存在 'Null' 或无文本的测试” - 您是否要检查 $validItems 中的 any 元素是否有 CaptionCalltoAction 子元素其文本值为空字符串的元素?顺便说一句,XSLT 中并没有真正的“null”之类的东西,只是空字符串/节点集/序列。
  • 我想在 $validItems 中查找 Caption|CalltoAction 中没有文本。如果没有找到文本,我需要 条件。我只是在寻找字符串中没有文本时如何过滤。

标签: xml xslt xpath


【解决方案1】:

如果我明白你的要求,

<xsl:if test="$validItems[(Caption | CalltoAction)[not(string(.))]]">

会做的。换句话说,“如果 $validItems 节点集中的元素具有字符串值为空的 Caption 或 CalltoAction 子元素”。你也可以说

<xsl:if test="$validItems[(Caption | CalltoAction)[. = '']]">

【讨论】:

  • 谢谢 LarsH... 就是这样! [不是(字符串(.))]
【解决方案2】:

XPath 数据模型中不存在“Null”之类的东西。

至于“变量 $validItems 中没有文本”这将有助于了解该变量的类型。如果它是单个元素节点(如您显示的代码示例中所示),并且您要测试的是它没有文本节点子节点,则测试将是 not($ValidItems/text())。如果您想测试它是否没有文本节点后代,请尝试 not(string($validItems)) 或等效的 $validItems=''

【讨论】:

    【解决方案3】:

    这些答案都不适合我,我不知道是不是因为我通过 ODK xforms 使用 xpath。我确实使用这个解决方案让它工作了:

    string-length(string(/path/to/node)) = 0
    

    我已经在日期和数字上对此进行了测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      相关资源
      最近更新 更多