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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как собрать необходимые значения из ХМЛ ? 
V
    Опции темы
t77
  Дата 15.3.2010, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Доброе время суток.
Имеется следующий ХМЛ файл:
Код

<CONTAINER1>
    <RECORD id="1" order="1">
        <TEXTAREA1>
            <![CDATA[textarea 1]]>
        </TEXTAREA1>
        <EDITOR_FIELD1>
            <![CDATA[editor field 1]]>
        </EDITOR_FIELD1>        
    </RECORD>
    <RECORD id="2" order="2">
        <TEXTAREA1>
            <![CDATA[textarea 2]]>
        </TEXTAREA1>
        <EDITOR_FIELD1>
            <![CDATA[editor field 2]]>
        </EDITOR_FIELD1>
    </RECORD>
    <RECORD id="3" order="3">
        <TEXTAREA1>
            <![CDATA[textarea 3]]>
        </TEXTAREA1>
        <EDITOR_FIELD1>
            <![CDATA[editor field 3]]>
        </EDITOR_FIELD1>
    </RECORD>
    <RECORD id="4" order="4">
        <TEXTAREA1>
            <![CDATA[textarea 4]]>
        </TEXTAREA1>
        <EDITOR_FIELD1>
            <![CDATA[editor field 4]]>
        </EDITOR_FIELD1>
    </RECORD>
</CONTAINER1>

Необходимо написать темплейт(шаблон), который получает два параметра:
Код

<xsl:template name="getFieldValue">
        <xsl:param name="containerName"/>
        <xsl:param name="fieldName"/>
</xsl:template>

и возвращает список значений, соответствующий полученным параметрам...
Тоесть если мой шаблон получает следующие два параметра:
Код

<xsl:call-template name="getFieldValue">
    <xsl:with-param name="containerName">
        <xsl:text>CONTAINER1</xsl:text>    
    </xsl:with-param>
    <xsl:with-param name="fieldName">
        <xsl:text>TEXTAREA1</xsl:text>    
    </xsl:with-param>
</xsl:call-template>

То на выходе должен быть результат:
Код

textarea1
textarea2
textarea3
textarea4

Вопрос, как с помощью XPath и Xslt можно пробежаться по заданной структуре хмл файла и получить необходимые значения ??
Спасибо
PM MAIL   Вверх
diadiavova
Дата 18.3.2010, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(t77 @  15.3.2010,  15:15 Найти цитируемый пост)
Вопрос, как с помощью XPath и Xslt можно пробежаться по заданной структуре хмл файла и получить необходимые значения ??

Из того, что ты описал непонятно какие значения нужны. Опиши какие данные надо извлекать и как они должны отображаться в конечном документе. А так я, например, ничего не понял. smile 


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


Опытный
**


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

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



diadiavova , смотрите...
CONTAINER1 - это таблица
RECORD - это строка таблицы
EDITOR_FIELD1 - это поле таблицы
TEXTAREA1 - поле таблицы

Мне нужно было написать шаблон, который принимает название таблицы(CONTAINER1) и название одного из полей таблицы(TEXTAREA1).
Результат должен выдать все значения поля TEXTAREA1 в таблице - CONTAINER1.

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


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


Профиль
Группа: Модератор
Сообщений: 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="text"/>
  <xsl:template match="/">
    <xsl:apply-templates select="CONTAINER1/RECORD/TEXTAREA1"/>
  </xsl:template>
</xsl:stylesheet>
Если надо удалить лишние пробелы или выполнить какую-нибудь другую обработку, то шаблон написать всё-таки придётся, ну вот так например
Код

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>
  <xsl:template match="/">
    <xsl:apply-templates select="CONTAINER1/RECORD/TEXTAREA1"/>
  </xsl:template>
  <xsl:template match="CONTAINER1/RECORD/TEXTAREA1">
    <xsl:value-of select="concat(normalize-space(),' ')"/>
    </xsl:template>
</xsl:stylesheet>




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


Опытный
**


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

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



большое человеческое вам спасибо.
С меня плюс.

Добавлено через 35 секунд
Тема закрыта
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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