Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вопрос по XQuery / 5 сообщений из 5, страница 1 из 1
09.07.2008, 10:31
    #35419480
i__one
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по XQuery
Здравствуйте. помогите пожалуйста с такой задачкой:
есть вот такой XML:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<T id="1">
 <L><N>Name1</N><S>Sort1</S></L>
 <L><N>Name2</N><S>Sort2</S></L>
 <L><N>Name3</N><S>Sort3</S></L>
</T>
<T id="2">
 <L><N>Name11</N><S>Sort11</S></L>
 <L><N>Name22</N><S>Sort22</S></L>
</T>

а нужно получить вот такой XML:
Код: plaintext
1.
2.
<lk nameobj="Name1" comment="Sort1" objdop1="Name2" objdop2="Name3" />  
<lk nameobj="Name11" comment="Sort11" objdop1="Name22" />  

заранее благодарен за помощь.
...
Рейтинг: 0 / 0
09.07.2008, 10:51
    #35419570
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по XQuery
1.Для начало отметим что xml не валидный, так как родительский узел может быть только один.
но это лирика -кто занимается даже внимания не обратит.
2.атрибуты нужны имеено в таком порядке?
3 . и comment="Sort1" нужен только у первого элемента?
...
Рейтинг: 0 / 0
09.07.2008, 11:00
    #35419617
i__one
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по XQuery
SuSa
1. понятно что нужен один корневой элемент, я привел лишь фрагмент и не заморачивался на счет валидности
2. желательно в таком порядке (но не принципиально пока)
3. да только для первого
...
Рейтинг: 0 / 0
10.07.2008, 16:56
    #35423698
roces
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по XQuery
Попробуйте это преобразование, если я все правильно понял:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    <xsl:template match="root">
        <root>
            <xsl:apply-templates select="T"/>
        </root>
    </xsl:template>
    
    <xsl:template match="T">
        <lt><xsl:apply-templates select="L"/></lt>
    </xsl:template>
    
    <xsl:template match="L">
        <xsl:attribute name="{concat('objdop', position() - 1)}"><xsl:value-of select="N"/></xsl:attribute>
    </xsl:template>
    
    <xsl:template match="L[not(preceding-sibling::L)]">
        <xsl:attribute name="name"><xsl:value-of select="N"/></xsl:attribute>
        <xsl:attribute name="sort"><xsl:value-of select="S"/></xsl:attribute>
    </xsl:template>
...
Рейтинг: 0 / 0
14.07.2008, 15:12
    #35428915
i__one
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по XQuery
спасибо, но с помощью XSLT у меня уже есть решение и все работает. Но мне нужно теперь это решить с помощью XQuery
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вопрос по XQuery / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]