Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Задача по xsl / 6 сообщений из 6, страница 1 из 1
22.04.2008, 12:34
    #35270922
wesdfswsgbdhaahj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по xsl
есть вопрос...

исходный xml:

<?xml version="1.0"?>
<ROOT>
<Documents Name="NdOTS4387">
<Document Code="1">
<Field Name="IdOTS4387" ViewValue="1"></Field>
<Field Name="Name" ViewValue="fgfgh"></Field>
<Documents Name="NdOTS4388">
<Document Code="4">
<Field Name="IdOTS4387" ViewValue="1"></Field>
<Field Name="IdOTS4388" ViewValue="4"></Field>
</Document>
</Documents>
</Document>
<Document Code="2">
<Field Name="IdOTS4387" ViewValue="2"></Field>
<Field Name="Name" ViewValue="aaaaa"></Field>
<Documents Name="NdOTS4388">
<Document Code="1">
<Field Name="IdOTS4387" ViewValue="2"></Field>
<Field Name="IdOTS4388" ViewValue="1"></Field>
</Document>
</Documents>
</Document>
</Documents>
</ROOT>

как мне вывести отдельно из NdOTS4388 ViewValue="4", а потом ViewValue="1"???, то есть мне нада вывести в HTML в таком виде:

fgfgh
4
aaaaa
1

если писать:

<xsl:for-each select="/ROOT/Documents/Document/Documents/Document">
<p align="left" style="font-size: 12pt; font-family: Times New Roman" ><xsl:value-of select="Field[@Name='IdOTS4388']/@ViewValue"/> </p>

то оно выведет вместе... а мне нада именно отдельно....


помогите плз.... если можно кусок кода который это будет делать :)
...
Рейтинг: 0 / 0
23.04.2008, 09:04
    #35272969
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по xsl
Бррр.... бред какой-то..
возмоно вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<xsl:template match="/">
<xsl:for-each select="/ROOT/Documents/Document"> 
<xsl:sort select="@Code"/>
<p align="left" style="font-size: 12pt; font-family: Times New Roman" >
<xsl:value-of select="Field[@Name='Name']/@ViewValue"/> <br/>
<xsl:value-of select="Documents/Document/Field[@Name='IdOTS4388']/@ViewValue"/> </p>
<hr/>
</xsl:for-each>
</xsl:template>
результат
Код: plaintext
1.
2.
3.
4.
fgfgh
 4 
aaaaa
 1 
вроде даже походит на то что тебе нужно
...
Рейтинг: 0 / 0
23.04.2008, 11:38
    #35273473
wesdfswsgbdhaahj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по xsl
Спасибо SuSa... хоть ктото откликнулся...

Твое предложение работает, но как оказалось xml схема может быть немного другой... то есть:


<?xml version="1.0"?>
<ROOT>
<Documents Name="NdOTS4387">
<Document Code="1">
<Field Name="IdOTS4387" ViewValue="1"></Field>
<Field Name="Name" ViewValue="fgfgh"></Field>
<Documents Name="NdOTS4388">
<Document Code="4">
<Field Name="IdOTS4387" ViewValue="1"></Field>
<Field Name="IdOTS4388" ViewValue="4"></Field>
</Document>
<!-- это то что появилось новое, то есть таких вложений может быть несколько-->
<Document Code="5">
<Field Name="IdOTS4387" ViewValue="1"></Field>
<Field Name="IdOTS4388" ViewValue="5"></Field>
</Document>
<!-- конец нового текста -->
</Documents>
</Document>
<Document Code="2">
<Field Name="IdOTS4387" ViewValue="2"></Field>
<Field Name="Name" ViewValue="aaaaa"></Field>
<Documents Name="NdOTS4388">
<Document Code="1">
<Field Name="IdOTS4387" ViewValue="2"></Field>
<Field Name="IdOTS4388" ViewValue="1"></Field>
</Document>
</Documents>
</Document>
</Documents>
</ROOT>


в результате нада получить :
fgfgh
4
5
aaaaa
1

если можеш и тебе не трудно - глянь пожалуйста... я просто только начал разбираться в xsl, а задача срочная...
но в любом случае спасибо за предидущее предложение
...
Рейтинг: 0 / 0
23.04.2008, 16:50
    #35274952
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по xsl
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<!-- Шаблон  -->
<xsl:template match="/">
<xsl:for-each select="/ROOT/Documents/Document"> 
<!-- Сортируем по атрибуту по возростанию -->
<xsl:sort select="@Code"/>
Код = <xsl:value-of select="@Code"/> <br/> <!-- ну соответсвенно и получили 1,..., 2-->
<!-- Вот это твоя абракадабра в атрибуте-->
<xsl:value-of select="Field[@Name='Name']/@ViewValue"/> <br/>
<!-- Снова уходим в глубь, если нужна будет сортировка засунешь после for-each -->
<xsl:for-each select="Documents/Document"> 
<p align="left" style="font-size: 12pt; font-family: Times New Roman" >
<xsl:value-of select="Field[@Name='IdOTS4388']/@ViewValue"/> </p>
</xsl:for-each>
<hr/>
</xsl:for-each>
</xsl:template>
...
Рейтинг: 0 / 0
23.04.2008, 16:51
    #35274956
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по xsl
PS. используй кнопу SRC для кода, а то нечитабельно.
...
Рейтинг: 0 / 0
23.04.2008, 18:07
    #35275274
wesdfswsgbdhaahj
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача по xsl
SuSa Спасибо... правда я сделал по другому - там оказалось все намного проще чем я думал...
Если тебе интересно - посмотри на форуме xmlhack.ru - я там написал как сделал..

Еще раз спасибо за помощь.
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Задача по xsl / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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