0

我需要制作将生成 json 的 XSLT。

问题是我的 xml 中有&lt;&gt;符号,需要在输出中用 <> 替换。但是 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;;"
}
4

2 回答 2

0

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

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

于 2012-07-20T11:01:48.007 回答
0

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

<xsl:output method="text"/>

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

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

于 2012-07-20T11:03:57.097 回答