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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> скопировать часть узлов 
:(
    Опции темы
embla
Дата 23.1.2008, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

<data id='root'>
  <node name='node1'>
    <node name='node11'>
       ...
    </node>
     <node name='node12'>
       ...
    </node>
  </node>
  <node name='node2'>
  ...

 </node>
</data>


необходимо получить:
Код

<data id='root'>
  <node name='node1'>
    <node name='node11'>
       ...
    </node>
  </node>
</data>


делаю при помощи 

<xsl:template match="/"> 
   <xsl:copy-of select="//node[@name='node11']|@*"/>
</xsl:template>
но так оно выдает только саму node11 и её потомков.

а так
<xsl:template match="/"> 
   <xsl:copy-of select="./*/*[@name='node11']|@*"/>
</xsl:template>
вообще не может создать выходной xml

Спасибо
PM MAIL   Вверх
batigoal
Дата 24.1.2008, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Я не уловил - по какому принципу надо отфильтровать? Оставить в выходном файле только node1 с потомками?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Сумасшедший
Дата 24.1.2008, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чилавек-Каропка
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 15.8.2004
Где: Москва

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



Так у тебя написано в том, что надо, только node name=1 и глубже.
Приведи более полный пример того что есть и что именно надо.


--------------------
Однажды ты спросишь, а я отвечу: "Время ожидания специалиста - 10 минут". Ты бросишь трубку, так и не узнав, что Ваш звонок очень важен для нас!
PM MAIL WWW Jabber   Вверх
embla
Дата 24.1.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Надо было чтобы скопировалось без node 2. То есть  предки и потомки node 11
ответ найден, он такой

<?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="*[@name = 'node11']">
    <xsl:copy-of select="."/>
  </xsl:template>

  <xsl:template match="*[.//*[@name = 'node11']]">
    <xsl:copy>
      <xsl:copy-of select="@*"/>
      
      <xsl:apply-templates select="*"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="*" />
</xsl:stylesheet>
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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