powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Подскажите как правильно
25 сообщений из 31, страница 1 из 2
Подскажите как правильно
    #37802113
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения за чайниковский вопрос - но приходится работать Фросей-семиделкой:)

Есть xml:
Код: xml
1.
2.
3.
4.
5.
6.
<?xml version="1.0" encoding="utf-8" ?>
<NewDataSet>
	<Table>
	...
	</Table>
</NewDataSet>



и есть таблица преобразования в которой есть 2 шаблона, которые необходимо выполнить
делаю так:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?xml version="1.0" encoding="utf-8"?>
<xsl:output method="xml" encoding="utf-8" indent="no" />
  <xsl:template match="NewDataSet">
    <Parts>
      <xsl:apply-templates select="Table" />
    </Parts>
  </xsl:template>

  <xsl:template match="Table" name="Part1">...</xsl:template>
  <xsl:template match="Table" name="Part2">...</xsl:template>
</xsl:stylesheet>



Но вызывается только первый шаблон
Как мне вызвать на выполнение все шаблоны (их может быть от К до N штук)
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802148
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
изменение на

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?xml version="1.0" encoding="utf-8"?>
<xsl:output method="xml" encoding="utf-8" indent="no" />
  <xsl:template match="NewDataSet">
    <Parts>
      <xsl:call-template name="Part1" />
      <xsl:call-template name="Part2" />
    </Parts>
  </xsl:template>

  <xsl:template match="Table" name="Part1">...</xsl:template>
  <xsl:template match="Table" name="Part2">...</xsl:template>
</xsl:stylesheet>



приводит к выдаче пустых шаблонов (данные не попадают в шаблоны...)
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802152
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?xml version="1.0" encoding="utf-8"?>
<xsl:output method="xml" encoding="utf-8" indent="no" />
  <xsl:template match="NewDataSet/Table">
    <Parts>
      <xsl:call-template name="Part1" />
      <xsl:call-template name="Part2" />
    </Parts>
  </xsl:template>

  <xsl:template name="Part1">...</xsl:template>
  <xsl:template name="Part2">...</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802153
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но хотелось бы решить и при помощи ...

Код: xml
1.
<xsl:apply-templates select="Table" />
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802437
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замените name на mode
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802446
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Замените name на mode
заменил - не помогло (
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802453
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spзаменил - не помогло (Не верю. Код в студию
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802456
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_spзаменил - не помогло (Не верю. Код в студию

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?xml version="1.0" encoding="utf-8"?>
<xsl:output method="xml" encoding="utf-8" indent="no" />
  <xsl:template match="/">
    <Parts>
      <xsl:apply-templates select="NewDataSet" />
    </Parts>
  </xsl:template>

  <xsl:template match="Table" mode="Part1">...</xsl:template>
  <xsl:template match="Table" mode="Part2">...</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802461
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp, А где
sp
Код: xml
1.
 <xsl:apply-templates select="Table" />

?
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802462
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_sp, А где
sp
Код: xml
1.
 <xsl:apply-templates select="Table" />

?

и так не катит..
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802468
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

уже лучше бы код подправили - оно быстрее было бы :)
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802480
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spуже лучше бы код подправили - оно быстрее было бы :)Влом :)

Возьмите Ваш второй вариант и замените все name на mode
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802483
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_spуже лучше бы код подправили - оно быстрее было бы :)Влом :)
Возьмите Ваш второй вариант и замените все name на mode

дык мне нужен первый а не второй вариант :)
сколько еще будем так переписываться без дела??? уже б как в том анекдоте "ты мне пальцем покажи, а то do you speak english?" :)
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802505
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spсколько еще будем так переписываться без дела???Неужели так сложно прочесть документацию по атрибуту mode?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?xml version="1.0" encoding="utf-8"?>
<xsl:output method="xml" encoding="utf-8" indent="no" />
  <xsl:template match="NewDataSet">
    <Parts>
      <xsl:apply-templates select="Table" mode="Part1"/>
      <xsl:apply-templates select="Table" mode="Part2"/>
    </Parts>
  </xsl:template>

  <xsl:template match="Table" mode="Part1">...</xsl:template>
  <xsl:template match="Table" mode="Part2">...</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802508
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

не понял, а что это вы мне привели?
у меня без mode с name такой вариант работает!! тынц

