XSLT disable-output-escaping =“yes”没有换行符

时间:2012-07-20 10:33:13

标签: xslt xslt-1.0

我需要制作能够生成json的XSLT。

问题是我的xml中有<>个符号,需要用<>替换在输出中。但是disable-output-escaping =“yes”会换行,我可以删除这个换行符吗?

XML:

<item id="166" group="0">
<name>Some Titile</name>
<text>&lt;p&gt;A dizzying array of deep, robust color, the Hugs and Kisses bouquet contains one dozen tulips and one dozen iris, fresh from the fields. It's an always-impressive bouquet perfect for a &quot;dinner for two,&quot; a special someone's birthday, or anytime you want to make someone's heart race.&lt;/p&gt;</text>
</item>

我需要的输出

{
    "name": "Some Title",
    "text": "<p>A dizzying array of deep, robust color, the Hugs and Kisses bouquet contains one dozen tulips and one dozen iris, fresh from the fields. It's an always-impressive bouquet perfect for a &quot;dinner for two,&quot; a special someone's birthday, or anytime you want to make someone's heart race.</p>;"
}

XSLT

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

  <xsl:template match="item">
    {
    "name": "<xsl:value-of select="name" />",
    "text": "<xsl:value-of select="text" />"
    }
  </xsl:template>
</xsl:stylesheet>

输出

{
    "name": "Some Title",
    "text": "&lt;p&gt;A dizzying array of deep, robust color, the Hugs and Kisses bouquet contains one dozen tulips and one dozen iris, fresh from the fields. It's an always-impressive bouquet perfect for a &quot;dinner for two,&quot; a special someone's birthday, or anytime you want to make someone's heart race&lt;./p&gt;;"
}

2 个答案:

答案 0 :(得分:0)

如果您想分别生成Javascript代码JSON代码,那么只需使用<xsl:output method="text"/>,这样转换结果中的任何字符都不会被转义,当然也就不需要使用disable-output-escaping。

另一方面,我不明白为什么disable-output-escaping应该产生换行符,所以如果你仍然有问题,请考虑向我们展示XML输入,XSLT代码,你想要的结果和你想要的结果。你得到了,你使用的是哪个XSLT处理器。

答案 1 :(得分:0)

如果要生成JSON,请不要使用disable-output-escaping,请使用文本输出方法:

<xsl:output method="text"/>

使用文本输出方法,没有转义,因此无需禁用它。

我不知道这是否解决了换行问题,因为我不知道是什么导致了这个问题。