| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > XML, XSL > Убрать тэги |
| Автор: PovAnd 24.12.2008, 16:06 |
| Дан XML файл, в котором необходимо убрать все теги <img>, <a> , а также leaf элементы содержащие символ 'I'. Как это сделать при помощи XSLT? |
| Автор: sir_nuf_nuf 24.12.2008, 20:16 | ||
Эта XSLT удалит все <a> и <href>.
Что вы имеете ввиду под leaf - элементами ? что значит содержат ? <leaf>I</leaf> - так ? <leaf><bu>I</bu></leaf> - так ? |
| Автор: ZeitGeist7 2.3.2009, 13:19 |
| прошу прощения что занимаюсь археологией но это лучше чем создать новую тему. так вот: есть xml файл и xsl файл. в xml файле много (очень много) HTML тэгов. xsl файл преодбразует xml в чистый текст. проблема с тегами форматирования: как завставить Xsl при виде например тэга <br> перевести текст на новую строку? тоже самое с таблицами.... благодарю. с Уважением |
| Автор: sir_nuf_nuf 2.3.2009, 15:59 |
| никак. XSLT движок не занимается отображением текста. Если вы выводите просто текст - то вы и получаете просто текст. Логично ? =) Если хотите получить на выходе html - укажите outputMethod="html" |
| Автор: ZeitGeist7 2.3.2009, 16:43 | ||
| а xsl никак не может сделать чтобы просто вместо тэга новой строки он просто переводил текст на новую строку? мне это очень важно потому что на выходе получается сплошной текст а хотелось бы чтобы например между
в готовом преобразовании был пробел в одну строчку или переход на следующую. без использования html upd и если можно просто пример стирания тэгов или определённых сочетаний знаков upd: отбой. я придумал как использовать эти теги. теперь тот же вопрос но про <a href= тэги. как посредством xsl выдрать сссылку а сам технический текст(тот что нужен только броузеру) был удалён? и про остальные тэги тот же вопрос. |
| Автор: sir_nuf_nuf 2.3.2009, 19:18 | ||
например так
а вообще прочитайте про XPath. всем ссылкам соответвует xpath: //a/@href |
| Автор: ZeitGeist7 2.3.2009, 19:43 |
| ссылку можно? |
| Автор: sir_nuf_nuf 3.3.2009, 00:54 |
| извольте.. http://www.w3.org/TR/xpath http://www.zvon.org/xxl/XPathTutorial/General/examples.html |
| Автор: ZeitGeist7 7.3.2009, 02:48 | ||||
| и всё таки малость не вкуриваю... можешь мне показать как соединить чистку тэгов и вот это:
мне так думается что будет выглядеть примерно так:
есть ещё такая проблема: внутри тэга "description" могут содержатся тэги <br /> и ему подобные без пробела между предыдущим и следующим словами. есть возможность этот тэг заменить на другой? и, просто, как добится чтобы фильтровались ВСЕ теги? благодарю. |
| Автор: sir_nuf_nuf 7.3.2009, 19:12 | ||
| Хм.. вообще в XSLT - есть два стиля =) - "убрать лишнее" и "брать только то что нужно" вы используете value-of - т.е. выбираете только нужное. Тогда проблемы чистки тегов нет. по поводу замены одного тега на другой я уже писал
выражайте свои вопросы яснее - что есть, и что нужно получить. |
| Автор: ZeitGeist7 8.3.2009, 10:05 |
| есть RSS лента второй версии. типа http://news.google.ru/news?pz=1&ned=ru_ru&hl=ru&output=rss тэгов там - мама не горюй |
| Автор: sir_nuf_nuf 8.3.2009, 17:16 |
| ниченго подобного - если посмотрите внимательнее - тегов - там только RSS. Все остальное (содержимое новостей наприрмер) с точки зрения XML - чистый текст. Заметьте - там, хотя содержимое и представляет собой HTML, все HTML тэги - записаны текстом, наприрмер <br> А значит с помощью шаблонов вы это не извлечете. Удобнее всего - сначала извлечь новость, а потом сделать замену регулярным выражением - заменить s/<\w+>//g Если вам нужно именно XSLT - сочуствую - регулярок в XSLT 1 нет. Хотя если очень постараться - можно прикрутить свою функцию к XSLT или написать шаблон для такой замены |
| Автор: ZeitGeist7 8.3.2009, 20:28 |
| то есть просто взять и застрелится всё это динамическое ковырять |
| Автор: sir_nuf_nuf 9.3.2009, 11:39 |
| ну почему.. можно просто выбрать другой инструмент. Почему вы решили использовать именно XSLT и ничего кроме этого ? где все это работает ? на клиенте ? на сервере ? |
| Автор: ZeitGeist7 9.3.2009, 13:42 |
| у меня всё работает на проге котороя работает с rss файлами. с различными файлами. она циклом скачивает файлы и циклом же применяет к ним правила xsl и сохраняет результат в текстовый файл. я бы использовал что нибудь другое но пока обхожусь этим. просто то что я качаю различно например http://rp5.ru/xml.php?id=5087 и http://joomlaforum.ru/index.php?type=rss;action=.xml и там вы увидите что они абсолютно разные. вручную копать около 300 лент каждые два часа - мазохизм. |
| Автор: sir_nuf_nuf 9.3.2009, 19:12 |
| т.е. вы пишете плагины для готовой программы. тогда такие вопросы 1) на чем написана эта программа ? 2) можно ли ее подправить ? (например зарегистрировать собственные функции XSLT) 3) поддерживается ли XSLT2 |
| Автор: ZeitGeist7 10.3.2009, 05:51 |
| 1, 2) я пишу не плагин для готовой программы а свою программу на Дельфях 7. (о том как это было вот тема: http://forum.vingrad.ru/forum/topic-249651/kw-xsl-xml-msxml/15.html ) я программист никакой, но стараюсь. программа не большая и я подковыриваю баги в ней каждый день, значит её можно модифицировать всегда. 3) подскажите как его прикрутить к проге, подскажите пару примеров и я буду работать Upd: что может XSLT 2? |
| Автор: sir_nuf_nuf 11.3.2009, 01:53 |
| 2) хз, что конкретно может, я не ковырял. На первый взгляд - значительно богаче набор встроенных функции (кажется есть регулярки), здесь на форуме кто использовал xslt2 (saxone кажись) - спросите 1)как подключить собственную функцию к xslt 1 - зависит от библиотеки xslt - смотрите документацию к ней. что за библиотека на Delphi ? |
| Автор: ZeitGeist7 11.3.2009, 15:03 |
| если модно то дайте ссылки документацию, учебники и примеры... библиотека MSXML. хотя там есть выбор из Xerces XML и Open XML (написано что vendor... как понимать - не знаю) |