ссылки в HTML

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
GRM
Активный участник
Сообщения: 103
Зарегистрирован: 16 июл 2014, 11:55
Репутация: 13
Откуда: Санкт-Петербург
Контактная информация:

ссылки в HTML

Сообщение GRM »

накидал небольшой шаблон XSL на основе тех, что есть по умолчанию.
все работает за исключением ссылок.

Из таблицы считываются относительные пути к файлам, в html они отображаются ссылками и открываются, НО с ошибкой: "Не удается найти ..... проверьте правильность пути или адреса в Интернете"
путь выглядит, как кракозябра. (Пути кирилличные, но и кадировку я использую utf -8). Если пути переименовать на англ, то все работает.

Вопрос, как оставить работающие ссылки на русском?
ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: ссылки в HTML

Сообщение ericsson »

Символы за исключением латинских в URL (чем является ссылка) поддерживаются разнообразными костылями, и UTF-8 вам, естественно, не поможет. Символы должны быть закодированы в виде так называемой URL-encoded строки.
http://en.wikipedia.org/wiki/Percent-encoding
http://www.w3schools.com/tags/ref_urlencode.asp
GRM
Активный участник
Сообщения: 103
Зарегистрирован: 16 июл 2014, 11:55
Репутация: 13
Откуда: Санкт-Петербург
Контактная информация:

Re: ссылки в HTML

Сообщение GRM »

ericsson писал(а):Символы за исключением латинских в URL (чем является ссылка) поддерживаются разнообразными костылями, и UTF-8 вам, естественно, не поможет. Символы должны быть закодированы в виде так называемой URL-encoded строки.
http://en.wikipedia.org/wiki/Percent-encoding
http://www.w3schools.com/tags/ref_urlencode.asp
Теперь стало яснее, спс.
НО даже с закодированными ссылками не работает.

Код: Выделить всё

<xsl:choose>
<xsl:when test="FieldValue[starts-with(., '\\')]">
<a href="_blank">
<xsl:attribute name="href">file:///P:\5_****\1_Карта<xsl:value-of select="FieldValue"/>target="_blank" rel="nofollow"</xsl:attribute>
<xsl:value-of select="FieldValue"/>
</a>
</xsl:when>
</xsl:choose>
где из таблицы берется (<xsl:value-of select="FieldValue"/>)
./Приложения/***/2014ГУ.pdf
в самом названии файлов тоже используется кириллица.

Ошибку выдает туже.
ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: ссылки в HTML

Сообщение ericsson »

Я что-то у вас не вижу "закодированных" ссылок.
Так, например, ваше "1_Карта" должно выглядеть, как "1_%D0%9A%D0%B0%D1%80%D1%82%D0%B0"
"Приложения" - как "%D0%9F%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F"
А имя файла "2014ГУ.pdf" должно быть записано, как "2014%D0%93%D0%A3.pdf"
Я не использую ArcGIS и не знаю, какой XSLT-транслятор там применяется, так что могу только чисто теоретически указать на функцию XPath http://www.w3.org/TR/xpath-functions/#f ... de-for-uri - не знаю, поддерживается ли она там, или нет.
Аналогичная вашей проблема http://stackoverflow.com/questions/1756 ... h-xslt-1-0 с частичным решением, правда.
GRM
Активный участник
Сообщения: 103
Зарегистрирован: 16 июл 2014, 11:55
Репутация: 13
Откуда: Санкт-Петербург
Контактная информация:

Re: ссылки в HTML

Сообщение GRM »

Да, я не стал писать закодированный, решил кинуть исходник.
тк с закодированным не работал.
ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: ссылки в HTML

Сообщение ericsson »

Это весьма странный способ описать свою проблему.
А почему у вас символы "\" в пути используются? Должно быть

Код: Выделить всё

file:///C:/Users/
и тому подобное.
В любом случае: попытайтесь открыть в своем browser-е файл, который должен открываться, скопируйте из его адресной строки правильный URL, который сформирован самим browser-ом, и сравнивайте то, что у вас получается, с ним, как с эталоном.
GRM
Активный участник
Сообщения: 103
Зарегистрирован: 16 июл 2014, 11:55
Репутация: 13
Откуда: Санкт-Петербург
Контактная информация:

Re: ссылки в HTML

Сообщение GRM »

ericsson писал(а):Это весьма странный способ описать свою проблему.
А почему у вас символы "\" в пути используются? Должно быть

Код: Выделить всё

file:///C:/Users/
и тому подобное.
В любом случае: попытайтесь открыть в своем browser-е файл, который должен открываться, скопируйте из его адресной строки правильный URL, который сформирован самим browser-ом, и сравнивайте то, что у вас получается, с ним, как с эталоном.
и так я уже пробовал, в браузере открывает все.
и из браузера копировал обратно > не открывает.

Пробовал в отд. меню аркгис создовать гиперссылку, там все работает, но посмотреть html код нельзя.

т.е. в браузере открывает, создание отд гиперссылок получается, НО в xsl шаблоне при той же ссылке - ошибка.
GRM
Активный участник
Сообщения: 103
Зарегистрирован: 16 июл 2014, 11:55
Репутация: 13
Откуда: Санкт-Петербург
Контактная информация:

Re: ссылки в HTML

Сообщение GRM »

ericsson писал(а):Это весьма странный способ описать свою проблему.
Имея оригинал, кодироваться он все равно будет одинаково.
хотя и в обратной последовательности тоже)
GRM
Активный участник
Сообщения: 103
Зарегистрирован: 16 июл 2014, 11:55
Репутация: 13
Откуда: Санкт-Петербург
Контактная информация:

Re: ссылки в HTML

Сообщение GRM »

обновлю тему.
вот до чего дошел с помощью коментов выше.

Код: Выделить всё

<xsl:choose>
<xsl:when test="FieldValue[starts-with(., '.\')]">
<a target="_blank">
<xsl:attribute name="href">fn:encode-for-uri ("file:///P:/5_***/1_Карта<xsl:value-of select="FieldValue"/>)</xsl:attribute>
<xsl:value-of select="FieldValue"/>
</a>
</xsl:when>
<xsl:otherwise>
<p><xsl:value-of select="FieldValue"/></p>
</xsl:otherwise>
</xsl:choose>
в результате получаю, как на картинке.
Если скопировать адрес в chrome, то он открывает
Вложения
Безымянный.png
Безымянный.png (32.61 КБ) 11325 просмотров
ericsson
Гуру
Сообщения: 3321
Зарегистрирован: 27 июл 2009, 19:26
Репутация: 748
Ваше звание: Вредитель полей

Re: ссылки в HTML

Сообщение ericsson »

Вы правда думаете, что browser обязан выполнить функцию XQuery в своей адресной строке? Перекодировка должна быть выполнена до того, как URL будет передан browser-у. И никаких функций там содержаться не должно.
Я вам рассказываю, чего нужно добиться. Как - уже вне моей компетенции, потому что ArcGIS не использую.
GRM
Активный участник
Сообщения: 103
Зарегистрирован: 16 июл 2014, 11:55
Репутация: 13
Откуда: Санкт-Петербург
Контактная информация:

Re: ссылки в HTML

Сообщение GRM »

Я так не считаю, но кодирует он ее если стоит только в этом месте.
Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей