Как поступать при многоразовом использовании одного и того же XML файла?

Energizer

Guest
Как поступать при многоразовом использовании одного и того же XML файла?

Я организовал структуру разделов сайта в XML. Вывожу ее на экран. Теперь мне нужно продублировать структуру разделов но уже внизу страницы - альтернативная навигация. Что посоветуете:
1) после первого обращения к XML - запомнить ее в массив и вывести из него инф-ю
2) сделать другой XSL и повторить операцию трансформации.
 

slach

Новичок
мсье явно непонял принципов применения XML и XSLT ;)
зачем делать еще один XSL ?
если достаточно в первом прописать

.... тут типа HTML код
<xsl:apply-templates select="/document/structure" mode="top"/>

.... тут типа HTML код
<xsl:apply-templates select="/document/structure" mode="bottom"/>


<xsl:template match="/document/structure" mode="top">
.... тут типа HTML код навигация сверху
</xsl:template>

<xsl:template match="/document/structure" mode="bottom">
.... тут типа HTML код навигация снизу
</xsl:template>

? дошло ?? или повторить ?
 

Energizer

Guest
Прикольно. Я новичок в XML.
А как сделать такую проверку? Или XSL файл мне нужно генерить динамически?
 

Energizer

Guest
Вопрос все еще стоит. Слеш, ответь плз.
 

slach

Новичок
;)
а чего отвечать ...
тебе походу дела еще книжек читать и читать...
ты не понимаешь идеологии...

я тебе сказал простую вещь...
не надо использовать с одном скрипте МНОГО XML файлов и много XSLT трансформаций по отдельности... тем более для саблотрона, который весьма тормознутый парсер...

надо все данные собрать в ОДНУ XML well-formed строку
и все шаблоны в одну XSLT строку....

а потом все это дело отдать на растерзание xslt_proccess() ...

ну а как дважды обратиться к одной и то же части XML дерева из XSLT шаблона, я тебе показал в предыдущем сообщении
 

Energizer

Guest
И это по-твоему очевидно?! А не слишком ли круто? Неужели структуру всего сайта ты загнал в одну XSL-ку? Или все-таки в крайности тоже не стоит бросаться?

Спасибо за труды, попробую.
 

Flying

Guest
Кто тебе мешает иметь кучу XSLT файлов и просто генерировать маленький XSLT, содержащий только кучку <xsl:import> того, что тебе необходимо для генерации текущей страницы?
 

Energizer

Guest
Автор оригинала: Flying
Кто тебе мешает иметь кучу XSLT файлов и просто генерировать маленький XSLT, содержащий только кучку <xsl:import> того, что тебе необходимо для генерации текущей страницы?
Я не знаю что такое xslt-файл, а тем более куча.
 

Flying

Guest
Что такое файл - знаешь? :)
Так вот, если в него записать XSLT шаблон, то это будет XSLT-файл :) Таких файлов можно сделать много, т.е. кучу :)

Теперь все ясно? :)
 

Energizer

Guest
В ответ на последнее сообщение Слэша вот что придумал:
пишу скрипт(/index.php) который будет генерить один xsl-поток данных путем echo(). В конце все отлавливаю ob_end_flush() и отправляю колбаситься с моим xml-файлом(структура разделов).
Come on! Кто оценит идею?
 

Energizer

Guest
Автор оригинала: Flying
Что такое файл - знаешь? :)
Так вот, если в него записать XSLT шаблон, то это будет XSLT-файл :) Таких файлов можно сделать много, т.е. кучу :)

Теперь все ясно? :)
Называй вещи своими именами, и тогда люди тебя начнут понимать. Переименуй свой xslt-файл в xsl. И не засоряй форум.
 

[DAN]

Старожил PHPClub
Energizer, во-первых, не груби участникам форума. И не тебе решать, кто тут засоряет форум (пока это ты).

Во-вторых, тебе же объяснили, что никаких генераций xsl-файлов на лету не нужно делать. Пишешь несколько файлов, которые содержат xsl-шаблон для определенного блока информации (участка дерева в DOMXML-объекте). Далее, в скрипте определяешь, какие шаблоны нужно использовать для генерации конкретной страницы, подключаешь их и производишь xsl-трансформацию.

