这个问题今天让我发疯了。
(注意我添加了空格来阻止下面的字符被编码)
在输入 XML 文件中,我有 html 文本,例如“& lt;li class=& quot;classname& quot;& gt;”
输入文件已根据我们的需要正确编码。
问题是我通过 XSLT 运行它来将 XML 转换为 CSV。< 一切都很好 & gt;,但 XSLT 正在输出 & quot; 作为'"'。所以我最后求助于下面的xslt段来尝试将嵌入的引号替换回"。
我不知道如何让 xslt 用 & quot; 替换引号,所以,因为我已经在使用 ant 进行 xslt 处理,所以我认为使用 ANT replace 替换 '\" 会更容易' 在 xslt 任务之后加上 & quot;。
现在我要疯了,因为 ANT 也在扩张 并将 \" 替换为 "!!!
所以问题的一部分:1.有没有办法保存&QUOT; 在 xslt 转换期间。(最好) 2. 如果没有,有没有办法将 xslt 中的 " 替换为 & quot; ? 3. 如果它们都不起作用,那么让 ANT 输出 & quot; 而不是 " 的语法是什么(即转义实体)
蚂蚁
<replace file="${dataload.dataDir}/inbound/products/wc_store_locator.csv" token='\"' value=""" />
XSLT
<xsl:call-template name="replace-quotes">
<xsl:with-param name="text" select="notificationMessage"/>
<xsl:with-param name="replace" select="'"'" />
<xsl:with-param name="with" select="'\"'"/>
</xsl:call-template>
<xsl:text>"</xsl:text>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
<xsl:template name="replace-quotes">
<xsl:param name="text"/>
<xsl:param name="replace"/>
<xsl:param name="with"/>
<xsl:choose>
<xsl:when test="contains($text,$replace)">
<xsl:value-of select="substring-before($text,$replace)"/>
<xsl:value-of select="$with"/>
<xsl:call-template name="replace-quotes">
<xsl:with-param name="text"
select="substring-after($text,$replace)"/>
<xsl:with-param name="replace" select="$replace"/>
<xsl:with-param name="with" select="$with"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>