powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как обработать с помошью шаблона значение переменной
31 сообщений из 31, показаны все 2 страниц
Как обработать с помошью шаблона значение переменной
    #33379657
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача такая, есть xml документ в котором прописаны адреса которые надо собрать в единый html документ
получаю xml с помошью <xsl:variable name="data_file" select="document($data_URL)"/> и все бы ничего только потом надо этот xml преобразовать в html, уже не знаю с какой стороны подойти, сдесь представлено немного неработоспособное решение, но может быть ктото подскажет куда копать???

<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="ALL" >
<html>
<head>
</head>
<xsl:for-each select="URL">
<xsl:variable name="data_URL">
<xsl:value-of select="FC_URL"/>
</xsl:variable>
<xsl:variable name="data_file" select="document($data_URL)"/>
<CENTER>
<!--xsl:copy-of select="$data_file/node()"/-->
<xsl:call-template name="temp" >
<xsl:with-param name="data_value">
<xsl:value-of select="$data_file/ROWSET/ROW"/>
</xsl:with-param>
</xsl:call-template>
</CENTER><BR/>
</xsl:for-each>
<!--xsl:aply-templates/-->
<body>
</body>
</html>
</xsl:template>

<xsl:template name="temp">
<xsl:param name="data_value"/>
<CENTER>2
<xsl:value-of select="fc_machine/node()"/>

</CENTER>
<br/>
</xsl:template>

</xsl:stylesheet>

PS Я думал никогда не дождусь появление этого раздела на форуме
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33379691
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
копать сюда => http://www.citforum.ru/internet/xpath/xpath.shtml

только зачем в переменную пихать xml? Почему просто не прописать в xml (грубо говоря):
<?xml-stylesheet type="text/xsl" href="root.xsl"?>

ну или там

<root xmlns:sql="urn:schemas-microsoft-com:xml-sql" sql:xsl="root.xsl">

в зависимости от задачи и способов ее решения...
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33379738
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо плохо обьясняю
1 Есть xml документ в нем прописаны адреса ну что то типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<ALL>
   <URL num="1">
      <FC_URL>http://url1/demo/helloworld/server_name.xsql</FC_URL>
   </URL>
   <URL num="2">
      <FC_URL>http://url2/demo/helloworld/server_name.xsql</FC_URL>
   </URL>
</ALL>
2 по этим адресам нужно достать информацию которая достаеться в переменные с помошью xsl и приходит в виде xml и обработать пришедшую информацию с помошью шаблона и выдать пользователю
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33379851
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<xsl:variable name="data_file" select="document($data_URL)"/>
и это работает?
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33380731
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работает и еще как, лано эту проблему я решил теперь у мня другая:
<xsl:for-each select="URL">
<xsl:variable name="data_URL">
<xsl:value-of select="FC_URL"/>
</xsl:variable>
<xsl:variable name="data_file" select="document($data_URL)"/>
<CENTER>
<!--Есть ли способ собрать все переменные data_file в одну переменную в цикле??? кто нить пробовал??-->
</CENTER>
</xsl:for-each>
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33380746
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VintВидимо плохо обьясняю
1 Есть xml документ в нем прописаны адреса ну что то типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<ALL>
   <URL num="1">
      <FC_URL>http://url1/demo/helloworld/server_name.xsql</FC_URL>
   </URL>
   <URL num="2">
      <FC_URL>http://url2/demo/helloworld/server_name.xsql</FC_URL>
   </URL>
</ALL>
2 по этим адресам нужно достать информацию которая достаеться в переменные с помошью xsl и приходит в виде xml и обработать пришедшую информацию с помошью шаблона и выдать пользователю

а кто генерит этот xml?
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33380847
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VintРаботает и еще как, лано эту проблему я решил теперь у мня другая:
<xsl:for-each select="URL">
<xsl:variable name="data_URL">
<xsl:value-of select="FC_URL"/>
</xsl:variable>
<xsl:variable name="data_file" select="document($data_URL)"/>
<CENTER>
<!--Есть ли способ собрать все переменные data_file в одну переменную в цикле??? кто нить пробовал??-->
</CENTER>
</xsl:for-each>

