XSLT在输出中包含空元素

时间:2014-11-19 17:45:49

标签: xml xslt sharepoint

我有一些简单的xslt模板,我用它来生成导航 - 导航渲染正常,但我的部分标记被忽略了。

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

我的模板:

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

是否有其他方法可以在模板中渲染出空元素?

1 个答案:

答案 0 :(得分:3)

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

使用

<xsl:output method="html"/>

如果您没有生成名称空间元素或

<xsl:output method="xhtml"/>

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

<sub><xsl:text> </xsl:text></sub>
样式表中的

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