我正在尝试使用substring函数转换以下URI参数和相应的值。但是它给出了错误,很明显因为它不是一个字符串
来自:http://host/URI/api/abc/xml?xxx=a-b-c&pqr=123
TO:http://host/URI/api/abc/xml?yyy=d-e-f&pqr=123
输入来自变量。
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dp="http://www.datapower.com/extensions" xmlns:func="http://exslt.org/functions" xmlns:str="http://exslt.org/strings" xmlns:dpfunc="http://www.datapower.com/extensions/functions" xmlns:dpconfig="http://www.datapower.com/param/config" xmlns:regexp="http://exslt.org/regular-expressions" extension-element-prefixes="dp func dpfunc dpconfig regexp" exclude-result-prefixes="dp func dpfunc dpconfig regexp">
<xsl:template match="/">
<xsl:variable name="currentURI" select="dp:variable('var://service/URI')"/>
<xsl:variable name="new-uri" select="regexp:replace($currentURI, 'xxx', 'yyy')"/>
<xsl:variable name="SubStringBeforeyyy" select="substring-before($new-uri, 'yyy=')"/>
<xsl:variable name="SubStringAfteryyy" select="substring-after($new-uri, '&' )"/> <!-- ERROR: -->
<xsl:variable name="NewParmValue" select="'d-e-f'"/>
<xsl:variable name="NewURI" select="concat($SubStringBeforeyyy, $NewParmValue, $SubStringAfteryyy)"/>
</xsl:template>
</xsl:stylesheet>
xmlSpy的错误是:
XML生产错误:字符&#39;&#39;&#39;&#39;在文字中&#39;&#39;&#39;不符合生产的名称&#39;。
答案 0 :(得分:2)
XSLT是XML,所以要编写一个&符号(&
),你需要使用
<xsl:variable name="SubStringAfteryyy" select="substring-after($new-uri, '&' )" />