xsl方法中的自闭标签:xml

jus*_*nts 3 html xml xslt methods

我正在使用一个使用"xsl method:xml"的网站来创建html模板.但是,当xsl引擎呈现html页面时,我遇到了标签自动关闭的问题.

<div></div> 转换为=> <div/>

由于该方法需要保留xml,或者页面的其他组件无法正确呈现,因此这个问题更加复杂.

有关如何告诉xsl为节点做出特殊异常的任何想法<div>

这个问题类似于这个问题,除了我想保留方法:xml. XSLT自关闭标签问题

kam*_*uel 7

默认情况下,它不能与method = xml一起使用.您可以通过以下几种方式处理它:

选项1 - 切换到method = xhtml

如果你不能切换到method = xml,并且你正在使用XSLT 2.0解析器,也许你可以尝试method = xhtml?

<xsl:output method="xhtml" indent="yes" />
Run Code Online (Sandbox Code Playgroud)

这将使您的结束标记被渲染.

选项2 - 向'div'标签添加空格

或者只是添加<xsl:text> </xsl:text>(标签之间有一个空格)让你<div>不空(当然,如果空间没关系你).

考虑遵循XML:

<div></div>
Run Code Online (Sandbox Code Playgroud)

转换为:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <!-- output is xml -->
  <xsl:output method="xml" indent="yes" />

  <xsl:template match="div">
    <div>
      <!-- note space here -->
      <xsl:text> </xsl:text>
      <xsl:value-of select="text()" />
    </div>
  </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

它产生输出:

<?xml version="1.0" encoding="UTF-8"?>
<div> </div>
Run Code Online (Sandbox Code Playgroud)