1 - советую for-each вообще не использовать
2 - и что значит "с помощью for-each собрать все значения переменных"?
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33381613
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 Почему?
2 for-each это цикл который перебирает куски xml которые в конечном счете нужно обьеденить в один, по отдельности то я их могу обработать. но вот вместе собрать все полученные по <xsl:variable name="data_file" select="document($data_URL)"/> не могу
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33381617
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M0usа кто генерит этот xml?
Этот документ генериться на сервере с помошью XDK
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33384156
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vintперебирает куски xml которые в конечном счете нужно обьеденить в один, по отдельности то я их могу обработатьно чем-то не устраивает?
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33384171
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoно чем-то не устраивает?
немного не понял к чему это замечание, неустраивает тем что мне нужно обработать обьединенный документ а не отдельные части.
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33384261
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одну переменную вы не соберете, т.к. любая переменная после инициализации становится read-only. А чем не нравится xsl:copy-of ?
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33384336
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
угу, про то, что такое variable, и как оно работает, можно, например, почитать у товарищей с w3c.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33384702
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фу. ну знаю я как вариэйблы работают и то что один раз задаються при инициализации тож знаю просто есть задачка свести несколько xml документов в один и обработать его, каждый документ состоит из разделов и вот взбрело в голову пользователям сортировку по разделам иметь, то есть хочеш один за другим документы смотри а хочеш отсортируй по разделам и тож смотри токо сначала будет первый раздел первого документа потом первый второго, потом второй первого документа и второй второго итд. Можно конечно с позиционированием и сортировкой дивов заморочиться но посчитав количество кода мне как то расхотелось, вот подумал что может как то можно в xsl извернуться но тоже не получаеться, пытаюсь в яве сделать вроде получаеться но я её вообще плохо знаю поэтому "шаг вперед два назад"...
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33384996
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
<call-template>
 <with-param>
  <for-each select="FC_URL">
   <copy-of select="document(.)"/>
  </for-each>
 </with-param>
</call-template>
атрибуты правильно расставлять ломает
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33386057
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что такое document(.), что она содержит, а то чтото я смысла не улавливаю
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33386531
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VintА что такое document(.), что она содержит, а то чтото я смысла не улавливаю

почитайте XSLT-функции на http://zeus.sai.msu.ru:7000/internet/xslt/xslt.shtml

document() - позволяет подгружать файлы извне и пользоваться их содержимым в шаблоне...

всетаки for-each лучше заменять на apply-templates - быстрее шаблон отрабатывать будет...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
...

<xsl:template match="all">
  <xsl:apply-templates select="url/fc_url"/>
</xsl:template>

<xsl:template match="fc_url">
  <copy-of select="document(.)"/>
</xsl:template>

...

такой код отработает быстрее...
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33386859
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут я как понял, вопрос был про точку внутри document(). Точка - это текущий нод, в данном случае для for-each.
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33386865
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БЛ* как меня достали умники считающие себя умнее других, прочитай ветку сначала M0us, а то мня уже тошнит разжевывать еще раз, хотя чисто для тебя:
МНЕ НЕ НАДО ПОДГРУЖАТЬ И ОБРАБАТЫВАТЬ СТОРОННИЙ ДОКУМЕНТ В ШАБЛОН Я И ТАК УЖЕ ЭТО СДЕЛАЛ, меня интересует вариант обьединения нескольких XML документов внутри шаблона в один и последующая обработка, все тема закрыта надоело обьяснять
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33386867
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M0us

всетаки for-each лучше заменять на apply-templates - быстрее шаблон отрабатывать будет...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
...

<xsl:template match="all">
  <xsl:apply-templates select="url/fc_url"/>
</xsl:template>

<xsl:template match="fc_url">
  <copy-of select="document(.)"/>
</xsl:template>

...

