powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
14 сообщений из 14, страница 1 из 1
Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
    #37787972
McLighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть такой xml

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<results>
<result>
<versions>001 002 007</versions>
<url>http://link1.txt</url>
</result>

<result>
<versions>008 006 005</versions>
<url>http://link2.txt</url>
</result>
</results>



вопрос, смогу я получить такой вид используя xsl 1.0? :

Код: html
1.
2.
<a href="http://link1.txt">001</a><a href="http://link1.txt">002</a><a href="http://link2.txt">005</a>
<a href="http://link2.txt">006</a><a href="http://link1.txt">007</a><a href="http://link2.txt">008</a>




(Как разбить и отсортировать примерно знаю как сделать, но не могу версии связать с URL.)
...
Рейтинг: 0 / 0
Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
    #37788105
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажите свою сортировку и скажите какой XSLT процессор используется.

P.S. Без сортировки код будет в разы проще
...
Рейтинг: 0 / 0
Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
    #37788194
McLighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XSLT - version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform"
вторая версия не подойдет. EXSLT тоже не подходит.

Отсортировать у меня не получилось, смог только разбить на строки, вот мой код:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>
  
<xsl:template name="token">
 <xsl:param name="token"/>
 <li>
  <xsl:value-of select="$token"/>
 </li>
</xsl:template>
  
<xsl:template name="split" match="text()" mode="split">
<xsl:param name="str" select="."/>
<xsl:param name="worddiv" select="','"/>

<xsl:choose>
 
 <xsl:when test="contains($str,$worddiv)">
  <xsl:call-template name="token">
   <xsl:with-param name="token" select="substring-before($str, $worddiv)"/>
  </xsl:call-template>
  <xsl:call-template name="split"> 
   <xsl:with-param name="str" select="substring-after($str, $worddiv)"/>
   <xsl:with-param name="worddiv" select="$worddiv"/>
  </xsl:call-template>
 </xsl:when>
 <xsl:otherwise>
  <xsl:call-template name="token">
   <xsl:with-param name="token" select="$str"/>
  </xsl:call-template>
 </xsl:otherwise>
 
</xsl:choose>
</xsl:template>
    
  <xsl:template name="data">
        <ul>
          <xsl:apply-templates mode="split">
            <xsl:with-param name="worddiv" select="' '"/>
          </xsl:apply-templates>
        </ul>
  </xsl:template>
  
  <xsl:template match="results">
    <xsl:for-each select="result">
       
       <xsl:for-each select="versions">         
              <xsl:call-template name="data"/> 
      </xsl:for-each>    
      
    </xsl:for-each>  
  </xsl:template>
  
  
</xsl:stylesheet>
        
...
Рейтинг: 0 / 0
Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
    #37788637
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
McLighterXSLT - version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform"
вторая версия не подойдет. EXSLT тоже не подходит.Я не спрашиваю чем Вы не пользуетесь. Я спрашиваю, что Вы используете? Какой процессор Вы используете?
...
Рейтинг: 0 / 0
Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
    #37788846
McLighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пользуюсь вот этим: http://www.xmlper.com/
...
Рейтинг: 0 / 0
Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
    #37789021
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
McLighterЯ пользуюсь вот этим: http://www.xmlper.com/ Тогда почему
McLighterEXSLT тоже не подходит.? Оно отлично поддерживается этим движком
...
Рейтинг: 0 / 0
Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
    #37789747
McLighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой Вопрос был не в том что чем поддерживается.
Я спросил можно ли используя xsl 1.0 реализовать split и сортировку полученных элементов.

Если нечего сказать, не надо уводить тему в сторону.
...
Рейтинг: 0 / 0
Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
    #37790308
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
McLighterЯ спросил можно ли используя xsl 1.0 реализовать split и сортировку полученных элементов.Вы удивитесь, но EXSLT это расширение XSLT 1.0 . Так. что ответ - да, можно
...
Рейтинг: 0 / 0
Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
    #37793608
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
особенность - используется библиотека msxml, у других тарнсформеров есть аналоги функции node-set
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">

	<xsl:output method="xml" />
	<xsl:template match="/">
		<xsl:variable name="links">
			<xsl:for-each select="/results/result">
				<xsl:call-template name="create-links">
					<xsl:with-param name="str" select="versions/text()" />
					<xsl:with-param name="link" select="url/text()" />
				</xsl:call-template>
			</xsl:for-each>
		</xsl:variable>
		<xsl:for-each select="msxsl:node-set($links)/item">
			<xsl:sort select="@name" />
			<a href="{@link}">
				<xsl:value-of select="@name" />
			</a>
		</xsl:for-each>
	</xsl:template>
	<xsl:template name="create-links">
		<xsl:param name="str" />
		<xsl:param name="link" />
		
		<xsl:choose>
				<xsl:when test="contains( $str, ' ')">
					<item name="{substring-before( $str, ' ' )}" link="{$link}" />
					<xsl:call-template name="create-links">
						<xsl:with-param name="str" select="substring-after( $str, ' ' )" />
						<xsl:with-param name="link" select="$link" />
					</xsl:call-template>
				</xsl:when>
				<xsl:otherwise>
					<item name="{$str}" link="{$link}" />
				</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
	<xsl:template match="ComparsionExpression">
		<xsl:copy-of select="." />
	</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
    #37793975
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mage.lanу других тарнсформеров есть аналоги функции node-setЕму же нужно
McLighterEXSLT тоже не подходит.
...
Рейтинг: 0 / 0
Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
    #37794794
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

я как-то не уверен, что затыкание дыры стандарта по превращению переменной в фрагмент дерева - относится к расширению.

ну если так, то и на совсем голом xsl написать можно, но только за деньги.

по чесночку, эта проблема решается следующими способами:
- приведение xml к нормальному, т.к. разбирать строки это не задача xsl,
- двойная трансформация
...
Рейтинг: 0 / 0
Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
    #37795051
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mage.lanна совсем голом xsl написать можноДвойной трансформацией?
mage.lanразбирать строки это не задача xsl,Помнится как я извращался для того, чтобы XSL часть данных тянула из БД...
...
Рейтинг: 0 / 0
Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
    #37796761
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_mage.lanна совсем голом xsl написать можноДвойной трансформацией?
нет. строится переменная ключей сортировки, сортируется, потом делаем кучу рекурсий по хмл, пока не выберем все ключи.

безумная, бесполезная работа.
два прохода я в прошлом примере и так показал, и то это уже извращения.
Не задача XSL разбирать данные, он должен их преобразовывать для вывода.
...
Рейтинг: 0 / 0
Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
    #37796922
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mage.lanстроится переменная ключей сортировкиКрасивая идея
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Split и сортировка средствами xsl 1.0 c привязкой к другому элементу.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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