Страница 1 из 1
ссылки в HTML
Добавлено: 25 авг 2014, 13:48
GRM
накидал небольшой шаблон XSL на основе тех, что есть по умолчанию.
все работает за исключением ссылок.
Из таблицы считываются относительные пути к файлам, в html они отображаются ссылками и открываются, НО с ошибкой: "Не удается найти ..... проверьте правильность пути или адреса в Интернете"
путь выглядит, как кракозябра. (Пути кирилличные, но и кадировку я использую utf -8). Если пути переименовать на англ, то все работает.
Вопрос, как оставить работающие ссылки на русском?
Re: ссылки в HTML
Добавлено: 26 авг 2014, 07:27
ericsson
Символы за исключением латинских в URL (чем является ссылка) поддерживаются разнообразными костылями, и UTF-8 вам, естественно, не поможет. Символы должны быть закодированы в виде так называемой URL-encoded строки.
http://en.wikipedia.org/wiki/Percent-encoding
http://www.w3schools.com/tags/ref_urlencode.asp
Re: ссылки в HTML
Добавлено: 26 авг 2014, 09:20
GRM
Теперь стало яснее, спс.
НО даже с закодированными ссылками не работает.
Код: Выделить всё
<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
в самом названии файлов тоже используется кириллица.
Ошибку выдает туже.
Re: ссылки в HTML
Добавлено: 26 авг 2014, 19:13
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 с частичным решением, правда.
Re: ссылки в HTML
Добавлено: 27 авг 2014, 08:59
GRM
Да, я не стал писать закодированный, решил кинуть исходник.
тк с закодированным не работал.
Re: ссылки в HTML
Добавлено: 27 авг 2014, 09:10
ericsson
Это весьма странный способ описать свою проблему.
А почему у вас символы "\" в пути используются? Должно быть
и тому подобное.
В любом случае: попытайтесь открыть в своем browser-е файл, который должен открываться, скопируйте из его адресной строки правильный URL, который сформирован самим browser-ом, и сравнивайте то, что у вас получается, с ним, как с эталоном.
Re: ссылки в HTML
Добавлено: 27 авг 2014, 09:47
GRM
ericsson писал(а):Это весьма странный способ описать свою проблему.
А почему у вас символы "\" в пути используются? Должно быть
и тому подобное.
В любом случае: попытайтесь открыть в своем browser-е файл, который должен открываться, скопируйте из его адресной строки правильный URL, который сформирован самим browser-ом, и сравнивайте то, что у вас получается, с ним, как с эталоном.
и так я уже пробовал, в браузере открывает все.
и из браузера копировал обратно > не открывает.
Пробовал в отд. меню аркгис создовать гиперссылку, там все работает, но посмотреть html код нельзя.
т.е. в браузере открывает, создание отд гиперссылок получается, НО в xsl шаблоне при той же ссылке - ошибка.
Re: ссылки в HTML
Добавлено: 27 авг 2014, 09:48
GRM
ericsson писал(а):Это весьма странный способ описать свою проблему.
Имея оригинал, кодироваться он все равно будет одинаково.
хотя и в обратной последовательности тоже)
Re: ссылки в HTML
Добавлено: 01 сен 2014, 14:53
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, то он открывает
Re: ссылки в HTML
Добавлено: 01 сен 2014, 20:57
ericsson
Вы правда думаете, что browser обязан выполнить функцию XQuery в своей адресной строке? Перекодировка должна быть выполнена до того, как URL будет передан browser-у. И никаких функций там содержаться не должно.
Я вам рассказываю, чего нужно добиться. Как - уже вне моей компетенции, потому что ArcGIS не использую.
Re: ссылки в HTML
Добавлено: 02 сен 2014, 08:15
GRM
Я так не считаю, но кодирует он ее если стоит только в этом месте.