такой код отработает быстрее...
Откуда такая уверенность?
Если они и отличаются по скорости, то в типичных примерах незначительно, в данном примере вы вообще никаких отличий не заметите. И for-each должен быть чуть-чуть быстрее, т.к. не надо из списка шаблонов выбирать, какой применять к данному ноду, получается, что шаблон один и находится внутри for-each.
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33386931
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vint меня интересует вариант обьединения нескольких XML документов внутри шаблона в один и последующая обработка, все тема закрыта надоело обьяснять
Если в такой постановке вопроса, то по-моему никак, придется объединять эти xml-ники снаружи или же использовать 2 последовательных трансформации, т.е. сначала одним xsl-ником, потом другим с сортировкой.
Хотя вообще вопрос интересный - можно ли в XSLT промежуточный результат работы пустить опять на вход в какой-нибудь шаблон. По-моему стандартными средствами нельзя, если только использовать расширения типа <msxsl:script>
в MSXML или внешние функции. У кого-нибудь есть другое мнение?
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33387343
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladiCh Vint меня интересует вариант обьединения нескольких XML документов внутри шаблона в один и последующая обработка, все тема закрыта надоело обьяснять
Если в такой постановке вопроса, то по-моему никак, придется объединять эти xml-ники снаружи или же использовать 2 последовательных трансформации, т.е. сначала одним xsl-ником, потом другим с сортировкой.
Хотя вообще вопрос интересный - можно ли в XSLT промежуточный результат работы пустить опять на вход в какой-нибудь шаблон. По-моему стандартными средствами нельзя, если только использовать расширения типа <msxsl:script>
в MSXML или внешние функции. У кого-нибудь есть другое мнение?

Можно, VladiCh просто в каждую xml-лину нужно вставлять
Код: plaintext
1.
2.
3.
<xsl:processing-instruction name="xml-stylesheet">
  <xsl:text>type="text/xsl" href="шаблон_N.xsl"</xsl:text>
</xsl:processing-instruction>
и менять соответствующее имя xsl-шаблона. Но такая операция обычно производится только при необходимости оперирования как конечным, так и промежуточным xml-результатом
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33387430
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно поподробнее?
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33387441
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тебя же вроде не интересовала тема про два последовательных преобразования, а про объединение ещё вот что нашёл: If only one argument is provided and that argument is a node set, then each node in that node set is treated as a URL and the function returns the union of all of the documents referenced.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33387474
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoтебя же вроде не интересовала тема про два последовательных преобразования
не интересовала для данной задачи но вообще достаточно интересно само по себе
maXmo
If only one argument is provided and that argument is a node set, then each node in that node set is treated as a URL and the function returns the union of all of the documents referenced.
что то я не понял какая функция мне должа вернуть обьединенное содержимое :(( пятница сказываеться, туплю
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33387499
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VintА можно поподробнее?
куда уж подробнее...

получаешь первую xml-лину№1, которая на выходе преобразуется шаблоном "шаблон1.xsl"
в текст генерируемой xml-лины№1 вставляешь
Код: plaintext
1.
2.
3.
<xsl:processing-instruction name="xml-stylesheet">
  <xsl:text>type="text/xsl" href="шаблон2.xsl"</xsl:text>
</xsl:processing-instruction>

из xml-лины№1 получается xml-лины№2, которая в свою очередь колбасится шаблоном "шаблон2.xsl"

и так далее до бесконечности...
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33387518
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
та же, что может и необъединённое - document().
а двойное преобразование можно выполнить в явном виде через import и call-template (с тем же with-param), но при этом применяемый (второй) шаблон должен быть на это рассчитан.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33387538
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoта же, что может и необъединённое - document().
а двойное преобразование можно выполнить в явном виде через import и call-template (с тем же with-param), но при этом применяемый (второй) шаблон должен быть на это рассчитан.]

согласен, но я выше уже пояснил для чего иногда требуются такие связки
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33797744
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
демонстрация двойного преобразования. Странно, в фаерфоксе не пашет.
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33798164
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понял, почему в фаере не пашет. Пример нехороший: через параметр я передаю значение типа result tree fragment (а не node-set), а подэлементы можно выделять только у node-set, result tree fragment можно только копировать как есть.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Как обработать с помошью шаблона значение переменной
    #33799040
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoпонял, почему в фаере не пашет. Пример нехороший: через параметр я передаю значение типа result tree fragment (а не node-set), а подэлементы можно выделять только у node-set, result tree fragment можно только копировать как есть.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm

node-set Function
Enables you to convert a tree into a node set. The resulting node always contains a single node and the root node of the tree.

msxsl:node-set(string)
Remarks
With earlier versions of Microsoft® XML Core Services (MSXML), it was possible to use expressions such as <xsl:for-each select="$var/el">, where var is an XSLT variable bound to a result tree. However, this approach does not work with MSXML 4.0 (or with MSXML 3.0). To achieve the same results, use the node-set function, as shown in the following code sample.

<xsl:for-each select="msxsl:node-set($var)/el)">
...
Рейтинг: 0 / 0
31 сообщений из 31, показаны все 2 страниц
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как обработать с помошью шаблона значение переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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