ссылки в HTML

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

ссылки в HTML

Сообщение GRM » 25 авг 2014, 13:48

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

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

Вопрос, как оставить работающие ссылки на русском?

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

Re: ссылки в HTML

Сообщение ericsson » 26 авг 2014, 07:27

Символы за исключением латинских в 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 » 26 авг 2014, 09:20

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 » 26 авг 2014, 19:13

Я что-то у вас не вижу "закодированных" ссылок.
Так, например, ваше "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 » 27 авг 2014, 08:59

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

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

Re: ссылки в HTML

Сообщение ericsson » 27 авг 2014, 09:10

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

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

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

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

Re: ссылки в HTML

Сообщение GRM » 27 авг 2014, 09:47

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

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

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

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

т.е. в браузере открывает, создание отд гиперссылок получается, НО в xsl шаблоне при той же ссылке - ошибка.

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

Re: ссылки в HTML

Сообщение GRM » 27 авг 2014, 09:48

ericsson писал(а):Это весьма странный способ описать свою проблему.
Имея оригинал, кодироваться он все равно будет одинаково.
хотя и в обратной последовательности тоже)

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

Re: ссылки в HTML

Сообщение GRM » 01 сен 2014, 14:53

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

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

<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 КБ) 10191 просмотр

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

Re: ссылки в HTML

Сообщение ericsson » 01 сен 2014, 20:57

Вы правда думаете, что browser обязан выполнить функцию XQuery в своей адресной строке? Перекодировка должна быть выполнена до того, как URL будет передан browser-у. И никаких функций там содержаться не должно.
Я вам рассказываю, чего нужно добиться. Как - уже вне моей компетенции, потому что ArcGIS не использую.

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

Re: ссылки в HTML

Сообщение GRM » 02 сен 2014, 08:15

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

Ответить

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

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

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