|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Serge Shikov 2:5020/400 04 Aug 2000 15:31:03 To : All Subject : Re: windows-1251.enc -------------------------------------------------------------------------------- Igor Nikolaev wrote: > > > Мне тут лекцию по XSL/XPath прочитать? Вроде тут ru.perl все-таки? > > Прочитай. Hаверное ничего плохого в этом не будет. > > Я совершенно не боюсь признаться, что наверное > просто не понимаю в чём именно состоит проблема. Да дело не в этом - я этого тоже не боюсь, всего ведь знать нельзя. Просто тут как-бы не совсем то место. Hу ладно, попробую кратко. В XSL (точнее в XPath) есть функция document, которая позволяет обратиться к фрагменту другого документа, заданного URL-ем. Пример: <xsl:template match="price"> <xsl:variable name="curname" select="@currency"/> <xsl:variable name="oldval" select="@value"/> <xsl:variable name="rate" select="document('http://localhost/rates.xml')/rate[@name=$curname]"/> <xsl:element name="price"> <xsl:attribute name="value"> <xsl:value-of select="{$oldval*$rate}"/> </xsl:attribute> </xsl:element> </xsl:template> Т.е. скажем текущий документ - это прайс, в котором у каждой цены (<price>) задана валюта (<price currency="USD" value="99.9">). Курсы конвертации заданы в другом документе, rates.xml, к которому мы обращаемся из темплейта для тэга price. Я для простоты считаю, что конвертация идет в одну фиксированную валюту, то есть курсы заданы например к рублю. В результате всего этого мы берем из одного документа цены, из другого - курсы обмена, и выдаем на выходе исходный документ, но уже с ценами в другой валюте. Понятное дело, что в данном примере кодировка вообще не важна. Hо теперь представим себе, что другой документ - это не таблица курсов, а что-то там с текстами на русском внутри. Исходные документы - каждый в своей кодировке, а на выходе надо вообще сгенерить документ в какой-то третьей кодировке. Hаш XSL-процессор полезет за документом непонятно в какой момент, и непонятно каким способом. Какой-то его кусок, отвечающий за реализацию функции document, этот документ достанет, и что-то там с ним будет делать. Куда мы тут впихнем внешнюю перекодировку, и зачем это надо? P.S. Понятно также, что если XSL-процессор написан на перле, то скорее всего он за документом полезет при помощи LWP например, и можно всунуть перекодировку туда. Только ведь по хорошему LWP нет никакого дела до кодировки документа, который этот модуль достает по http или ftp, и ему не нужно сообщать эту лишнюю для него информацию. --- ifmail v.2.15dev5 * Origin: home (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/28254c13f8f3.html, оценка из 5, голосов 10
|