首先我必须说明我今天第一次触及XSLT,因为有朋友请我帮忙。
我们正在尝试为GMaps生成链接。只要我们使用的变量中没有空格,一切都会起作用。这是代码。
<xslt:template name="buildmaps">
<xslt:param name="linkstart"/>
<xslt:param name="link_target_street"/>
<xslt:param name="link_target_postalcode"/>
<xslt:param name="link_target_city"/>
<xslt:param name="linktext"/>
<xslt:param name="target"/>
<xslt:text disable-output-escaping="yes"><a href=http://maps.google.de/maps?hl=de&saddr=Hauptstr.%2057%2044789%20Bochum</xslt:text>
<xslt:text disable-output-escaping="yes">&daddr=</xslt:text>
<xslt:value-of select="$link_target_street"/>
<xslt:text disable-output-escaping="yes">%20</xslt:text>
<xslt:value-of select="$link_target_postalcode"/>
<xslt:text disable-output-escaping="yes">%20</xslt:text>
<xslt:value-of select="$link_target_city"/>
<xslt:text disable-output-escaping="yes">" target="</xslt:text>
<xslt:value-of select="$target"/>
<xslt:text disable-output-escaping="yes">"></xslt:text>
<xslt:value-of select="$linktext"/>
<xslt:text disable-output-escaping="yes"></a></xslt:text>
</xslt:template>
$ link_target_street变量出现问题。看起来像“Bahnhofstr.9”。我们的链接就像“http://maps.google.de/...daddr=Hauptstr。”一样。所以一切都停在Hauptstr之间的空白处。和9。
我能做点什么吗?
提前谢谢。更新
现在我知道我正在使用XSLT 1.0。所以没有替代我:(
现在有点关于输出:
它应该是这样的:
<a href="http://maps.google.de/maps?hl=de&saddr=Hauptstr.%2057%2044789%20Bochum&daddr=Mainstreet%2023%2012345%20Bochum" target="_blank">
问题在于街道名称。我得到了:
... &daddr=Mainstreet 23%2012345%20Bochum" ...
但我需要
... &daddr=Mainstreet%2023%2012345%20Bochum" ...
此时我不确定XSLT是否真的停在这个空白处,或者Url是否因为太破坏而无法正确处理。无论哪种方式,如果我可以将空白更改为'%20'一切都会好的。我想Tomalak的链接可能会帮助我。
不幸的是,我现在在家,必须自己设置一个测试环境,但我们找到了调试选项,所以我希望这会加快这个过程。
答案 0 :(得分:2)
看起来你是在脚下射击自己。
<xslt:template name="buildmaps">
<xslt:param name="linkstart"/>
<xslt:param name="link_target_street"/>
<xslt:param name="link_target_postalcode"/>
<xslt:param name="link_target_city"/>
<xslt:param name="linktext"/>
<xslt:param name="target"/>
<a href="http://maps.google.de/maps?hl=de&saddr=Hauptstr.%2057%2044789%20Bochum&daddr={$link_target_street}%20{$link_target_postalcode}%20{$link_target_city}" target="{$target}">
<xslt:value-of select="$linktext"/>
</a>
</xslt:template>
请注意,Attribute Value Templates。
此外,XSLT没有内置函数来进行URL编码。但是,当您想要将任意值放入URL时,您需要执行此操作。
有一个few methods to make a URL-encoding function available to XSLT,它取决于您的XSLT处理器which one would work for you。