![]() |
приступил к изучению, но вот только не как не пойму, как это все работает)
IE 6 какуето несоурядицу показывает, может надо какойто можуль устонавливать дополнительно? не в плом, наваяйте простенький рабочий пример XSL XHTML чтобы работал в IE 6, чтонибудь типа hello world с красивастями показывающие возможности. спасибо. |
FADE
чего то я тебя не понимаю... может ты хотел спросить про XLT ??? |
Vlad Drakula нет именн0 XHTML - прил0жение XML.
80т п04итай: XML сегодня Из наиболее значимых этапов современного развития XML и различных технологий на его основе надо отметить следующие. Ноябрь 1999 г. Выход языка XSLT, позволившего преобразовывать одно XML-представление данных в другое с учетом возможной разницы в организации этих данных и в наборах тегов. Обновленный вариант таблиц стилей XSLT 2 готовится к опубликованию в ближайшее время. Январь 2000 г. Выход языка XHTML 1.0, представляющего семантику последней версии HTML 4.01 в виде XML-файлов. Май 2001 г. Опубликована версия XHTML 1.1, реализующая модульный подход к созданию XHTML-файлов, что позволило анализировать эти файлы одинаковыми способами в разных операционных системах (в 2003 г. появилась версия XHTML 2.0, определяющая синтаксис HTML с помощью трех DTD-документов). В этом же месяце усилиями WWW-консорциума увидела свет концепция XML Schema, которую в свое время предложила Microsoft, чтобы, видимо, полностью избавиться от наследия SGML. Концепция предназначалась для борьбы с главным недостатком XML – отсутствием в XML-документе жесткой привязки к определению типа документа DTD, ключевой концепции SGML. В XML возможность указания DTD-документа входила, но была необязательной, что нередко лишало XML-документы смысла, так как без определения значений тегов и их взаимосвязи такие документы нельзя было корректно интерпретировать. На смену определениям типов документов DTD была призвана идея XML-схем. XML Schema позволила описывать структуру XML-документа и дополнила DTD средствами указания типов данных для различных тегов, что решило проблему использования одинаковых тегов в разных целях. Она не устранила главный недостаток XML, но оказала стимулирующее воздействие на разработчиков XML-документов, подтолкнув их к применению схем. В то же время создалось впечатление, что Microsoft предложила схемы с целью внести раскол в сообщество XML-разработчиков и вновь перетянуть одеяло XML на себя. Корпорация выпустила свой вариант XML Schema еще до официального одобрения этой концепции консорциумом WWW, а затем ее примеру последовали другие производители. Кроме того, с появлением XML Schema возникла потребность в технологиях преобразования XML-данных с одной схемой в эти же XML-данные, представленные с помощью другой схемы. В результате был предложен универсальный формат Web-данных RDF, упростивший этот процесс. Но массового распространения он пока не получил . Июнь 2001 г. Технология Xlink добавила интеллекта гиперссылкам XML – теперь стало возможным указывать, например, сценарий действий программы при щелчке пользователя на конкретной ссылке. Технология XML Base позволила передавать элементы XML-документов по частям, что дало возможность понизить нагрузку на сети, где работали XML-приложения, и оптимизировать процесс обработки XML-данных . Технология XPointer ввела в XML средства формирования указателей на объекты любых типов и любые их части (не только элементы текста). Август 2001 г. Вышел язык SMIL 2.0, ориентированный на поддержку XML-документов в мобильных телефонах с доступом в Интернет. Сентябрь 2001 г. Опубликовано описание языка SVG 1.0 – средства независимого представления векторной графики в Сети на основе XML (в нынешнем году появилась версия SVG 1.2, дополненная средствами качественного рендеринга, динамического формирования графических образов, поддержкой графики в разных форматах и т. д.). Февраль 2002 г. Технология XML-Signature определила принципы использования электронной подписи XML-документов. Текущий год богат на новые и обновленные XML-приложения и технологии. В феврале была наконец опубликована предварительная рекомендация стандарта XML 1.1. Потребность в совершенствовании XML возникла прежде всего в связи с развитием кодировки Unicode и новыми возможностями Unicode 2.0. Стало допустимым использовать произвольные кодировки символов в названиях элементов, удалось уйти от проблем с представлением символов перевода строки в разных операционных системах. Отметим, что WWW-консорциум разработал свою кодировку UCS (Universal Character Set), основанную на стандартах Unicode Standard и ISO/IEC 10646, и рекомендовал применять ее при построении всех текстовых материалов в Сети. Были выпущены описания языка подготовки Web-форм XForms 1.0 , в котором разделены способы представления внешнего вида форм и их содержания, а также языка EMMA, задающего способы взаимодействия между человеком и программами в Сети. Этот язык определяет, как использовать XML для интерпретации информации, получаемой от пользователя не только через обычный графический интерфейс, но и в виде речевых сигналов, жестов, рукописного текста и пр. Важной вехой в развитии СУБД стал документ по универсальному языку запросов к базам данных XML Query 1.0, синтаксически напоминающему SQL и Бейсик. XML Query позволяет готовить сложные запросы не только к реляционным данным, но и к информации, организованной иерархически и другими способами (при условии, что она хранится в XML-формате или ее можно просматривать в XML-представлении). Консорциум OASIS, выросший, как уже говорилось, из группы SGML Open, специализируется на разработке открытых стандартов э-бизнеса, действуя при этом в тесной связке с WWW-коллегами. Среди его последних материалов – язык XLIFF для разметки и форматирования данных с учетом региональных стандартов и графическая нотация моделирования бизнес процессов BPMN 1.0, ориентированная на технических и бизнес-специалистов. Среди готовящихся к выпуску спецификаций XML-приложений такие, например, как язык описания трехмерных интерактивных миров X3D, призванный заменить язык виртуальной реальности VRML, и вторая версия языка представления математических выражений MathML, позволяющая описывать с помощью набора ANSI-символов внешний вид математических формул и их смысл. Интересно, что в сентябре Тим Бернерс-Ли, директор WWW-консорциума, выдвинул идею коммерческого лицензирования ряда ISO-кодировок, задающих коды национальных языков, стран и валют. К чему приведет подобная инициатива, пока сказать сложно. |
FADE
то что ты имел в виду это действительно XLT - это преобразование. броузеры его не умеют делать да и незачем им это уметь... для этого нужен сервер или специальная программа! XHТML - это не язык програмирования, да и XML тоже. XML это всеголишь правила зранения структурированных данных. если в результате получается программа, то это означает что XML задает данные и алгоритмы, но все равно это не язык програмирования! |
Vlad Drakula
э, разве XHTML это не язык разметки? Добавлено: для браузера есть какойнить примерчик?:) |
FADE
а в чем проблемма? XHTML - это тотже HTML только с более строгими правилами синтаксиса! |
Vlad Drakula
спасибо за пример |
Что еще можно сделать с XML + XSLT + XSL
на форуме я не однократно упоминал о связке "XML + XSLT + XSL"
чтожь пока начинать расскаживать о ней более подробно... XML - формат данных позволяющий кронить как данные так и их структуру расположения, этот формат предполагает древовидную иерархию. XSLT - это язык програмирования, на нем создаются преобразования одного XML дома в другой XML дом (грубо говоря) XSL - это правила визализации (некий потомок CSS) все три формата разработывались паралелно, но при этом все они являются XML файлами. все это было придумано для упрощения обмена и преобразования данных. |
Есть вполне неплохие туториалы от тех людей, которые в общем то стандартизацией этих технологий занимаются:http://www.w3schools.com/default.asp
|
|
|
еще один хороший ресурс по XSLT zvon.org
|
Господа модераторы, чего спите? Давайте развивать тему! Тема очень перспективная и интересная. А то понагоняли понтов и в кусты. :tease: Давайте переходить к примерам. Лучше с самых простейших. :sorry: :tomato:
|
benya
а ты например вопросы задавай... |
давайте пример для hello world
давайте разберем пример: test.xsl Код:
<?xml version="1.0" encoding="windows-1251"?> |
E-mail
этот темплейт заменяет все элементы "item" во входном XML Код:
Код:
Код:
Код:
Код:
вставляем текст ссылки Код:
то ссылку нужно выделить жирным Код:
|
Цитата:
2. откуда беруться @href и @txt 3. насколько я понял это талица стиля, но если ее открыть IE 6 то ничего не видно, можно пример связывающий мой пример полной работы с данными используя эти технологии? ну просто чтобы всем наглядно было и понятно как это работает.. |
Vlad Drakula
RSS тоже можно отнести в эту группу как разновидность XML? |
Цитата:
|
vadimiron
Цитата:
elfoflorien RSS это XML файл с определенным DTD |
в связи с тем что доки у нас не в чести, лично привожу выписку о том как это бзать из доки по ПХП
The simplest type of transformation with the xslt_process() function is the transformation of an XML file with an XSLT file, placing the result in a third file containing the new XML (or HTML) document. Doing this with sablotron is really quite easy... Пример 1. Using the xslt_process() to transform an XML file and a XSL file to a new XML file PHP код:
Пример 2. Using the xslt_process() to transform an XML file and a XSL file to a variable containing the resulting XML data PHP код:
The above two cases are the two simplest cases there are when it comes to XSLT transformation and I'd dare say that they are the most common cases, however, sometimes you get your XML and XSLT code from external sources, such as a database or a socket. In these cases you'll have the XML and/or XSLT data in a variable -- and in production applications the overhead of dumping these to file may be too much. This is where XSLT's "argument" syntax, comes to the rescue. Instead of files as the XML and XSLT arguments to the xslt_process() function, you can specify "argument place holders" which are then substituted by values given in the arguments array (5th parameter to the xslt_process() function). The following is an example of processing XML and XSLT into a result variable without the use of files at all. Пример 3. Using the xslt_process() to transform a variable containing XML data and a variable containing XSL data into a variable containing the resulting XML data PHP код:
Finally, the last argument to the xslt_process() function represents an array for any top-level parameters that you want to pass to the XSLT document. These parameters can then be accessed within your XSL files using the <xsl:param name="parameter_name"> instruction. The parameters must be UTF-8 encoded and their values will be interpreted as strings by the Sablotron processor. In other words - you cannot pass node-sets as parameters to the XSLT document. |
а это код движка шаблонов с использованием XSLT
PHP код:
|
Так что выполняет эти преобразования, браузер или некий текстовый "просессор"?
|
benya
и то и другое может это делать. |
benya я бы сказал гипертекстовый :)
|
E-mail
Цитата:
XSLT это не таблица стилей это шаблонное преобразование "дома"! |
Господа, а кто подскажет нормальный XSLT парсер для PERL. Нашел Sablotron, да вот не нравится он мне совсем и установка его тоже ;)
|
Глоссарий по XML
Не знаю точно куда бросить: в Программирование, Вэбмастеру или вообще во Флейм. Пока кидаю в Вэбмастеру, далее модеры решат...
Тут давеча искал в инете фигню всякую, дык наткнулся на такой ресурс: Глоссарий по стандартам платформы XML Цитата:
|
Ну, со статическими простыми документами более менее понятно - взяли XML документ и с XSL документом протянули через "процессор" и на выходе получили то, что надо.
Но вот как обрабатываются страницы с динамическим контентом, где происходит выборка из базы данных итд.? Это не совсем понятно. Как обрабатываются типичные сайты у которых есть к примеру слева : Меню,поиск, баннера. Справа: анонсы, колонка новостей. Чего генерить то? Все генерим в XML, а в самом конце прямо с ходу обрабатываем? Делать один XSL шаблон или с маленькими подшаблончиками, и как-то их туда подключаем? Опять же возвращаясь к разделяемости дизайна от программной части. Встраивать "теги" XML в скрипт можно? Это уже ведь не дизайн ;) Или чем-то тоже XML спецефическим генерить? |
benya
1) разрабатываешь концепцию веб приложения и его структуру 2) разрабатываешь дом модель 3) генеришь XML с сответствующим домом 4) преобразовываешь его в посошью соответствующего XSLT преобразования. XSLT файл это не шаблон! это преобразование! которое можен содержать много шаблонов! |
1) А что Вы скажете о скорости работы сайта с приминением таких технологий? Ведь по сути мы имеем 2 обработки (?) Первая генерация XML , а потом еще одна, которая и выводит HTML.
Сайт с вшитым HTML работать то быстрее будет?? И даже eval 2 раза тоже №)) Или нет? ;) 2)В чьи обязанности входит ковыряться в этих самых XSL файлах? Программиста или дизанера?? Мол, я вывел вам все необходимые данные, а вы "визуализируйте" ;) |
benya
1) если программер проффи то по скорости вшитый намертво дизайн не обогнать... по моим представлениям евал будет меддленнее т.к. к нему не применяется оптимизация и кеширование. 2) есть такая профессия XSLT верстальщик... |
to: Vlad Drakula
1)Ну если XSL не шаблон, то по крайней мере очень на него похож, только вот... с логическими структурами. 2)Нет, тут даже не 2 прохода, а 3 (!). Генерация XML, потом проход черех XSLT процессор, а только потом принт. Для сравнения с вшитым дизайном - генерация и вывод происходят одновременно, тоесть сразу (!). Выгода налицо. :read: Ок. Скажите мне тогда,господа, те кто вопил про "порочность" вшитого дизайна : Что будет легче менять дизайн в кодах или рыться в XSL файлах? Там ведь и логика и переменные, даже циклы с сортировкой, не дай Бог что потерять :search: И возвращаясь (извините за занудство) опять к тому магазину, любой сотрудник поправит дизайн или уже при любых телодвижениях придется обращатся не к программисту, а к... XSLT верстальщику? :tease: |
benya
XSLT проще чем пхп + изменять набора шаблонов на много проще чем изменять обработку запросов из базы... к томуже это позваляет производить реюзин шаблонов на разных страницах + позволяет производить быструю смену дизайна + иметь несколько скинов.. и т.д.... |
Vlad Drakula
приведи пожалст код sample.xml и sample.xsl для полноты обзора |
мдя. По поводу вшитого дизайна - остаюсь при своем. При таком подходе, как описывает Влад, benya получается кругом прав. Что-то тут порочно-многоступенчатое получается (что имхо не менее порочно, чем одноступенчатый вариант :ninja: )
Vlad Drakula - ты можешь действительно привести пример, из которого бы было ясно who is где. (в смысле где чья работа?) Или у вас просто супер-мега-монстр-фирма, создающая супер-мега-приложения и имеющая супер-мега деньги за которые держит конвейр с армией разработчиков-кодеров-верстальщиков-дизайнеров и, соответственно, в случае изменения чего-то там все эти муравьи несутся с соломинками на свои рабочие места? - Сайты, которые вы делаете люди потом сами поддерживают, или они остаются навечно в вашем саппорте от бд до дизайна? Если первое, вопрос пержний, что происходит, когда люди хотят что-то изменить? Если второе, то даже microsoft предаставляет народу некоторую свободу действий в виде API или реестра :sorry: (ты извини, я специально утрирую, просто понять хочу, что в мире происходит :)) |
mar
Цитата:
надесю на выходных я представлю вам веб приложение которое построено по такой технологии... собственно я и взялся за редизан с целью чтобы администратор мог сам менять дизайн и не дергать меня, когда ему понадобится какнибуть перетрехнуть дизайн... или дизайнер сам его перетряхивал... я предоставляю информауию, а как ее отобразить решают они мами... XSLT нужно применять в место евалов(веть именно так сделано большенство шаблонов в современных форумах) для применения шаблонов... |
Vlad Drakula
Цитата:
Цитата:
А разве не вы писали в каких-то ветках форума что форумы типа phpbb используют eval? $) Цитата:
Цитата:
Вот Вам "правила визуализации", Вы можете сами прикрутить любой дизайн быстро и легко, а можете несколько дизайнов сразу да еще с несколькими языками. С оговоркой. Если Вы сами этого сделать не можете, наша компания за "небольшие" деньги готова за Вас эту работу сделать. ;) P.S. У своего хостера вообще я не видел упоминания о XSLT. Видимо массового паломничества на эту технологи не наблюдается. Будем "клянчить" ;) |
benya
Цитата:
я не видел форумов с использованием XSLT Цитата:
Цитата:
как можно заметить скорость работы и возможности ее распаралелить на много возрастают! |
Vlad Drakula
уже понятней :) (кстати, не знаю, как в шаблонах, реализованных для стандартных форумов, а вообще в классах шаблонов под PHP eval используется далеко не всегда. Насколько мне помнится, этого нет ни в phplib, ни в fasttemplate.) |
Vlad Drakula
Цитата:
Цитата:
А я пишу в Perl :tomato: Там нужен какой-то связующий модуль с XSLT процессором. Мне обьяснили (сотрудники службы поддержки) на форуме хостера что нужно писать в саппорт на мыло с веским обоснованием, типа зафиг мне все это. Интересно как обосновать то, что бы не выглядело личными потребностями, а типа на общих основаниях? :) Типа W3C рекомендует? Или хочу визуализировать как пихипишники? :yahoo: |
benya
1) а что ты не можешь ставить свои модули на сервер? 2) на самом деле XSLT не особо сложнее HTML ;) |
Vlad Drakula
1)Нет, конечно. У меня же не выделенный сервер ;) Все ставят сами админы если им надоедать через службу поддержки. К тому же они там сами не плавают в том что такое XSLT и с чем его едят. 2) Спасибо, я заметил. |
benya
ну... не знаю... я вот знаю хостеров которые позволяют даже собственный подуль пхп собирать на сервере. |
Vlad DrakulaЛюди то разные бывают, такого могут насобирать :o
|
Vlad Drakula,
Цитата:
xslt_process - выполняет XSLT-трансформацию. Описание: mixed xslt_process (resource xh, string xml, string xsl [, string result [, array arguments [, array parameters]]]) xslt_process() это краеугольный камень нового расширения XSLT. Она даёт возможность выполнять XSLT-трансформацию с использованием почти всех типов источников ввода. Это делается с помощью буферов аргументов -- концепции, взятой из Sablotron XSLT-процессора (в настоящее время - единственного XSLT-процессора, который поддерживается данным расширением). Самая простая трансформация функцией xslt_process() - это трансформация XML-файла XSLT-файлом с помещением результата в третий файл, содержащий новый XML (или HTML)-документ. Сделать это с помощью sablotron действительно довольно легко ... Пример 1. Использование xslt_process() для трансформации XML-файла и XSL-файла в новый XML-файл PHP код:
Пример 2. Использование xslt_process() для трансформации XML-файла и XSL-файла в переменную, содержащую результирующие XML-данные PHP код:
Это были два простейших случая XSLT-транфсормации, и я могу с уверенностью сказать - самые распространённые случаи, однако иногда вы получаете ваш XML и XSLT-код из внешних источников, таких как БД или сокет. В этих случаях у вас будут XML и/или XSLT-данные в переменной -- и в работающих приложениях перегрузка при дампе их в файл может оказаться значительной. Вместо файлов как аргументов XML и XSLT для xslt_process(), вы можете специфицировать "заглушки документов", которые затем замещаются значениями из массива аргументов (5-й параметр функции xslt_process()). Далее идёт пример процессинга XML и XSLT в результирующую переменную вообще без использования файлов. Пример 3. Использование xslt_process() для трансформации переменной, содержащей XML-данные, и переменной, содержащей XSL-данные, в переменную, содержащую результирующие XML-данные PHP код:
Наконец, последний аргумент функции xslt_process() это любые параметры, которые вы хотите передать в XSLT-документ. Можно получить доступ к этим параметрам внутри ваших XSL-файлов с помощью инструкции <xsl:param name="parameter_name">. ждем приложения ;) Цитата:
|
Не дождемся видать приложения. Ок. Есть следующий вопрос!
Имеем хмл файл: PHP код:
Так вот вопрос, как же его превратить этот \n в <br/>??? Раньше вопрос решался очень просто - фильтром в скрипте, а теперь как??? Текст, то в HTML одну строчку пойдет... |
benya
Насколько я себе представляю, правильный метод в данном случае - использовать внутри тега item XHTML разметку. Т.е. делать все требуемые преобразования на этапе генерации XML. Ну и в схеме xml-файла тогда это как-то надо укзать, если нужна валидация (как - не знаю, ибо никогда не валидировал xml, что в общем-то неправильно). И самое главное. Задача XSLT - преобразование иерархических XML-документов, а не текста (пусть и "внутри" какого-то тега). Для работы с текстом используются всё те же банальные регэкспы. |
Цитата:
|
benya
я думаю что нужно написать нечто вроде этого: <xsl:template match="item/text()"> <xsl:value-of select="replace(., '\n', '<br/>')" disable-output-escaping="no" /> </xsl:template> |
Vlad Drakula
а приложение обещенное когда покажешь?.. |
Vlad Drakula
А что такое replace(., '\n', '<br/>')? В спецификации я такого не видел. А вообще я уже решил проблему вот этим disable-output-escaping. Думаю мне подойдет. А еще предлагали мне использовать целые огромные куски кода для решения сего. Мне не понравилось и я делаю переводы сразу со скрипта. E-mail Нафиг они те фреймы, тут технологию нужно так сказать оседлать ;) |
E-mail
Цитата:
benya Цитата:
|
Vlad Drakula
скоро это когда? когда на пенсию выйдешь?:) уже второй месяц идет, еще несколько таких месяцев и ты в гробу будешь;) поспеши с приложением! в гробу отдохнешь, ты там вечность целую лежать будешь:) |
Господа, есть следующий XML документ:
Код:
<?xml version="1.0" encoding="windows-1251"?> соответствующие элементы списка. Типа так: Код:
Название извлекается из одного и того же места правила переопределяют друг друга. Как бороться? |
benya
нузно использовать именованные шаблоный с параметрами + разные моды преобразования |
Кстати, а с какой версией XSLT работает LibXSLT??? Что-то я обнаружил что...1.0. (Sablotron вроде тоже.) Зачем же тогда спецификация 1.1 не говоря уже про 2.0 если её ничто не поддерживает?
|
benya
2,0 есть в саксоне... |
Saxon работает под win32 (?). На самом деле мне у своего хостера не удалось даже установить LibXML, не говоря уже о LibXSLT. Они в каком-то диком ужасе от этих модулей.
Как-то все оно медленно распространяется... Никому оказывается это не нужно. Я уже так привык в "деревьях" ковыряться.. Бред какой-то. |
benya
саксон работает под явой, так что он есть под всеми операционками... benya дело в том что людей хорошо владеющих XSLT очень мало... а тех кто может вытворить на нем все что еще мало... но если не умело им пользоваться можно вогнать сервер в такой ступор... |
На самом деле в ступор сервер можно вогнать чем угодно. Взять image-magick и сутками крутить по кругу фото 10 мегапикселей. Это и так ясно. Но мне ответили что никому кроме меня это не нужно из более 3000 клиентов. А может и просто не захотели возиться с модулями, так как там добрый десяток зависимостей модулей и столько ж пакетов. Досадно как.
|
benya
ну... вроде это не сложно устанавливать... Цитата:
|
Vlad Drakula
Цитата:
Кстати вопрос - кто-нибудь использовал XML/XSL шаблоны под PHP? Что о них можно сказать? Чем парсится? Я имею в виду ситуацию, типа следующей (нагло содрано из книги :)) : Код:
.... Еще два вопроса: насколько удобно использование таких шаблонов - по скорости (особенно здорово было бы в сравнении с FastTemplate и php-templates). - По удобству (для программиста) (по сравнению с шаблонами, используищие принцип парсинья блоков и переменных, вроде того, что тут (специально делаю пример, аналогичный предыдущему): Код:
<!--- дальше идет блок повторяющихся данных, берущихся из базы ---> |
mar
Цитата:
Цитата:
Цитата:
PHP код:
Цитата:
2) XSLT это стандарт W3C а FastTemplate и php-templates нет... по этому это более перспективный выбор особенно в крупных проектах... т.к. позволяет полностью разграничить функции функциональности и представления... програмист занимается только создаием XML документа а уже потом XSLT верстальщик "натягивает" на него представление. скоро... (как обычно) я наверно напишу клас для работы с XSLT в качестве шаблонного движка. |
Влад
спасибо за пример, но я просила пропарсить повторяющийся блок данных :) - вопрос про скорость: про скорость твоей работы я поняла :). Хотелось бы услышать по поводу скорости работы получающейся программы в целом - в упомянутых мной темплейтах используется вполне себе стандартный html (кстати, при этом, скорей всего, с таким же успехом в качестве файла шаблона можно использовать и xhtml и xml (туда же можно вставить признаки болков и переменные в фигурных скобках) В общем, пока непонятно :[ Цитата:
|
mar
еще раз перечитал твой вопрос... но не уверен что я его понял... у тебя есть данный от базы... пихает их в XML PHP код:
PHP код:
HTML код:
|
а ты оффлайн справочник по теме имеешь какойнибудь?:)
может поделишься?:) хватит спамить мне мыло с сообщениями о том что форум уже работает:) |
E-mail
у меня есть онлайн справочник + большой опыт работы с XSLT |
Vlad Drakula
онлайн справочник - это интернет чтоли?:) |
та, вот еще
Александр Календарев. Шаблонизация на XSLT. Приемы и примеры Цитата:
|
Господа, помогите решить задачу!
Есть небольшой список, нужно выбрать только пять элементов, два с начала и два с конца элемента который установлен в selected="yes" Тоесть в этом случае нужно выбрать элементы : Код:
<item id="30"/> P.S. Кстати, это вопрос из темы постраничного вывода (как на этом форуме, отображать пять страниц, даже если их больше). Код: Код:
<?xml version="1.0" encoding="windows-1251"?> |
benya
я думаю что примерно так: правдо я сомневаюсь что по памяти написал без ошибок названия осей... select="item[foluing-sibling::item[position() lt 3][@selected='true'] or @selected='true' or presiding-sibling::item[position() lt 3][@selected='true']]" Цитата:
|
Да, примерно так оно и есть ;)))
Цитата:
|
Пожалуйста помогите новичку:
нужно написать скрипт в XSL-шаблоне на JavaScript'е. Все вроде бы нормально, но символ & в теле скрипта не воспринимается. Т.е. выдается ошибка: Error number: 2 Error string: XML parser error 4: not well-formed (invalid token) на любое вхождение & в условие или просто в строку. Что это?! Помогите кто чем может... |
Кстати, если вернуться к мультиязычности сайтов. Как можно прописать по-человечески encoding?
На русскую версию нужно windows-1251, на английскую utf-8. Можно было предположить что-то типа этого: encoding="{$lang}", но так на самом деле сделать то и нельзя... 2 отдельных главных документа создавать? Как это вообще решается? Код:
<xsl:output method="html" indent="yes" encoding="windows-1251" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd"/> asdfga, Нужно соблюдать правила экранирования, тоесть & записывается как Код:
&amp; Код:
&lt; &gt; |
так...
я тут наткнулся на один очень не приятный момент. XML не я вляется валидным HTML и на оборот... и есть ряд разлачий, по этому если вам нужен именно HTML то обязательно выставляете в параметрах то что вам нужен HTML, а то потом будете долго париться и искать ломанную верстку! |
XML это и есть большай обстракция!!!
XML это дерево. но не просто дерево элементов... в этом дереве есть элементы разных классов... XHTML это тоже дерево... причем по синтакчису XHTML файлы относятся в подвиду XML. а теперь как это нужно использовать: у нас есть данные, мы их сериализуем в XML после чего применяем XSL который преобразует XML в другой XML (и ничего другово) но в нащих сихал чтобы исходящи XML был XHTML для этого в XSL нужно просто одни теги заменить на другие о поменять разметку так как хочешь чтобы это выглядело в XHTML взято из разговора с одним человеком |
меня часто спрашиваю что использовать для написания XSL
я в рабочих целях использую XML Spy |
вопрос: как сделать XSL преобразование на стороне клиента?
ответ: Цитата:
|
Vlad Drakula xml spy хм..
может какинибудь при очередном создании xsl запишишь видиоэкзампл?:) по крайней мере тебе это будет быстрее воплотить нежели тут все еще ждать рабочего примера;)) |
E-mail
а что за рабочий пример тебе нужен? |
Vlad Drakula,
Как можно сделать группировку по трем знаениям? |
я долго обещал показать сайт который использует XSL в качестве движка шаблонов...
вот он: http://soft.oszone.net/ |
Vlad Drakula
это к тому, что ты переделал Software? Или Gi? Или вы оба :) ? Когда успели :) ? |
mar
ну... я достаточно быстро уперся в то что чтобы что то поменять во внешнем виде мне нужно менять PHP код... что мне не очень хочется... по этому я сел и переделал... что увеличило гибкость движка в разы + усложнило создание не валидного HTML... |
Vlad Drakula
Цитата:
|
mar
например расчитывает показывать сслылку "следующие 10 програм" сам шаблон без участия php. php так же не участвует в разбиениям по датам на главной странице. |
Цитата:
Цитата:
Цитата:
Цитата:
|
mar
Цитата:
|
Vlad Drakula
как беруться из базы? можно поподробнее об xmlquery? --- по поводу совт.осзон - а нельзя придать выводимому коду человекоподобный вид?:) |
E-mail
Цитата:
PHP код:
Цитата:
Цитата:
|
Все это смахивает на какое-то шаманство ;) Где собственно отделение логики от контента??? ;)))))
Чем дальше тем больше понимаешь что мы просто перетаскиваем часть кода из PHP или PERL в шаблонные правила XSLT. Дизайнеру там делать нечего ;)) А еще к слову что XSLT не сложнее HTML отвечу на собственный вопрос по поводу группировки по трем значениям (подсказали умные люди на форуме). Тоесть создание древовидного меню с уникальными значениями: Входной XML Код:
<menu> Код:
<xsl:key name="category" match="item" use="@category"/> Код:
<category name="Рафтинг и сплавы"> |
benya
суть в разделении ин6формации и то как она отображается! |
Цитата:
|
vadimiron
еще раз... я не однократно тыпаюсь показать что при использовании XSL граница между кодом и шаблоном смещается! и раскладка становится такой: PHP + SQL: собирают данные которые нужно отобразить XSL: уже отображает данные так как нужно! Цитата:
|
Не, я не говорю, что это как то сложно или непонятно, просто каждый сам для себя эту самую границу устанавливает
|
а я бы вообще все разбиение постаралась сместить в SQL :)
Цитата:
Vlad Drakula опиши, пожалуйста, этапы обработки ну вот хоть этого запроса. Что мы имеем между SELECT и инткрфейсом, который видим? (это я между прочим к лишним (или необходимым?) этапам, числу вовлеченных в процесс трансляторов и скорости :). |
Vlad Drakula я уважаю кроссинги во всех проявлениях, но на первом месте всегда всеже предлагаю держать человеческий фактор
benya еще не придумали ничего сложнее html |
E-mail,
На счет последнего сообщения - как раз наоборот. Код:
еще не придумали ничего сложнее html |
mar
PHP код:
|
E-mail
а что ты понимаешь под человеческим фактором? benya Цитата:
|
benya причем тут придержка стандартов и сложность?
Vlad Drakula это когда ты пишешь для машин, а не для людей |
Vlad Drakula
я именно про лишнюю (или дополнительную, как кому приятнее :)) ступень, через которую гонятся еще раз все данные уже выходного файла. |
mar судя по всему у Вас богатый опыт в опщении с субд, а знаете ли Вы, увааемая мной девушка, о такой СУБД как Cache? :)
в отличии от оракла и других организаторов данных реляцией таблиц, у нее реляция xml :) бытует мнение что представление данных в виде документа для человека естественней, чем в виде реляций таблиц. |
и тут приходит на помощ такой язык оформления как xsl, который задает любой вид приятный пользователю, но уже в рамках документа.
при этом все рамки для бд великого Кодда о том, что же есть такое Реляционная модель на грани краха. |
E-mail
куда-то тебя не туда понесло. Cache относится к постреляционным базам данным, там задействована модель Online Transaction Processing, используется система многомерных данных, объектная система и т.д и т.п. (Если есть желание поговорить о математике, то лучше в отдельном топике и позвав кого-нибудь из активных математиков :)) Кроме того там реальзован объектный доступ и масса интерфейсных хвостиков. Вот отдним из таких хвостиков (и не более) и является xml. Т.е. ни в коем случае не хранение данных в xml, а полноценная поддержка и трансформация напрямую в объекты Cache и обратно. что-то много народу помледние дни поминают Cache всуе. Не далее, как на днях на сайте вакансий некий супеумный рекрутер требовал от разработчиков баз данных знания Squid Cache. До меня тогда даже не сразу дошло в чем дело :) |
В Cache вроде всё равно всё идет через SQL
|
mar, Squid Cache может быть вот это http://www.squid-cache.org/ :)
|
vadimiron
а куда же без него :) Но sql (по крайней мере как язык для нас, а не его реализация в СУБД) по-моему, все-таки напрямую не связан с реляционной алгеброй (т.е. со способом организации хранения данных). Куда-то нас от XML + XSLT + XSL явно уносит :) Если так будет продолжаться, пирдется выделить ветку под СУБД :) |
предыдущее было ответ на sql
По поводу сквида - конечно :) По крайней мере мне другой не попадаося =) А HR-manager просто слышал звон, как всегда начиняя требования по вакансиям умными словами :) |
народ не уклоняемся то темы!!!
mar а что за лишние элемены ты увидила в приведенным мной алгоритме? |
mar мне остается встать на защиту бедного hr-менеджера, поскольку не вижу ничего страшного в том что sql можно связать с реляционной алгеброй. по сути язык и является реляцией по канонам алгебры, во как завязал, а поповоду каше и сквида, просто однофамильцы, и как мне кажется Вы уважаемая девушка их перепутали :)
почему вспомнил про каше, так только по тому что вывод из бызы формируется уже в xml, соответственно остается использовать только xsl и php |
Vlad Drakula примеров от тебя никаких не жду, но обещание есть обещание, смотри всю ветку..
разговор поддерживаю чисто из любопытства рынка и маркетологических иследований не связанных с рынком :) |
E-mail
:flood: Вы поняли что сказали? Объясняю на пальцах 1) ответ про SQL относился к ПЕРВОМУ вопросу vadimiron: "В Cache вроде всё равно всё идет через SQL" и никакого отношения к HR и прочим отвлеченным шуткам не имеет (просто он запостил вопрос про сквид пока я писала ответ про sql) 2) ЦЕЛОЕ НАЗВАНИЕ базы данных и ВТОРОЕ СЛОВО в названии proxy-сервера действительно общие. HR употребил(а) ПОЛНОЕ НАЗВАНИЕ proxy-сервера (а не второе слово) (тем самым показав, что не знает сути ни того, нидруго, а просто пользуется умными it-словами) 3) мне было бы достаточно трудно перепутать вещи, которые я знаю одно - теоретически (за пока еще редким применением в общей практике постреляционных СУБД) (бд), а второе - увы!- на практике (прокси-сервер). 4) Фраза "До меня тогда даже не сразу дошло в чем дело" обозначает, что юмор ситуации дошел не сразу (т.е. не сразу дошло, зачем в предложении такое, казалось бы странное требование) 4) рассказ о HR был выдан по некоей ассоциации с употреблением людьми не совсем знакомых понятий (кто-то выдернул из описание бд "xml" и поставил во главу угла (отчего мне и пришлось пускаться в объяснения), или мне это приснилось? =)) Народ, спрашиваю совета, что делать со всем этим оффтопом? почистить и убрать в отдельную ветку, или пусть лежит, если дальше развиваться не будет? :) |
mar не стоит объясняться, то что это флуд или не флуд это можно отнести к любому месажу, а то что прокси сервер отличается от бд и все остальное, пригодится просто для прочтения обсуждаемого. Мое уважение к Вам в нисколькой мере не снизилось, а Ваш авторитет не упал, попробуйте ради интереса отправить резюме незнающему хр-менеджеру, уверен у Вас большое будущее ;)
Не стоит меня боятся, не стоит объяснять каждое свое выражение - сам - не дурак, нить тяну и слежу за ней :) и чтобы в завершении никто не подумал что это в не к теме или уж тем более флуд, скажу что знание cache и xml в самых низких уровнях, достаточно ценится на рынке в любом случае:) я вот кстати сейчас пытаюсь найти литературу по t-sql в виде оффлайн справочника и желательно в формате chm, может у Вас завалялась электронная книженция в этом виде?:) |
E-mail
я обещал показать сайт в котором XSL используется в качестве шаблонного движка, я показал... чтобы еще раз воказать мощь XSL я потом выложу ссылки на два сайта которые будут отличаться только одним файлом стиля, и при этом будут иметь достаточно разное оформление, но это быдет потом, а не сейчас... я бы лучьше читал литературу по XSQL а не T-SQL... |
Ещё одна интересная возможность всей смеси этих технологий: Publishing Systems
Сейчас в инете очень много фирм предлагают такие системы Я почти уламал на работе использовать чтото подобное, но не совсем Система выглядит примерно так: Цель: получить файл PDF либо сразу вывести на печать (имеетсяы в виду различные счета, которые рассылаются клиентам и тп) Вся информация лежит в базе, мы её достаём в XML (структура которого закреплена в соответствующем DTD) Также есть к определённому DTD файл XSL-FO, который отвечает за весь дизайн документа и layout Далее имеем FOP процессор (например от АПАЧа), который генерирует из XML и XSL-FO файлов специальный FO файл, пригодный уже для прямого перевода в PDF Так как FOP APACHE написан на джаве и и команды джавы можно включить в код PHP, то может получится очень удобная утилита для автоматической Publishing System Единственное, что моих вышестоящих менеджеров остановило, так это то, что сейчас на рынке нет хорошего визуального редактора XSL-FO файлов. Самый лучший от Altova (Stylevision 2005) их не совсем устроил. Я их пытался убедить, что их можно и от руки писать и что этот редактор достаточен, но они решили попробывать Framemaker от ADOBE, с которым сейчас сами мечаются. Короче жду, как там дальше будет всё происходить |
vadimiron
верно подмечено, но веть PDFом все не ограничивается есть еще например SVG, RWML, FLASH и т.д. ... |
Подскажите пожалуйста, чайнику...
Как я могу забрать информацию о погоде (RSS), на сервере rp5.ru или gismeteo.ru? |
X
Нужен RSS Reader. Такие проги уже написаны почти подо все языки, так как они очень лёгкие. Если нужно забирать для сайта и публиковать на нём, то можно, например на PHP, испольовать magpieRSS |
Никогда не интересовался "форматом" RSS, похоже что это обычный XML. Красотища. Бери и преобразовывай.
|
X
все как сказал benya |
Господа, вот наша погода:
Код:
<xsl:apply-templates select="document('pogoda.xml')/rss"/> Код:
#!/usr/bin/perl |
еще отмечу что XSL удобно применять для рисования интерфейсов...
так например пичем осбтрактный леяут для GUI потом применяем XSL и получаем на выходе уже нужный нам HTML |
БОЛЬШОЕ СПАСИБО benya отлично!!!!
|
математические опереции в XSL
Код:
<numbers> |
Vlad Drakula а ты можешь поддержать техническую беседу ЕЩЕ вот тут? :)
|
E-mail
1) а чего там поддерживать... там ни одной темы даже нету... 2) назвать это "Конференции профессионалов ConF.MyHTML.RU" у меня язык не повернется... креатив в дизайне есть... но вот верстал не профессионал... виден ряд ляпов... (как "Конференция профессионалов" может быть сделана не пофессионально???) |
Vlad Drakula буржуйский движек, что тут можно сказать скоро свой выложу, но всеравно же приглашаю..
|
Влад, какие должны быть права достпупа у файлов *.xsl? Какого-то фига на хостинге инструкция <xsl:import href="va.xsl"/> вызывает ошибку.
|
benya
у меня и на локалке она выдает ошибку, дело скорее всего не в правах доступа а в "разрешении пути до файла", а проще говоря не там он его ищет... |
У меня на локалке все нормально. А как решить??
Инструкция import и include выдают ошибку. Я уже затрхал хостера. Выручай!! Ошибка в логах: [Tue Apr 04 13:08:33 2006] [error] [client 80.84.190.152] compilation error: file xsl/test.xsl line 18 element include [Tue Apr 04 13:08:33 2006] [error] [client 80.84.190.152] xsl:include : unable to load xsl/ix.xsl Все же правильно, почему так? |
benya
честно говоря я не знаю решения... я использую одинарный шаблон без загрузки других... раньше я использовал вложенные шаблоны, но там была готовая системма которой нужно было просто скармливать их... |
Это не решение. Влить со всех шаблонов в один. Там не одна тысяча строк будет :shout: :swoon:
|
benya
а почему нет? есть такое правило "шаблон который в два раза короче работает быстрее" "один шаблон работает быстрее чем два" для этих целей и создается скрипты для деплоя проекта на сервер... |
Зачем какие-то исключения если должно работать все нормально?
Теряются все преимущества. Это лажа. Еще и document('file.xml') тоже не работает. ;( |
Vlad Drakula
А как ты обходишься без document()? Кстати глянь свежим глазом на это: http://groups.google.ru/group/linux....e6317c86eb1d18 Вот она проблема!! Только как решить? |
benya
1) в однм месте оно мне и не нужно. 2) во втором месте есть скрипт деплоя который разрешает все связи между файлами и производит их подготовку к резертыванию на сервере... |
Это как подробнее....
|
benya
ну... ты веть знаешь что когдапишут обычные приложения сначала пишут их код, а потом их копмипилируют... так вот и с веб приложениями так поступают... в процессе "билда" происходит автогенерение файлов, парсинг и подготовка шаблонов и исходных файлов и т.д. (все зависит от конкретной задачи которую выполняет билд) |
Ничего не понял. Мультиязычное приложение как собрать без document()? Есть отдельный файл в котором храняться все диагностические сообщения на разных языках. Если оно не работает задача конкретно усложняется. Временные деревья не работают.
P.S. Попробовал собрать все модули (которіе включались с помощью import) и померять производительность... по-мойму ничего не изменилось.... |
benya
а чего в этом сложного? берем один XSL файл и несколько DTD (со словарями) в момент деплоя все это компилим и получаем несколько XSL файлов.. по отдельному файлу на каждый язык... |
Да это извращение! Не буду я выкручиваться короче. Достану хостера так, что переставит все библиотеки.. все!
|
вот сегодня прикручивал к одному сайту псевдостатику... в итоге пришлось поменять всего один файл фаблона... и никаких вмешательств в нутреннюю часть сайта....
|
Vlad Drakula,
Лучше все же ковыряться, в маленьких файлах-шаблончиках который соответствует разделу, чем в одном большом в одной куче. У меня путаница конкретная. 2339 строк это иголка в стоге сена. |
benya
нужно использовать соответствующие редакторы |
benya абсолютно согласен, но только разделением тоже лутше не увлекаться (смотри тему тройной select) :)
|
Vlad Drakula,
Ну до бага с импортами у меня все прекрасно было разбито по небольшим "шаблончикам" которые соответствовали каждому разделу сайта. А теперь все в большой куче. Я и пользуюсь соответсвующим редактором - только ставить якоря - переучиваться нужно. |
benya
в соответствующем редакторе якоря ставить не нужно... он позволяет быстро навигироваться между шаблонами и быстро навинироваться в нутри шаблонов! |
Vlad Drakula,
А что за софт? У меня есть breakpoint - можно поставить точку в определенное место и назначить ей имя. Таким образом можно легко перемещаться. |
benya
XmlSpy - более удобной штуки для редактирования XML/XSL я не встречал... |
Vlad Drakula,
Меня и komodo устраивает вполне. Переключаться между окнами не очень удобно особенно если в процессе работы этих окон с десяток. |
benya
в каком плане "Переключаться между окнами не очень удобно особенно если в процессе работы этих окон с десяток." ? |
к вопросу о гибкости XSL...
вот обещаный пример организации псевдо статики с помощью XSL шаблона: http://soft.oszone.net/ |
вот сейчас сел изучать: schema/wsdl (XSD)
на самом деле все бонально, нужно создать документацию и валидацию к имеющимся XSL шаблонам... вот и встал выбор XSD или DTD... сижу изучаю... |
как выяснилось создавать schema/wsdl (XSD) очень просто... я просто не заметил одной галочки в XMLSpy... очень удобно и очень просто!!!!
|
Есть в XML возможность динамически подключать другой файл со стилями??
include, import не принимают переменных Задача такая: есть список объектов, он не изменеятся, а вот layout самих объектов зависит от параметра То есть у меня есть один xsl с описанием списка, и несколько для описания типов объектов в этом списке |
vadimiron
используй просто разные моды преобразования... |
а что значит моды преобразования??
просто всё в xsl:if засунуть?? |
vadimiron
есть такая штука: PHP код:
|
А как это нужно применять в моём случае? Всё равно переменные нигде не принимаются
Тип объекта, а значит и его xsl, лежит в глобальной переменной Я пока только до такого дошёл HTML код:
<xsl:choose> |
vadimiron
вот к примеру здесь: http://soft.oszone.net/ есть нода programm она одна и таже на всех страницах, и XSL файл один и тот же... но веть отображаются по разнаму в зависимости от того какой тип страницы показывается... |
Честно говоря, там я только XTML код вижу, но не XSL
Я понимаю как использовать mode, но я не понимаю только одного, как я могу выбирать mode в зависимости от переменной xsl:apply-templates всё равно не разрешает mode как переменная |
vadimiron
Цитата:
Цитата:
PHP код:
|
Ну да, в общем то я так и сделал (мой пост выше) :)
|
vadimiron
Цитата:
а вообще если становится такая необзодимость, то это просто показывает что нужно подумать над форматом входного файла... уверен что если его немного поменять то все можно будет делать на много проще!!! |
к вопросу vadimiron о передаче параметров в шаблон, решил поделиться своими наработками...
когда в шаблон нужно передовать много информации ее наверное лучьше писывать просто отдельный "спец" блоком во входной XML тогда это позволит на много шире использовать ее в XPath запросах! PS vadimiron и как раз решит твою проьлему с большим колличеством свичей для разных мод... |
тут возникал вопрос о том как можно выдирать какиенибуть данные из XML, и нашол следуещее решение:
PHP код:
PHP код:
|
судя по информации на сайте php.net с php5 библиотека XSLT на основе анализатора sablotron не поставляется :(
поставляется некотоый аналог - ОО-мая библиотека XSL на основе libxslt . кто пользуется таковой или все на php4 сидят? приведи простенький примерчик кода, plz |
3kLiN
А что есть большая разница? Эти библиотеки делают одно и тоже. Там только поменять небольшой кусочек в PHP где происходит трансформация. |
benya, да, thnx. я уже нашёл примерчик. в XSL нужно ещё создавать DomDocument`ы. это и сбило с толку поначалу. спасибо php.net за наше счастливое детство :)
|
господа, помогайте. уже два часа кручу-верчу никак сообразить не хочу :(
задача тривиальная: нужно построить pager. есть общее кол-во страниц и номер текущей страницы. как с помощью xslt выдать пейджер а-ля на этом форуме (т.е. активная страница, а справа и слева, если нужно, по n ссылок) ? |
3kLiN
А я как раз несколько месяцев назад делал тоже самое. Сделал нечто такого: PHP код:
На вход нужно подать вот такую структуру XML: PHP код:
Вызывается как-то так: PHP код:
Можно было и XML попроще передать. Но...пример работает и я не заморачивался. Результат: тоже самое - список пейджей как на этом форуме. |
чтож представлю свой вариант решения этой задачи...
на входе: PHP код:
PHP код:
вы бы хоть предупредели что ваш шаблон использует XSL2.0 <xsl:variable name="item" select="item[position() = $sel]"/> - этого в XSL1.0 вроде как нету... там переменные только текстовые... benya я наложил структирирование на ваш пример и пофиксил пару багов(очевидных) в шаблоне. |
http://tex.msu.ru/works/mmlbrowsers/
http://tex.msu.ru/works/mmlbrowsers/test.xhtml попробЫвал я в фаерфоксе 1506 открыть, отображает только исходный код, непойму откуда взялись эти скриншоты, или надо произвести какието настройки браузеру? плагины? В ie sp2 хоть выдает ошибку The XML page cannot be displayed :) opera 901 аналагично лисице( хотя наверное все дело в content-type. |
benya, Vlad Drakula, спасибо за примеры, но я уже решил с помощью рекурсивных вызовов <xsl:call-template ... />
|
Vlad Drakula,
XSL2.0 вроде как нету, а с библиотекой LibXSLT 1.0 вроде как работает ;) И что за очевидные баги ты заметил? |
benya
Цитата:
Цитата:
ноды как параметры передавать может но как переменные нет... поддержка полноценных переменных появилось лишь в XSLT2.0 (в стандарте) просто мне пришлось как то проводить сравнения меджу возможностями XSLT1.0 и XSLT2.0 3kLiN рекурсия это в принцепе хорошо... при использовании XSLT ей нужно хорошо владеть иначе никак... но для такой задачи по моему это как из пушки по воробьям... нужно еще задумываться и о перфомансе приложения! в связи с тем что тема пейджинга оказалась интересна привожу еще один шаблон... решение достаточно элегантное: PHP код:
вызывается шаблон следующим образом: PHP код:
Цитата:
|
Vlad Drakula,
Кстати, я тоже как-то хотел так сделать, но вызывание теплейта из самого темплейта у меня вызывает ошибку, хотя в книгах это широко используют. Поэтому пришлось от такого метода отказаться. |
benya
Цитата:
|
Vlad Drakula,
Как не правильный? LibXSLT какая-то последняя версия ;) А примеры переписывал из книги. Даже простой пример пробовал сгенерировать количество элментов в зависимости от от количества в переменной (практически тоже самое что и твой последний пример со страницами). Не катит! На днях попробую еще раз, и напишу что за ошибка. |
Vlad Drakula,
Цитата:
Кста, а что бы последний пример работал, во входном XML должны быть ВСЕ новости? А если их там 100? Или как? |
benya
да... чтобы последний пример работал там должны быть все новости... у меня из около 70 и ничего работает... правда у меня генерится статический HTML с помощью C++... |
Vlad Drakula,
Там легко его приспособить ;) Странно, но работает, раньше что-то не так делал наверное. Так или иначе, мой первый вариант устраивает меня больше. |
Цитата:
PHP код:
PHP код:
PHP код:
|
3kLiN
на мой взгля очень не оптимально... на вскидку могу сказать что можно избавиться от трех сравнений на каждую итерацию! а если еще подумать то и еще одно ставнение можно выкинуть... но это уже не так криточно... так что поробуйте еще подумать... может появятся идеи о более эффективных алгоритмах. |
есть известный узел содержащий имя искомого узла. как вывести содержание искомого узла?
пока ничего красивее HTML код:
<xsl:value-of select="* [ name(.) = node1 ]" /> |
3kLiN
мне вот кажется что приведенный вами код не работает... |
Vlad Drakula
у меня работает. а что с ним не так? я от более простого варианта не отказался бы :) |
У меня такой вопрос:
Есть следующая задача: Работа с базой данных. Хранимые процедуры возвращают XML. С помощью XSLT я его преобразую в HTML. Вопрос такой: каким образом в страницу можно добавить динамику (пейджинг, фильтры поиска и.т.д.) Надо чтобы работало как минимум под FF и IE. Можете посоветовать, в каком направлении копать. А то я чегото в полной растерянности. PS: Предположительн все это нужно организовать через Ajax. Исходная тнформация поcтупает c сервера через XMLHTTPRequest. |
sen1983
Цитата:
Цитата:
Цитата:
собственно здесь: soft.oszone.net выборки идут в XML а потом трансформятся с помощью XSL но юзер этого в принцепе и не замечает. ЗЫ честно говоря я непонимаю в чем суть вопроса. |
Vlad Drakula
Вопрос я решил. С сервера зачитывалось два XML документа - один - XSL , другой - исходные данные. "Склеивал" их на клиенте. Не скажу, что потребовалось очень много Javascript кода для работы через XMLHTTPRequest. Тестировал только для FF и IE. Работает нормально. Суть вопроса была в том, что я думал, что получится написать такую хитрую XSL табличку, которая будет через переданные ей параметры отсекать ненужные результаты из исходного XML документа и формировать пейджинг. Но мне показалось, что это будет долговато это писать. и в итоге от этой идеи я отказался. ЗЫ: Спасибо за отклик. |
sen1983
какую библиотеку вы использовали для XSL и XML ? |
Vlad Drakula
Я не использовал сторонних библиотек. Для работы с XMLHTTPRequest я частично использовал исходники к книге "Ajax в действии". В этой книге вроде и библиотека есть. Для слияния XML файла с XSL таблицей и вывода HTML кода в браузер написал не очень длинную функцию, заточенную под IE и FF. Если интересно, могу попозже выложить исходники. |
sen1983
а какой смыл было делать XSL преобразование на клиенте, по мимо экономии трафика и процессора сервера? |
Vlad Drakula
Больше никакого.Разве что присутствует более менее четкое представление MVC... Четко видно, где данные, где разметка, и где код, который данными управляет. Но это больше для разработчика. Вообще основной задачей было вынесение максимально возможного объема функциональности на сторону клиента. На данный момент на сервере даже сессии нет. все, что нужно, хранится в объектах JavaScript классов. Сервер не генерит ни одной страницы, а только работает с БД. Но стоит отметить, что JavaScript делает XSL преобразования не так уж быстро. Видна задержка в полсекунды а то и в секунду. |
sen1983
собственно вы решили писать тонкий клиент на AJAX тогда предлагаю перенести дискуссию сюда: http://forum.oszone.net/thread-46763.html |
вот создал два файла:
planets.xml PHP код:
PHP код:
при открытии первого ie6 все нормально - видна табличка как надо, а при открытии ff пишет вот такое: PHP код:
PHP код:
и для чего нужно UNITS="(Earth = 1)" ?:) |
E-mail
Цитата:
(Earth = 1) - задает единици измерения <DENSITY UNITS="(Earth = 1)">.983</DENSITY> - означает что протность равна .983 от плотности земли |
Vlad Drakula а ошибки изза чего?
|
Добрый день. Помогите пожалуйста.
Есть xml и xsl файлы. Соединяю их в fo-файл. Полученный файлик преобразую в PDF с помощью FOP-процессора Apache FOP. Проблема состоит в том, что в получившемся pdf-документе символы русского алфавита меняются на #. Почему так, не знаю. С английским всё ok. Менял кодировку, непомогло. |
скорей всего обычная беда - отсутствие работающих в pdf шрифтов. А вот принципиальное отсутствие и невозможность включить, или все-таки не такое фатальное - это, вероятно, - к документации.
|
mar
Поясните пожалуйста, что означат выражение: Цитата:
|
программа, собирающая pdf должна как-то показать текст. Для этого она использует шрифты, не знаю - системные, или какие-то свои, но судя по результату некирилические.
|
mar
При помощи XSL-FO (файл *.xsl) можно указать используемый шрифт. Я указывал Arial, TimeNew Roman, Verdana, бесполезно. |
EvgeniyQQQ
указать-то можно. Но лично я, не видя документации к программе, не знаю, какие шрифты она подхватывает и откуда. Или проблема вылезает до Pdf-преобразования? Попробуйте проверить это поэтапно. |
mar
Спасибо за помощь. Вы были правы, программа Apache FOP "не знает" шрифтов потдерживающих русский. Но, её можно "научить" этому. Решение проблемы описано здесь: http://www.javaportal.ru/java/articl...chars.html#fop Сделал как там написано, всё работает. |
Все хорошо, что хорошо кончается :)
|
Vlad Drakula а где вы храните код счетчиков и в каком виде: в бд, в xml или xsl файле?
|
FADE
каких именно счетчиков? |
Vlad Drakula hotlog например, spylog и т.п.
|
FADE
а... это зашито в шаблоне, но ент проблема это хранить в базе или другом XSL файле |
Народ, а как можно вот это улутшить?
PHP код:
|
FADE
HTML код:
(position() mod 10)= 0 |
vadimiron спасип:)
|
а почему вот это не работает?
PHP код:
Warning: Sablotron error on line 4: expression is not a node set in что это значит?.. |
FADE
что написано то и значит, вы просто нечитали спецификацию XSL 1.0 приведу отрывок на эту тему: переменная не может содержать node set, apply-templates принимает на вход node set это ограничение снято в XSL2.0 |
Vlad Drakulaт.е. если сменить цифру в заголовке с 1 на 2 все заработает?:)
|
FADE
не думаю, т.к. Sablotron по моему не поддреживает XSL2.0 для XSL2.0 нужен саксон... в XSL2.0 много вкусностей, нопока придется обходится XSL1.0 |
Vlad Drakula Sablotron - это то чем php преобразует?
|
FADE
примерно так |
ясно
|
а как вывести количество символов? strlength() - пишет что такой функции не существует..
|
и как вывести элемент <input type="checkbox"> с атрибутом checked если элемент <item>1</item> и если <item>0</item>, вывести без атрибута checkbox??
внутри контейнера <xsl:attribute-set> аказыца запрещены конструкции if, но тогда как???...:( |
FADE
Цитата:
там как раз написано что есть функция string-length FADE Цитата:
<xsl:attribute name="checked">checked</xsl:attribute> </xsl:if> |
Цитата:
|
FADE
я понимаю что это все очень модно, но может вы по простому будете делать? xsl:attribute-set - не имеет привязки к конеретной ноде... |
Vlad Drakula
вот мой код: PHP код:
PHP код:
|
FADE
я предлагаю: PHP код:
|
Vlad Drakula
а тогда зачем в твоем варианте: Цитата:
|
FADE
забыл удалить |
а если допустим надо сравнить два значения тега:
так не проходит валидацию:(: PHP код:
PHP код:
что думаете, можно укоротить?:) |
все даже еще намного серьездне!
есть куча элементов: <mypear> <b>1</b> <b>2</b> <b>3</b> </mypear> их нужно сранить с <item>2</item> и вслучае если хоть один ему равен ставим атрибут checked ... как?? |
пока реализовал спомощью форича, внутри которого создается переменная в которую записыввается значение, далее идет проверка, а можно ли обойтись без форича, и реализовать это с помощью xpath , а то слишком много будет элементов?:)
|
FADE
приведите нормальные входные данные: 1) то что есть на входе 2) то что должно быть на выходе |
Vlad Drakula
на входе (xml): PHP код:
Цитата:
Цитата:
Цитата:
Цитата:
может быть вот так: PHP код:
|
FADE
PHP код:
|
Делаю фалик с шаблоном xsl и к нему xml файл. Открываю xml в брузере. Нормально форматируеться по шаблону.
Беру делаю html или xhtml файл и xsl шаблон к нему. Открываю html в браузере. Преобразование не применяеться. Можно ли выполнить преобразование над html не на сервере, и не используя JavaScript, аналогичным образом, как в первом случае, с xml? |
Sander83
1) html не есть валидный XML 2) так сделать можно, но я не вижу в этом смысла, зачем??? |
1)я пробЫвал сделать это на xhtml, а это валидный xml.
2)хочу что бы на сайте лежал xml и файл трансформации, xml легко модифицировать. Не хочеться использовать серверную обработку. И не хочеться на клиенте пользоваться mshtml или XSLTrasnform библиотеками, так как их загрузка может быть запрещена на клиенте. Как всеьтаки это можно сделать? |
Sander83
Цитата:
|
Может подскажете мне как можно вывести для печати на стикере через xsl
вывожу в html. Там нужна таблица 8 строк на 3 столбца если пишу PHP код:
|
Одно решение, которое я исользовал для похожей задачи
PHP код:
PHP код:
|
Спасибо большое - помогло, а то до этого 2 дня ушли насмарку!!!
И в догонку вопрос - можно ли как-то получить html-код готовой страницы, чтобы проверить ее на валидейт, найти ошибки в форматировании и т.п. |
vadimiron
в XSL 2.0 не заработает cobaa Цитата:
2) открываем XML файл 3) открываем XSL файл 4) нашимаем F10 5) создается новый файл с результатом трансформации 6) сохраняем как нужно |
народ, как будет выглядеть шаблон для помечания нескольких чекбоксов из определенного количества?
есть список всех чекбоксов: <city> <item>1</item> </city> <city> <item>2</item> </city> <city> <item>3</item> </city> <city> <item>4</item> </city> и там же список тех кто выбран, для каждего юзера: <user> <check> <item>1</item> </check> <check> <item>3</item> </check> </user> <user> <check> <item>2</item> </check> <check> <item>4</item> </check> </user> <user> <check> <item>3</item> </check> </user> список всех чекбоксов выводится на одной странице для каждого юзера, где для каждого выбраны соответствующие юзеру, как?? |
я сделал шаблон user в котором находится for-each //city проблема в том что изза обращении к элементу city и написании двух слешов указатель уходит из самого шаблона user :( как его сравнивать с check/item ума не приложу..
|
Цитата:
Если написать так: Код:
<xsl:for-each select="object"> Текст-то получается такой: HTML код:
<tr /> Преобразование на стороне клиента, т.ч. я не уверен, что выводится именно такой html. |
Время: 19:29. |
Время: 19:29.
© OSzone.net 2001-