XSLT останавливает вывод на пустом в выбранном - PullRequest
0 голосов
/ 18 июня 2011

Сначала я должен заявить, что сегодня впервые коснулся 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">&lt;a href=http://maps.google.de/maps?hl=de&amp;saddr=Hauptstr.%2057%2044789%20Bochum</xslt:text>
        <xslt:text disable-output-escaping="yes">&amp;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">"&gt;</xslt:text>
        <xslt:value-of select="$linktext"/>
        <xslt:text disable-output-escaping="yes">&lt;/a&gt;</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&amp;saddr=Hauptstr.%2057%2044789%20Bochum&amp;daddr=Mainstreet%2023%2012345%20Bochum" target="_blank">

Проблема заключается в названии улицы. Там я получаю:

... &amp;daddr=Mainstreet 23%2012345%20Bochum" ...

, но мне нужно

... &amp;daddr=Mainstreet%2023%2012345%20Bochum" ...

На данный момент я не уверен, действительно ли XSLT останавливается на этом пробеле или URL слишком просто сломан, чтобы обрабатываться должным образом. В любом случае, если бы я мог изменить пробел на «% 20», все было бы хорошо.ссылки от Tomalak помогут мне.

К сожалению, я сейчас дома и должен сам настроить тестовую среду, но мы нашли опцию отладки, поэтому я надеюсь, что это ускорит процесс.

1 Ответ

2 голосов
/ 18 июня 2011

Похоже, что вы стреляете себе в ногу.

<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&amp;saddr=Hauptstr.%2057%2044789%20Bochum&amp;daddr={$link_target_street}%20{$link_target_postalcode}%20{$link_target_city}" target="{$target}">
        <xslt:value-of select="$linktext"/>
    </a>
</xslt:template> 

Обратите внимание, что есть Шаблоны значений атрибутов .

Кроме того, XSLT не имеет встроенногоФункция для выполнения URL-кодирования.Однако это то, что вам нужно сделать, когда вы хотите поместить произвольные значения в URL.

Существует несколько методов для создания кодировки URL *Функция 1014 * доступна для XSLT , зависит от вашего процессора XSLT , какой из них будет работать для вас .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...