Вопрос по XML + XSLT

NetImperia

Guest
Вопрос по XML + XSLT

Скажите пожалуйста,а возможно в XSLT брать данные не из одного XML а из нескольких и обрабатывать?

Если да то как?

А то сайт довольно сложный и все данные раскиданы по разным файлам...


Заранее спасибо
 

slach

Новичок
смотри в Мануале по XPath ф-цию document();

пример
<xsl:variable name="doc1attrslist" select="document('http://www.site.com/doc1.xml')/nodes/path/@attrslist"/>
<xsl:value-of select="$doc1attrslist" />
 

sokov

Guest
Можно ещё динамически генерировать XML и просто include'ить небоходимые документы (на всякий случай вырезав их декларации).
 

NetImperia

Guest
Хм... Я смотрю ну все есть... Во навернули ;)
 

politen

Guest
(slach)

может объяснишь тогда, почему не срабатывает данная конструкция:
<xsl:variable name="foo" select="document('http://gde.to.tam/probe.xml')"/>

содержимое probe.xml:
<?xml version="1.0"?>
<source>
<title>Probe</title>
<author>John Smith</author>
</source>

Вылетает ошибка: Warning: Sablotron error on line ##: XML parser error 4: not well-formed
XSLT processing error: XML parser error 4: not well-formed
где ## - общее количество строк в xsl файле
Без строки, содержащей вызов функции document() (не важно в каких тегах - и в вариабле и иф...) все нормально. Если же http://gde.to.tfm/ опустить, то ошибка - arg:/probe.xml не найден. Стоит же поставить этот заголовок или file://, то лезет вышеприведенная ошибка про нот веллформед.
 

politen

Guest
я фигею. может кто-нибудь объяснит:
Вот так вот заработало
<xsl:variable name="foo" select="document('file://probe.xml','.')"/>
 

politen

Guest
дополнительно.....
только для UTF кодировки. КХММММ.....
 

politen

Guest
Автор оригинала: slach
<? xml version="1.0" encoding="windows-1251"?>
proboval ?
оф коусе, пробовал. На хостере (валуехост.ру) не поддерживается данный энкодинг в хмл файлах. Говорят, мало кому нужно. Весь прикол еще в том, что если кодируешь файл в УТФ-8 кодировку, то саблотрон отказывается вообще с ними работать. Поэтому приходится сначала джоинить файл, потом его конверитровать с вин1251 в УТФ-8, потом только использовать саблотрон, а потом результат обратно из УТФ-8 в вин1251. гиморр.
 

sokov

Guest
Politen, здарова!

Что значит НЕ ПОДДЕРЖИВАЕТСЯ ЭНКОДИНГ XML ФАЙЛОВ????
Проблема в том, что там как-то криво собран XSLT, в общем, его не натравили на iconv и он работает только с Unicode.
Я подробностей не знаю, но эта тема проходила - поищи.
В этом, кажись проблема...
 

NetImperia

Guest
Я к примеру добавил в XSL <xsl:eek:utput encoding="iso-8859-1"/>
И нормально перекодируется... Туда-же и русскую можно...
 

slach

Новичок
=)
короче... валуй в попочку =) sablotron без поддержки iconv собран... а expat, который пользуется саблотроном по дефолту держит всего лишь четыре кодировки UTF-8, ISO-8859 и чего то там еще...
 

sokov

Guest
slach, а где это видно? Что-то в phpinfo() не нашёл.
Ну подскажи хостинг, где всё нормально собрано...
 
Сверху