Xml XSLT在输出中包含空元素
我有几个简单的xslt模板,用于生成导航-导航呈现良好,但我的一些标记被忽略 我需要输出的标记与模板本身无关,但包含我不希望用javascript注入的设计元素 我的模板:Xml XSLT在输出中包含空元素,xml,xslt,sharepoint,Xml,Xslt,Sharepoint,我有几个简单的xslt模板,用于生成导航-导航呈现良好,但我的一些标记被忽略 我需要输出的标记与模板本身无关,但包含我不希望用javascript注入的设计元素 我的模板: <xsl:template match="Rows"> <nav id="nav"> <a href="#" role="button" data-toggle="dropdown" class="opener"> <span class="ico">
<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>
但是空的
元素呈现为嵌套元素:
<span class="ico">
<sub>
<sub>
<sub>
</sub>
</sub>
</sub>
有没有其他方法可以使空元素在模板中呈现出来 您似乎正在生成html,如果您没有告诉xslt序列化为html,它将序列化为xml作为
,使用html解析器作为打开标记进行解析
,这将导致显示的树
使用
如果您不生成名称空间元素或
<xsl:output method="xhtml"/>
如果使用XSLT2或3并生成XHTML命名空间元素,请使用
<sub><xsl:text> </xsl:text></sub>
在样式表中,所以在输出中有一个空格,这样您可以得到
而不是,请添加您使用的XML输入,最好是完整的XSLT样式表,以便我们可以尝试和再现您的问题。就是这样-我正在使用我的模板生成html,这很有效。谢谢你,大卫
我也尝试过
,但添加XSLT空格是有效的。
和
在XML解析后是相同的,所以XSLT的输入是相同的,所以自然会产生相同的输出<代码>
是不同的,但是xslt通常忽略空白,所以它仍然生成相同的输出。我不理解这个答案。为了重现原始问题,您必须做些什么?@michael.hor257k xslt生成了
,但html不会重新编码>
,并接受未关闭的元素,以便使用html解析器进行解析,就像
<sub><xsl:text> </xsl:text></sub>