Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XSLT在输出中包含空元素_Xml_Xslt_Sharepoint - Fatal编程技术网

Xml XSLT在输出中包含空元素

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

我有几个简单的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>

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

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