я ж хотел избавиться от двойного объявления и вызова шаблонов, а вы мне 2й вариант моего второго варианта привели! :) и зачем?
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802520
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spне понял, а что это вы мне привели?То, что Вы просили - заменил <xsl:call-template> на <xsl:apply-templates>
spвы мне 2й вариант моего второго варианта привели!Если Вы не понимаете отличия между <xsl:apply-templates> и <xsl:call-template>, то мне больше добавить нечего
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802525
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

вопрос не в том насколько я не понимаю - вопрос в том чтобы мне помогли а не в очередной раз макнули Ж) сам знаю что плаваю, но некогда изучать - тут гонят давай-давай :)
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802528
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spвопрос в том чтобы мне помогли а не в очередной раз макнули Ж)Так Вы объясните, что же именно Вам нужно?
spно некогда изучать - тут гонят давай-давай :)А деньги зарабатывать есть когда?
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802529
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Разве это деньги?? ))) такое даже деньгами не называют - это пособие какое-то :)
Мне нужно один узел обработать (в данном случае Table) N-м количеством шаблонов. Шаблоны будут просто добавляться в текст в коде, поэтому желательно избежать лишних телодвижений в виде индивидуальных вызовов этих шаблонов то ли по name то ли по mode.
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37802536
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spпоэтому желательно избежать лишних телодвижений в виде индивидуальных вызовов этих шаблонов то ли по name то ли по mode.Это невозможно. Единственный способ - это описать общий шаблон, который будет вызывать нужную группу. И в необходимых местах вызывать уже общий шаблон
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37803449
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spприводит к выдаче пустых шаблонов (данные не попадают в шаблоны...)
То, что вам предложил _Vasilisk_ c модами и есть то что, вы простили.
Да еще, никогда не используйте call-template если можно решить задачу без нее.
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37803466
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp... Шаблоны будут просто добавляться в текст в коде, поэтому желательно избежать лишних телодвижений в виде индивидуальных вызовов этих шаблонов то ли по name то ли по mode.
А вот с этого места поподробнее, т.к. в стартовой задаче ничего про это нет.
например, можно разбирать по атрибуту, т.е. каждый шаблон должен разбирать свои данные или как?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?xml version="1.0" encoding="utf-8" ?>
<NewDataSet>
	<Table>
             <this type="1" />
	...
	</Table>
	<Table>
             <this type="7" />
	...
	</Table>
</NewDataSet>


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?xml version="1.0" encoding="utf-8"?>
<xsl:output method="xml" encoding="utf-8" indent="no" />
  <xsl:template match="/">
    <Parts>
      <xsl:apply-templates select="/NewDataSet/Table" />
    </Parts>
  </xsl:template>

  <xsl:template match="Table[this/@type=1]">...</xsl:template>
  <xsl:template match="Table[this/@type=7]">...</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37803548
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mage.lanникогда не используйте call-template если можно решить задачу без нее.Почему?
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37803629
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Если скажу "из практики" поверите?

call-template появляется в коде в следующих случаях:
1. кривые руки XSL разработчика, который еще не отучился от какого-либо императивного языка и хочет все вызывать, при этом не понимает как оно работает. Приводит к плачевным последствиям и очень тормозным, а зачастую и не правильно работающим шаблонам.
2. кривые руки серверного программиста, который прислал плохо продуманный словарь XML, для того, чтобы его обработать приходится использовать рекурсивные цепочки. Однозначно тормозит шаблон, но порой является единственным выходом из ситуации, т.к. XML менять нельзя, так сказал заказчик.
3. кривые руки Дизайнера, который наплодил сто-пицот одинаковых элементов. В данном случае call-template оправдан, не тормозит, но ни к чему хорошему в общем не приводит.
4. не кривые руки XSL разработчика + большое количество разнообразных шаблонов + голова которая перевешивает пятую точку. Выделение кусков кода для удобства поддержки и рефакторинга. В этом случае оправдано, но это относится к "невозможности решить задачу без...".
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37803634
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mage.lanА вот с этого места поподробнее, т.к. в стартовой задаче ничего про это нет.
например, можно разбирать по атрибуту, т.е. каждый шаблон должен разбирать свои данные или как?


Во входящем xml у меня один узел данных - Table
Мне в результате нужно получить все результаты его обработки различными шаблонами в одном узле Parts
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Подскажите как правильно
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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