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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с результирующим деревом 
V
    Опции темы
dma84
  Дата 9.6.2012, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть XML файл

Код

<source>
 <title></title>
 <description></description>
 <keywords></keywords>
 <content>
   HTML разметка>
  <priceblock/>
   HTML разметка
 </content>
</source>


Узел <content/> содержит HTML разметку (не CDATA), в самой разметке присутствует узел <priceblock/>, наличие которого говорит, что тут нужно вывести некий блок.
Вопрос в следующем, при выводе содержимого узла <content/> с помощью xsl:copy-of, в результирующее дерево попадает узел <priceblock/>, а мне необходимо сначала провести преобразовние узла <priceblock/>, а затем вывести содержимое узла <content/> со всем набором узлов.

Конечно проще произвести все XSL преобразования, а затем на PHP заменить значение этого узла, но хочется всё оставить именно на XSL. Меня интересует только одно, можно ли это реализовать средствами XSL или нет? Спасибо
PM MAIL   Вверх
diadiavova
Дата 9.6.2012, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



В начале документа размести вот такой шаблон
Код

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
Он будет копировать все, для чего не будет найдено других шаблонов.


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


Новичок



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

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



Спасибо за ответ, уже решил эту проблему, а всего-то стоило на форум чиркнуть)

Пока обошёлся такой конструкцией:

Код

...
<xsl:call-template name="content"/>
...

<xsl:template name="content">
 <xsl:for-each select="content/*">
  <xsl:choose>
   <xsl:when test="name() != 'priceblock'">
    <xsl:copy-of select="current()"/>
   </xsl:when>
   <xsl:otherwise>
     бла-бла-бла
   </xsl:otherwise>
  </xsl:choose>
 </xsl:for-each>
</xsl:template>


На первое время прокатит, потом всё равно 10 раз перепишу)

Это сообщение отредактировал(а) dma84 - 9.6.2012, 12:46
PM MAIL   Вверх
diadiavova
Дата 9.6.2012, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(dma84 @  9.6.2012,  13:46 Найти цитируемый пост)
 потом всё равно 10 раз перепишу

Я в этом не сомневаюсь smile 


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

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

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

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

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


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

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


 




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


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

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