我正在从XML文档生成纯文本文件。在模板中,我有一个使用<p>
,<ul>
,<li>
,<pre>
和其他一些HTML的简化版HTML。
在源文档中,我有一个如下所示的节点:
<p>The respond category obeys the category laws, where respond is the identity and (/>/) is composition:</p>
在模板底部附近,我有以下相关规则:
<xsl:template match="p">
<xsl:text> </xsl:text>
<xsl:apply-templates select="* | text()"/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of disable-output-escaping="yes" select="."/>
</xsl:template>
这很好用。我得到以下输出:
The respond category obeys the category laws, where respond is the identity and (/>/) is composition:
现在,这里出了问题。基于an answer to another SO question,我发现我可以通过对<p>
标记规则进行此更改来将输出转换为换行符:
<xsl:template match="p">
<xsl:variable name="aaa">
<xsl:apply-templates select="* | text()"/>
</xsl:variable>
<xsl:sequence select="replace(concat(normalize-space($aaa),' '), '(.{0,60}) ', ' $1 ')"/>
<xsl:text> </xsl:text>
</xsl:template>
这给我以下输出:
The respond category obeys the category laws, where respond
is the identity and (/>/) is composition:
它正确包裹并留下输出垫。但是,>
符号现在已转义。我尝试将disable-output-escaping="yes"
添加到sequence
,但将saxonb
错误添加到:
XTSE0090: Attribute @disable-output-escaping is not allowed on element <xsl:sequence>
在这种情况下,有没有办法避免转义>
符号?
答案 0 :(得分:0)
我需要添加xsl:output method="text"
,正如Martin在评论中提到的那样。