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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Группировка записей из xml-файла, Set colNodes = xmlParser.selectNodes ... 
:(
    Опции темы
svch
Дата 13.11.2010, 02:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Добрый день !
Подскажите пож-та, как правильно сделать selectNodes ?
Есть xml-файл:
Код

<Группа id=1>
    <Элемент имя=имя_1 фирма=фирма_1>
    
    </Элеменет>
    <Элемент имя=имя_2 фирма=фирма_1>
    
    </Элеменет>
    <Элемент имя=имя_3 фирма=фирма_2>
    
    </Элеменет>
    <Элемент имя=имя_4 фирма=фирма_1>
    
    </Элеменет>
    <Элемент имя=имя_5 фирма=фирма_3>
    
    </Элеменет>
</Группа>
<Группа id=2>
    <Элемент имя=имя_6 фирма=фирма_4>
    
    </Элеменет>
    <Элемент имя=имя_7 фирма=фирма_5>
    
    </Элеменет>
    <Элемент имя=имя_8 фирма=фирма_2>
    
    </Элеменет>
    <Элемент имя=имя_9 фирма=фирма_1>
    
    </Элеменет>
    <Элемент имя=имя_10 фирма=фирма_3>
    
    </Элеменет>
</Группа>


И мне необходимо на выходе получить, к примеру все фирмы из Группы с id=1:
фирма_1
фирма_2
фирма_3

Что мне нужно вписать в условия ?
Set colNodes = xmlParser.selectNodes("//Группа[(@id=1)]/ancestor::Элемент") ...

Большое спасибо за помощь.
С уважением, Сергей.
PM MAIL   Вверх
diadiavova
Дата 13.11.2010, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Группа[@id = '1']/Элемент/@фирма


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


Шустрый
*


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

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



Почему-то не группируется, а выдает все подряд :(
PM MAIL   Вверх
diadiavova
Дата 13.11.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Я видимо неправильно понял вопрос. Если надо получить все элементы у которых фирма=фирма1, то это будет выглядеть так
Код

Группа[@id = '1']/Элемент[@фирма = 'фирма1'] 



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


Шустрый
*


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

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



Нет, мне надо получить список всех фирм, указанных в Элементах из Группы с id=1, только без повторов.

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


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


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

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



Цитата(svch @  13.11.2010,  17:51 Найти цитируемый пост)
Нет, мне надо получить список всех фирм, указанных в Элементах из Группы с id=1, только без повторов.

Тогда первый вариант. Убирать повторяющиеся элементы придется в коде. В XPath нет функции типа Distinct.


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


потерял xPath
**


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

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



что за молодежь, хмл не валидный:
Код

<root>
<Группа id="1">
    <Элемент имя="имя_1" фирма="фирма_1">

    </Элемент>
    <Элемент имя="имя_2" фирма="фирма_1">

    </Элемент>
    <Элемент имя="имя_3" фирма="фирма_2">

    </Элемент>
    <Элемент имя="имя_4" фирма="фирма_1">

    </Элемент>
    <Элемент имя="имя_5" фирма="фирма_3">

    </Элемент>
</Группа>
<Группа id="2">
    <Элемент имя="имя_6" фирма="фирма_4">

    </Элемент>
    <Элемент имя="имя_7" фирма="фирма_5">

    </Элемент>
    <Элемент имя="имя_8" фирма="фирма_2">

    </Элемент>
    <Элемент имя="имя_9" фирма="фирма_1">

    </Элемент>
    <Элемент имя="имя_10" фирма="фирма_3">

    </Элемент>
</Группа>
</root>

вопрос с ключами мусолили:
Код

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:z="http://my-z-namespace">

    <xsl:key name="f1" match="/root/Группа[@id=1]/Элемент" use="@фирма" />
    <xsl:key name="f2" match="/root/Группа[@id=2]/Элемент" use="@фирма" />

    <xsl:template match="/">
        <xsl:text>Group 1:</xsl:text>
        <BR/>
        <xsl:for-each select="/root/Группа[@id=1]/Элемент[generate-id()=generate-id(key('f1', @фирма))]">
            <xsl:value-of select="@фирма" />
            <BR />
        </xsl:for-each>
        <BR/>
        <xsl:text>Group 2:</xsl:text>
        <BR/>
        <xsl:for-each select="/root/Группа[@id=2]/Элемент[generate-id()=generate-id(key('f2', @фирма))]">
            <xsl:sort select="@фирма" />
            <xsl:value-of select="@фирма" />
            <BR />
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

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


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


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

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



magelan, на сколько я понял там речи об XSLT не идет. Он чего-то там извлекает из хмл-документа на бейсике
Цитата(svch @  13.11.2010,  02:26 Найти цитируемый пост)
Set colNodes = xmlParser.selectNodes("//Группа[(@id=1)]/ancestor::Элемент") ...




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

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

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

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

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


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

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


 




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


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

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