powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Подскажите как правильно
31 сообщений из 31, показаны все 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
Подскажите как правильно
    #37803664
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp,

у вас какие-то неправильные пчелы.
только так
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37803669
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mage.lanочень тормознымПочему тормозным то?

Вот сейчас открыл свой базовый набор шаблонов и смотрю все именованные шаблоны: вывод <head> блока, вывод служебных атрибутов преобразование GUID'ов, функции по изменению размерностей, преобразование географических координат, ....

Еще раз повторю - эти шаблоны вызываются из различных XSL (они, в основном, ориентированы на вывод HTML, но это не так важно). И применяться они могут к различным элементам из различных пространств имен. Интересно выслушать Ваши рекомендации по их замене, а также есть ли смысл их менять? Заменить все на
Код: xml
1.
<xsl:template match="*" mode="xxx">

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

и чем же они не правильные??
то что хотят то что типа низзя!!?? так хотелка она у всех как раз на то и хотелка чтоб хотеть как хочецца!! а вот задача xslt реализовать мою хотелку!!

а почему через call-template нельзя!?
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37803756
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_mage.lanочень тормознымПочему тормозным то?
...
то что вы описываете относится к моему пункту 4.

spmage.lanу вас какие-то неправильные пчелы.

и чем же они не правильные??
то что хотят то что типа низзя!!?? так хотелка она у всех как раз на то и хотелка чтоб хотеть как хочецца!! а вот задача xslt реализовать мою хотелку!!

а почему через call-template нельзя!?
Чем неправильно?
Я не могу себе представаить модель.

Смотрите, вы пришли выбирать телефон, допустим из 10, по вашему - вы обойдете 10 телефонов, чтобы узнать фирму, затем обойдете все 10, чтобы узнать цвет, затем сколько памяти, какая ос, какая сим, сколько держит батарея и т.д и т.п...

В жизни же у вас есть шаблон с критериями, по которым обойдя 10 телефонов один раз вы выберите тот, что вам нужен или остановитесь на 2х-3х моделях, которые вам надо пощупать и выбрать "интуитивно".

Здесь все тоже самое. Вы просто решаете какую-то не ту задачу, либо выбрали неправильное средство выражения.
Может стоит обойти ваши таблицы один раз, сделать javascript объект, потом построить скриптом, то что вы хотите?
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37803770
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mage.lan,

модель простая - представьте вы пришли в магазин одежды - вас отсканировали и предлагают размноженного вас во всех видах носков чтобы вы могли выбрать носки под цвет ваших глаз! :)
...
Рейтинг: 0 / 0
Подскажите как правильно
    #37803921
mage.lan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp,

все равно не понятно. размер, цвет, бамбук, и за 80руб носки у меня в кармане.
впрочем дело ваше... хотите запутать человека, тогда да, тысяча клонов и пусть выбирает.

да, по поводу call-template используйте, вам можно. еще реально параметры передавать и принимать, или по умолчанию...
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<xsl:call-template name="table-part1">
   <xsl:with-param nemr="tables" select="Table" />
</xsl:call-trmplate>
...
<xsl:template name="">
   <xsl:param name="tables" select="\NewDataSet\Table" />
 ...
</xsl:tempate>
...
Рейтинг: 0 / 0
31 сообщений из 31, показаны все 2 страниц
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Подскажите как правильно
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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