powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Сортировка по данным из справочника
5 сообщений из 5, страница 1 из 1
Сортировка по данным из справочника
    #37727235
Добрый день!
Не получается отсортировать по lookup-значению из справочника:

testData.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?xml version="1.0" encoding="UTF-8" ?>
<REPORT>
<DATA>
<EL C="1" S="11"/>
<EL C="4" S="14"/>
<EL C="2" S="12"/>
<EL C="3" S="13"/>
</DATA>
</REPORT>



testDictionary.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0" encoding="UTF-8" ?>
<TITLES>
  <TITLE>
    <CODE>1</CODE>
    <VALUE>One</VALUE>
  </TITLE>
  <TITLE>
    <CODE>3</CODE>
    <VALUE>Three</VALUE>
  </TITLE>
  <TITLE>
    <CODE>2</CODE>
    <VALUE>Two</VALUE>
  </TITLE>
  <TITLE>
    <CODE>4</CODE>
    <VALUE>Four</VALUE>
  </TITLE>
</TITLES>



test.xsl
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
  <xsl:variable name="dic" select="document('testDictionary.xml')//TITLES/TITLE"/>
<!--   <xsl:key match="$dic" name="tk" use="CODE" /> -->
  <xsl:template match="/">
    <xsl:for-each select="/REPORT/DATA/EL">
      <xsl:sort select="$dic[CODE=@C]/VALUE" order="ascending"/>
<!--      <xsl:sort select="key('tk',@C)/VALUE" /> -->
      <xsl:variable name="c" select="@C"/>
      <xsl:variable name="t" select="$dic[CODE=$c]/VALUE"/>
      <xsl:value-of select="@C"/>
      :
      <xsl:value-of select="@S"/>
      :
      <xsl:value-of select="$dic[CODE=$c]/VALUE"/>
      <br/>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>



На выходе:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
1
      :
      11
      :
      One<br>4
      :
      14
      :
      Four<br>2
      :
      12
      :
      Two<br>3
      :
      13
      :
      Three<br>
...
Рейтинг: 0 / 0
Сортировка по данным из справочника
    #37727402
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
<xsl:sort select="$dic[CODE=current()/@C]/VALUE" order="ascending"/>
...
Рейтинг: 0 / 0
Сортировка по данным из справочника
    #37727409
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Шевелев,

а меня слушается )))

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" />
  <xsl:variable name="dic" select="document('testDictionary.xml')//TITLES/TITLE" />

  <xsl:template match="/">
    <xsl:for-each select="/REPORT/DATA/EL">
      <xsl:sort select="$dic[ CODE/text() = current()/@C ]/VALUE" order="ascending" />
      <xsl:value-of select="@C" />
      <xsl:text> : </xsl:text>
      <xsl:value-of select="@S" />
      <xsl:text> : </xsl:text>
      <xsl:value-of select="$dic[ CODE/text() = current()/@C ]/VALUE" />
      <br/>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Сортировка по данным из справочника
    #37729719
mage.lan,

у меня твой xsl дал на выходе
Код: html
1.
2.
3.
4.
5.
1 : 11 : One<br>
4 : 14 : Four<br>
2 : 12 : Two<br>
3 : 13 : Three<br>
6 : 16 : <br>


не отсортировалось по тайтлам. что не так делаю?
test.xsl
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" />
  <xsl:variable name="dic" select="document('testDictionary.xml')//TITLES/TITLE" />

  <xsl:template match="/">
    <xsl:for-each select="/REPORT/DATA/EL">
      <xsl:sort select="$dic[ CODE/text() = current()/@C ]/VALUE" order="ascending" />
      <xsl:value-of select="@C" />
      <xsl:text> : </xsl:text>
      <xsl:value-of select="@S" />
      <xsl:text> : </xsl:text>
      <xsl:value-of select="$dic[ CODE/text() = current()/@C ]/VALUE" />
      <br/>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>


testData.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?xml version="1.0" encoding="UTF-8" ?>
<REPORT>
<DATA>
<EL C="1" S="11"/>
<EL C="4" S="14"/>
<EL C="2" S="12"/>
<EL C="3" S="13"/>
<EL C="6" S="16"/>
</DATA>
</REPORT>


test.xsl
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" />
  <xsl:variable name="dic" select="document('testDictionary.xml')//TITLES/TITLE" />

  <xsl:template match="/">
    <xsl:for-each select="/REPORT/DATA/EL">
      <xsl:sort select="$dic[ CODE/text() = current()/@C ]/VALUE" order="ascending" />
      <xsl:value-of select="@C" />
      <xsl:text> : </xsl:text>
      <xsl:value-of select="@S" />
      <xsl:text> : </xsl:text>
      <xsl:value-of select="$dic[ CODE/text() = current()/@C ]/VALUE" />
      <br/>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>


testDictionary.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<?xml version="1.0" encoding="UTF-8" ?>
<TITLES>
  <TITLE>
    <CODE>1</CODE>
    <VALUE>One</VALUE>
  </TITLE>
  <TITLE>
    <CODE>3</CODE>
    <VALUE>Three</VALUE>
  </TITLE>
  <TITLE>
    <CODE>5</CODE>
    <VALUE>Five</VALUE>
  </TITLE>
  <TITLE>
    <CODE>2</CODE>
    <VALUE>Two</VALUE>
  </TITLE>
  <TITLE>
    <CODE>4</CODE>
    <VALUE>Four</VALUE>
  </TITLE>
</TITLES>


запускаю из JDeveloper 10.1.3.3
...
Рейтинг: 0 / 0
Сортировка по данным из справочника
    #37730603
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Шевелев,

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


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