powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Удалить элемент из дерева
8 сообщений из 8, страница 1 из 1
Удалить элемент из дерева
    #35778449
Grundiss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уже всю голову себе сломал, ничо придумать не могу (
Задача: Дерево
<article>......html-разметка....</article>
Из разметки которая внутри надо удалить все элементы <img/>. То есть на выходе иметь дерево
<article>......html-разметка без картинок....</article>.
Проблема в том, что я не знаю заведомо, где находятся картинки и по определенным причинам не могу использовать конструкцию
<xsl:template match="//img" /> :(

Посоветуйте как быть
...
Рейтинг: 0 / 0
Удалить элемент из дерева
    #35778638
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Grundissпо определенным причинам не могу использовать конструкцию
<xsl:template match="//img" />
Обоснуйте
...
Рейтинг: 0 / 0
Удалить элемент из дерева
    #35780265
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
начнем с того что парсер не разрешил работать с тегом <article> - скзал зарезервирован.
кострукция вида :
Код: plaintext
1.
2.
<xsl:template match="article">
        <xsl:value-of select="."/>
    </xsl:template>
вытянет весть текст без ВСЕХ тегов.

Если нужно игнорировать только img то для начала посоветую поискать среди уже существующих топиков схожие темы, точно помню что были , и даже есть вероятность что в свое время сам задавал подое.
К примеру так:
[src] <xsl:template match="/">

<xsl:apply-templates mode="text"/>
</xsl:template>
<xsl:template match="text()" mode="text">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="br" mode="text">
<xsl:copy/>
</xsl:template>/SRC]
...
Рейтинг: 0 / 0
Удалить элемент из дерева
    #35781182
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вообще, если нужно только удаление, копируем все в переменную и вней заменой подстроки на пробел по регулярному выражению ищем картинки и режем.
...
Рейтинг: 0 / 0
Удалить элемент из дерева
    #35782248
Grundiss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_Grundissпо определенным причинам не могу использовать конструкцию
<xsl:template match="//img" />
Обоснуйте

дело в том что <article> в моем случае это элемент не верхнего уровня. Там есть другие элементы, которые содержат IMG и он в них должен остаться
то есть:
<1>...</1> --здесь картинки должны остаться
<article>.....</article> --отсюда их убрать
<2>....</2> --здесь также должны остаться
...
Рейтинг: 0 / 0
Удалить элемент из дерева
    #35784107
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
<xsl:template match="article//img" />

Посоветуйте как быть[/quot]
...
Рейтинг: 0 / 0
Удалить элемент из дерева
    #35784751
Grundiss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть надо делать так:

<xsl:template match="article">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="article//img" />
<xsl:template match="article//*"><xsl:copy/></xsl:template>

Правильно?

Только этот шаблон почему-то не работает! И я даже не могу понять почему! ((
...
Рейтинг: 0 / 0
Удалить элемент из дерева
    #35786600
AlexVer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
        
  <xsl:strip-space elements="*"/>			

  <!-- убираем img -->		  
  <xsl:template match="//article//img" />

  <!-- сохраняем выдачу исходного документа -->		  
  <xsl:template match="node() | @*">
  	<xsl:copy>
	  		<xsl:apply-templates select="@* | node()"/>
  	</xsl:copy>   
  </xsl:template>
  	
</xsl:stylesheet>

Тестовый xml:
Код: plaintext
1.
2.
3.
4.
5.
6.
<?xml version="1.0" encoding="UTF-8"?>
<test>	
   <t1>.<img>img1</img>.</t1>
   <article>..<img>img2</img>...<not-img>img2</not-img>
   </article> 
   <t2>..<img>img3</img>..</t2>
</test>

Результат преобразования:
Код: plaintext
1.
2.
3.
4.
5.
6.
<?xml version="1.0" encoding="utf-8"?>
<test>
   <t1>.<img>img1</img>.</t1>
   <article>.....<not-img>img2</not-img>
   </article>
   <t2>..<img>img3</img>..</t2>
</test>
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Удалить элемент из дерева
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]