<xsl:copy-of select="document('[Только зарегистрированные пользователи могут видеть ссылки. ])"/>
трансформация производится в браузере (FireFox, IE6). xml, к которому подключен xslt лежит на [Только зарегистрированные пользователи могут видеть ссылки. ]. этот самый [Только зарегистрированные пользователи могут видеть ссылки. ], как и [Только зарегистрированные пользователи могут видеть ссылки. ], - это локальный денвер (Apache, PHP 4.3, MySQL 4.1). так вот если написать
Код:
<xsl:copy-of select="document('[Только зарегистрированные пользователи могут видеть ссылки. ])"/>
ссылаясь на локальный файл, то ругани не будет, а если же написать так, как в примере выше, то отказано в доступе.
отсюда вопрос: за что, почему и кому отказано?! и как это преодолеть. потому, что очень хочется.
банальный вопрос безопасности. один хмл-файл не может взаимодействовать с другим хмл файлом с другого сервера, т.к. первый не может контролировать содержимое второго, поэтому не может гарантировать, что оно безопасно )))
вобщем, не стоит особо вникать, что они себе удумали, но факт в том, что документ() работает с внешними юрл только в 7м мегобраузере )) но и тот перед этим спрашивает у юзера можно ли такое загружать.
в принципе есть некрасивое решение -- на локал положить некую заглушку, которая будет хттп-запрос перенаправлять на римоут, и выводить его результаты.
поищи гуглом: "xslt document( external url" ))
я об этом читал в msdn и нашел такой фикс на мозилла.орг, когда они отключили доступ к схемам с другого сервера (ну и соотв доступ к внешним хмл из схем).
На самом деле опасность крос-сайтовой атаки довольно серьезная.
[Только зарегистрированные пользователи могут видеть ссылки. ]
[Только зарегистрированные пользователи могут видеть ссылки. ]
Т. е. причина в том, что если я использую стороннюю XSLT, то та, от имени обрабатывающей ее программы, получает доступ к локальным данным , а результат трансформации может быть отправлен кому-то, кому эти данные совсем ни к чему. Да, в таком запрете есть смысл.