如何在URL中转义方括号
我有一组来自Solr的记录,其中如何在URL中转义方括号,url,xslt,xslt-2.0,saxon,Url,Xslt,Xslt 2.0,Saxon,我有一组来自Solr的记录,其中字段[@name='url']可以采用以下格式: http://url/blabla/blabla.aspx?sv=[keyword%20keyword,%201] 我的理解是,方括号表示数组语法,我想使用XSLT从所有URL中删除方括号 我使用的是一个开放URL解析器,它目前不能很好地处理这些字符。最好的选择是在开放URL解析程序对这些资源进行调解之前,从所有URL中去掉方括号 在某些情况下,每个URL都会多次出现方括号。如果使用标识转换模板和 <xsl
字段[@name='url']
可以采用以下格式:
http://url/blabla/blabla.aspx?sv=[keyword%20keyword,%201]
我的理解是,方括号表示数组语法,我想使用XSLT从所有URL中删除方括号
我使用的是一个开放URL解析器,它目前不能很好地处理这些字符。最好的选择是在开放URL解析程序对这些资源进行调解之前,从所有URL中去掉方括号
在某些情况下,每个URL都会多次出现方括号。如果使用标识转换模板和
<xsl:template match="field[@name='url']">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:value-of select="replace(., '\[\]', '')"/>
</xsl:copy>
</xsl:template>
如果使用标识转换模板和
<xsl:template match="field[@name='url']">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:value-of select="replace(., '\[\]', '')"/>
</xsl:copy>
</xsl:template>
您有一个删除方括号的XSLT 2.0样式表。为什么要去掉方括号,而不是转义它们?我的直觉是使用该函数,该函数将对它们进行百分比编码:
为什么要去掉方括号,而不是避开它们?我的直觉是使用该函数,该函数将对它们进行百分比编码:
我已经按照Martin和Michael的建议测试了这两种解决方案。发送到OpenURL的Url由ID和实际Url组成,如下所示:
<openurl><xsl:value-of select="concat(field[@name='id'],'/', field[@name='url'])" /><openurl>
<openurl><xsl:value-of select="concat(field[@name='id'],'/', replace(field[@name='url'], '\[\]', ''))" /><openurl>
我首先使用fn:replace,如下所示:
<openurl><xsl:value-of select="concat(field[@name='id'],'/', field[@name='url'])" /><openurl>
<openurl><xsl:value-of select="concat(field[@name='id'],'/', replace(field[@name='url'], '\[\]', ''))" /><openurl>
然后
查看XML,url仍然显示方括号。相当困惑的是,我随后进行了一些额外的测试。最后,我尝试对uri使用fn:encode,方括号被替换为形式为%xx的转义序列。然而,由OpenUrl中介的最终URl以某种方式被重新格式化,方括号再次出现。我目前正在调查这个问题
谢谢你
I.我已经按照Martin和Michael的建议测试了这两种解决方案。发送到OpenURL的Url由ID和实际Url组成,如下所示:
<openurl><xsl:value-of select="concat(field[@name='id'],'/', field[@name='url'])" /><openurl>
<openurl><xsl:value-of select="concat(field[@name='id'],'/', replace(field[@name='url'], '\[\]', ''))" /><openurl>
我首先使用fn:replace,如下所示:
<openurl><xsl:value-of select="concat(field[@name='id'],'/', field[@name='url'])" /><openurl>
<openurl><xsl:value-of select="concat(field[@name='id'],'/', replace(field[@name='url'], '\[\]', ''))" /><openurl>
然后
查看XML,url仍然显示方括号。相当困惑的是,我随后进行了一些额外的测试。最后,我尝试对uri使用fn:encode,方括号被替换为形式为%xx的转义序列。然而,由OpenUrl中介的最终URl以某种方式被重新格式化,方括号再次出现。我目前正在调查这个问题
谢谢你
I.真的非常感谢,非常好的建议。请参阅我的帖子以获取更多信息。谢谢,非常好的建议。更多信息请参见我的帖子谢谢,非常有用+1对于你和迈克尔,更多信息请参见我的帖子。谢谢,非常有用+1关于你和迈克尔,更多信息请参见我的帖子。