xslt - 在 XSLT/Umbraco 中的 for-each 之前检查项目计数

标签 xslt umbraco

我正在 Umbraco 解决方案中使用 XSLT 文件。

如果没有要显示的元素,我希望整个 ul 标记消失:

<ul>
  <xsl:for-each select="umbraco.library:GetXmlNodeById($source)/child::* [@isDoc and string(umbracoNaviHide) != '1']">
    <li>
      <a href="{umbraco.library:NiceUrl(@id)}" class="menuitem">
        <xsl:value-of select="@nodeName"/>
      </a>
    </li>
  </xsl:for-each>
</ul>

如果 foreach 循环没有项目,如何制作跳过整个代码块的 IF 语句?

最佳答案

尝试首先将要选择的节点放入变量中,然后将 ul 元素的输出包装在 xsl:if 中,在其中测试节点数。

类似这样的事情应该做:

<xsl:variable name="children" select="umbraco.library:GetXmlNodeById($source)/child::* [@isDoc and string(umbracoNaviHide) != '1']" />
<xsl:if test="count($children) > 0">
   <ul>
     <xsl:for-each select="$children">
       <li>
         <a href="{umbraco.library:NiceUrl(@id)}" class="menuitem">
           <xsl:value-of select="@nodeName"/>
         </a>
       </li>
     </xsl:for-each>
  </ul>
</xsl:if> 

关于xslt - 在 XSLT/Umbraco 中的 for-each 之前检查项目计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19784183/

相关文章:

xml - 如何通过分层节点与 XSLT 循环?

java - 如何在 xslt 上使用带有身份转换的禁用输出转义

database - Umbraco 数据库问题 - 添加自定义表

asp.net - 如何在umbraco中检查cookie?

xslt - 匹配 XSLT 中的空格分隔值

java - 如何在xsl中显示Java的String类型数组?

c# - 无法加载文件或程序集 'System.Web.Razor' 或其依赖项之一

Umbraco - 获取节点/组中使用的所有标签

angularjs - 在 Umbraco 7 自定义部分中使用 Angular-Datatable

xslt - 无法获得正确的 XSLT 输出