Подключить шаблоны можно либо как описАл Flying, либо как slach. Второй вариант по-моему предпочтительней.

И еще раз настоятельно рекомендую изучить соответствующую литературу. Найди книгу А. Валикова про XSL трансформации и прочитай. В ней есть все ответы на те вопросы, которые ты еще не задал, но 100% сделаешь это не раз.

Если хочешь услышать от нас квалифицированный разжеванный ответ на все твои вопросы, клуб предоставляет платные консультации. По этому поводу связывайся со мной или с slach'ем.
 

Energizer

Guest
Автор оригинала: [DAN]
Energizer, во-первых, не груби участникам форума. И не тебе решать, кто тут засоряет форум (пока это ты).
Я что нарушил правила форума?

Найди книгу А. Валикова про XSL трансформации и прочитай. В ней есть все ответы на те вопросы, которые ты еще не задал, но 100% сделаешь это не раз.
Обязательно куплю, но после 1-й ЗП.

Если хочешь услышать от нас квалифицированный разжеванный ответ на все твои вопросы, клуб предоставляет платные консультации. По этому поводу связывайся со мной или с slach'ем.
А форум тогда для кого? И что-то мне не верится, что вы здесь собрались на одном энтузиазме, времена не те.
 

Flying

Guest
Автор оригинала: [DAN]
Подключить шаблоны можно либо как описАл Flying, либо как slach. Второй вариант по-моему предпочтительней.
Я тоже для себя предпочитаю вариант, который описал slach, но там в общем случае могут возникать проблемы, если шаблоны не независимы, а содержат <xsl:include>/<xsl:import>, потому как полноценный их разбор (с фильтрацией дубликатов и т.п.) - процесс достаточно трудоемкий.
 

[DAN]

Старожил PHPClub
Автор оригинала: Energizer
Я что нарушил правила форума?
Да. И не одно.
Обязательно куплю, но после 1-й ЗП.
Это называется - амортизация производства ;)
А форум тогда для кого?
Форум для всех, кого интересует тема применения xml & xsl в php. Но, задающие вопрос, все хоть маломальски знакомы с этими технологиями. В твоих постах этого не наблюдается. А разжевывать тебе основы и писать готовые решения, извини, свободного времени у меня нет. Может другие помогут ?
И что-то мне не верится, что вы здесь собрались на одном энтузиазме, времена не те.
Тебя это не касается.
 

[DAN]

Старожил PHPClub
Автор оригинала: Flying
Я тоже для себя предпочитаю вариант, который описал slach, но там в общем случае могут возникать проблемы, если шаблоны не независимы, а содержат <xsl:include>/<xsl:import>, потому как полноценный их разбор (с фильтрацией дубликатов и т.п.) - процесс достаточно трудоемкий.
Бесспорно. Но опять же, как спроектируешь. Я в принципе не использую <xsl:include/> по той простой причине, что все "стандартные" шаблоны пихаю в один файл, потом его читаю и, если надо, добавляю тот или иной шаблон в общий DOMXML-объект, содержащий шаблон страницы. Не могу сказать, правильно это или нет, но для себя я решил, что это удобнее :) Да и на быстродействии никак не сказывается.
Единственный минус - могут возникнуть проблемы с памятью (утечки всякие и т.д.), но это проблема пхп в целом. А так главное вовремя объект убить, чтоб память освободить.
 

grinka

Guest
Меня таки очень заинтересовал вопрос: а какова разница в скорости обработки шаблона в одном файле и при использовании <xsl:include>.

Если она проявляется лишь при определённых объёмах, то при каких?
 

Flying

Guest
Если использовать Sablotron - то разница получается существенная. У меня на ~100кб XSLT кода и примерно десятке <xsl:import> время, затрачиваемое только на загрузку/импортирование и т.п. занимает до 30% всего времени обработки. Почему это происходит - разработчики мне объяснить не смогли, но если ты запустишь Sablotron и командной строки типа:
sabcmd -m -L sablot.log test.xsl test.xml test.html
то сможешь сам все увидеть.
 

grinka

Guest
Я бы попросил уточнить - разница какая именно? Что занимает больше времени? :) А то вроде понятно, но всё же боюсь ошибиться.
 
Сверху