Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление элемента и его содержимого. 
:(
    Опции темы
GlooMMy
Дата 8.6.2010, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 10.3.2010

Репутация: нет
Всего: нет



Как удалить элемент и все его содержимое (если существуют дочерние то их тоже) из файла xml с помощью xslt?
Элементов с таким именем может быть много и всех их нужно удалить.

Это сообщение отредактировал(а) GlooMMy - 8.6.2010, 09:36
PM MAIL   Вверх
diadiavova
Дата 8.6.2010, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Просто включи в преобразование шаблон, который будет соответствовать ненужному элементу и оставь шаблон пустым.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
GlooMMy
Дата 8.6.2010, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 10.3.2010

Репутация: нет
Всего: нет



Можно пример кода?
Допустим необходимо удалить other и все что вложено в него.
Код

<root>
    <other>
        <temp>lsdkjf</temp>
        <temp_1 at="23"/>
    <other/>
    <a>
        <b> woeiruwe </b>
    </a>
    <other> lsdf </other>        
<root/>

PM MAIL   Вверх
diadiavova
Дата 8.6.2010, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Код

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="other"/>
</xsl:stylesheet>

Единственная оговорка: в закрывающих тегах слешь стоит в начале, а не как у тебя smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
GlooMMy
Дата 8.6.2010, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 10.3.2010

Репутация: нет
Всего: нет



апячаткаsmile
Что-то ничего не изменилось...
У меня элемент глубоко вложен, может из-за этого?

Это сообщение отредактировал(а) GlooMMy - 8.6.2010, 13:52
PM MAIL   Вверх
diadiavova
Дата 8.6.2010, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Цитата(GlooMMy @  8.6.2010,  14:50 Найти цитируемый пост)
Что-то ничего не изменилось... 

В каком смысле не изменилось? smile 
Вот такой документ я япреобразовывал
Код

<?xml version="1.0" encoding="utf-8"?>
<root>
    <other>
        <temp>lsdkjf</temp>
        <temp_1 at="23"/>
    </other>
    <a>
        <b> woeiruwe </b>
    </a>
    <other> lsdf </other>
</root>

И вот что получилось
Код

<?xml version="1.0" encoding="utf-8"?>
<root>
    
    <a>
        <b> woeiruwe </b>
    </a>
    
</root>
На сколько я понял именно это и было нужно.

Добавлено через 51 секунду
Цитата(GlooMMy @  8.6.2010,  14:50 Найти цитируемый пост)
апячатка

В двух местах. smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
GlooMMy
Дата 8.6.2010, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 10.3.2010

Репутация: нет
Всего: нет



еще раз ща проверю..
работает
а на моем файле не работает:(

Это сообщение отредактировал(а) GlooMMy - 8.6.2010, 14:03
PM MAIL   Вверх
GlooMMy
Дата 8.6.2010, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 10.3.2010

Репутация: нет
Всего: нет



что не так в этой строчке?
Код

<document xmlns='http://www.lotus.com/dxl' version='7.0' maintenanceversion='4.0'
 replicaid='C22576C1003D82B3' form='LearnKartStud' parent='C7B2988098D73627C225734700389A5A'
 response='true'>


PM MAIL   Вверх
diadiavova
Дата 8.6.2010, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Цитата(GlooMMy @  8.6.2010,  15:01 Найти цитируемый пост)
а на моем файле не работает:(

Ща я твой файл оттелепатирую - объясню smile 
Цитата(GlooMMy @  8.6.2010,  15:20 Найти цитируемый пост)
что не так в этой строчке?

С точки зрения синтаксиса вроде всё нормально. А при чём тут эта строчка?


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
GlooMMy
Дата 9.6.2010, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 10.3.2010

Репутация: нет
Всего: нет



Когда убираю все атрибуты у элемента document, то все работает, а с ними нет.smile
а именно дело в атрибуте: xmlns='http://www.lotus.com/dxl' 

Это сообщение отредактировал(а) GlooMMy - 9.6.2010, 08:51
PM MAIL   Вверх
diadiavova
Дата 9.6.2010, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Цитата(GlooMMy @  9.6.2010,  09:43 Найти цитируемый пост)
а именно дело в атрибуте: xmlns='http://www.lotus.com/dxl' 

Это не атрибут, а пространство имён. В документах с с пространствами имён без префиксовподобные трудности бывают. Тут надо либо добавить префикс, либо проверять в атрибуте match шаблона принадлежность к данному пространству с помощью функции namespace-uri. Сначала попробуй переписать узел так
Код

<document xmlns='http://www.lotus.com/dxl' xmlns:a='http://www.lotus.com/dxl' version='7.0' maintenanceversion='4.0'
 replicaid='C22576C1003D82B3' form='LearnKartStud' parent='C7B2988098D73627C225734700389A5A'
 response='true'>
А в шаблоне укажи
Код

match="a:document"

Не выйдет - тогда используй один из вышеозначенных способов.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.1242 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.