请使用xslt帮助我将字符串编码为正确的格式。
我的情况是:我有一个xml文件,我需要将其转换为JSON文本,我在xml&中的字符串中看到很多单引号结果JSON结构不合适。怎么处理这个?
<line>brother's sister's</line>
应该导致类似
的JSON{"line": "brother%25s sister%25s"}
答案 0 :(得分:0)
您可以使用递归将'
替换为%25
,例如:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:variable name="apos">'</xsl:variable>
<xsl:template match="line">
<xsl:call-template name="replace">
<xsl:with-param name="input" select="."/>
<xsl:with-param name="from" select="$apos"/>
<xsl:with-param name="to" select="'%25'"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="replace">
<xsl:param name="input"/>
<xsl:param name="from"/>
<xsl:param name="to"/>
<xsl:choose>
<xsl:when test="contains($input, $from)">
<xsl:value-of select="substring-before($input, $from)"/>
<xsl:value-of select="$to"/>
<xsl:call-template name="replace">
<xsl:with-param name="input" select="substring-after($input, $from)"/>
<xsl:with-param name="from" select="$from"/>
<xsl:with-param name="to" select="$to"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$input"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>