xml - XSLT 在输出中包含空元素

标签 xml xslt sharepoint

我有一些简单的 xslt 模板,用于生成导航 - 导航渲染得很好,但我的一些标记被忽略。

我需要输出的标记与模板本身无关,但包含我不想用 JavaScript 注入(inject)的设计元素。

我的模板:

<xsl:template match="Rows">
<nav id="nav">
    <a href="#" role="button" data-toggle="dropdown" class="opener">
        <span class="ico">
            <sub />
            <sub /> 
            <sub />
        </span>
        <span>Menu</span>
    </a>    
    <xsl:apply-templates select="Row[@FileDirRef = '/Lists/GlobalNavigation/GlobalNav']">
        <xsl:sort select="@DisplayOrder"/>
    </xsl:apply-templates>
</nav>
</xsl:template>

但是空的<sub>元素呈现为嵌套元素:

<span class="ico">
  <sub>
    <sub>
      <sub>
      </sub>
    </sub>
  </sub>

是否有另一种方法可以做到这一点,以便空元素将在模板中渲染出来?

最佳答案

你似乎正在生成html,如果你没有告诉xslt序列化为html,它将序列化为xml如 <sub/>它使用 HTML 解析器作为开放标记进行解析 <sub>这将导致您显示的树。

使用

<xsl:output method="html"/>

如果您没有生成 namespace 元素或

<xsl:output method="xhtml"/>

如果您使用 XSLT2 或 3 并生成 XHTML 命名空间元素或使用

<sub><xsl:text> </xsl:text></sub>

在样式表中,因此输出中有一个空格,因此您会得到 <sub> </sub>而不是<sub/>

关于xml - XSLT 在输出中包含空元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27023487/

相关文章:

php - 如何在 PHP 中使用 DOMDocument 检测 XML 元素是否为空?

Javascript XSLT 转换省略 xml 声明

xml - 如何在xquery中的 "if statements"语句中使用 "let"

php - 如何处理通过 POST 发送的 XML?

java - Android list 属性 "name"文件错误

javascript - 一些 Jquery 中的错误

python - 在 Saxon/C 中使用条件包含/静态参数?

javascript - 使用 SPServices UpdateListItems 在 SharePoint 2013 中设置日期

sharepoint - 识别 Sharepoint 网站

.net - 如何从事件处理程序中的 SPItemEventProperties 获取当前添加的项目到 SPList?