嗨,伙计们,我一直在尝试使用 eclipse 也使用 saxon 来转换这个 xml 数据,但是当我尝试使用 saxon xslt2.0 进行转换时,我得到一个内存错误,我在 eclipse.ini 中增加了内存,但没有看 xml 我试图如果我使用默认的 eclipse xslt 转换运行它,alter 为 500M,它运行打印完成且没有错误,我返回一个没有节点的 xml,并且一个 url 正确更改但没有在节点中,并且没有其他数据我在这里遗漏了什么吗?
这是 xsl 文件:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="replacedURL">
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="/products/product/buy_link/text()"/>
<xsl:with-param name="replace" select="'[[PARTNERID]]'"/>
<xsl:with-param name="by" select="'12345'"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$replacedURL"/>
</xsl:template>
<xsl:template name="string-replace-all">
<xsl:param name="text"/>
<xsl:param name="replace"/>
<xsl:param name="by"/>
<xsl:choose>
<xsl:when test="contains($text, $replace)">
<xsl:value-of select="substring-before($text,$replace)"/>
<xsl:value-of select="$by"/>
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="substring-after($text,$replace)"/>
<xsl:with-param name="replace" select="$replace"/>
<xsl:with-param name="by" select="$by"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>