powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Программа для применения xslt к xml
25 сообщений из 38, страница 1 из 2
Программа для применения xslt к xml
    #37209931
Фотография Царь в голове
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Узучаю xslt.
Вопрос. Есть ли какая-нибудь бесплатная консольная программка, которая могла бы просто применить xslt к xml?

Примерно так я хотел бы, чтобы это выглядело
Код: plaintext
> applyxslt sousce.xml rules.xsl dest.xml
Если есть хорошо зарекомендовавшие себя GUI-средства, то тоже хотел бы о них узнать.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37210020
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbs подойдет?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim xml,xsl,out
Set xml = CreateObject("MSXML2.DomDocument")
Set xsl = CreateObject("MSXML2.DomDocument")
Set out = CreateObject("MSXML2.DomDocument")
xml.Load WScript.Arguments( 0 )
xsl.Load WScript.Arguments( 1 )
out.loadXML xml.documentElement.transformNode(xsl)
out.Save WScript.Arguments( 2 )
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37210068
Фотография Царь в голове
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyvbs подойдет?
Ну если нет ничего готового, то можно попробовать.
Это можно использовать в командной строке?
Не подскажете как? Я VBS никогда не использовал.

Может быть кто-нибудь напишет что-то похожее на Java?
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37210100
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скопировать в *.vbs-файл, запускать примерно как через консоль. Пуск - выполнить - transform.vbs sousce.xml rules.xsl dest.xml
Очевидное ограничение — подвенду only.
Сегодня-завтра напишу гуй, самому нужен.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37210140
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Царь в голове,

msxsl.exe

А система-то какая?
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37210223
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Успел сегодня.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37210290
Фотография Царь в голове
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, спасибо, смог задействовать VBS-код. Только от мне почему-то пустой файл формирует, а вот утилитка msxsl.exe (что посоветовал refreg) на тех же данных формирует непустой файл с результатом очень похожим на тот, что я ожидал.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37210335
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно проблемы с путями - нет обработки ошибок.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37210344
Фотография Царь в голове
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

AntonariyУспел сегодня.

Гуй не работает

---------------------------
Transformation result error
---------------------------
Error -1072896682:

Ошибка в элементе верхнего уровня документа.

line 40 position 40

text: <?xml version="1.0" encoding="UTF-16"?>101.1428String (строка) № 12011-04-11T17:56:46.000+04:002.2857String (строка) № 22011-04-11T22:44:46.000+04:003.4285String (строка) № 32011-04-12T03:32:46.000+04:004.5714String (строка) № 42011-04-12T08:20:46.000+04:005.7142String (строка) № 52011-04-12T13:08:46.000+04:006.8571String (строка) № 62011-04-12T17:56:46.000+04:0071String (строка) № 72011-04-12T22:44:46.000+04:0081.1428String (строка) № 82011-04-13T03:32:46.000+04:0091.2857String (строка) № 92011-04-13T08:20:46.000+04:00101.4285String (строка) № 102011-04-13T13:08:46.000+04:00
---------------------------
ОК
---------------------------

У меня в исходном XML первая строчка
Код: plaintext
<?xml version="1.0" encoding="UTF-8"?>

Тулза msxsl.exe на тех же данных отрабатывает.

Меня больше устроил бы скрипт (даже по сравнению с msxsl.exe ).
Может быть посмотрите, что не так в скрипте?
Я не могу сейчас изучать VBS. Мне надо уже на XSLT выполнять работу.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37210356
Фотография Царь в голове
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВероятно проблемы с путями - нет обработки ошибок.
Запуск из того же каталога, в котором исходный XML и XSL. Файл результата формируется в том же каталоге, но он пустой. И утилита msxsl.exe работает же.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37210367
Фотография Царь в голове
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запускаю вот так:
Код: plaintext
cscript //NoLogo transform.vbs test_src.xml test_rules.xsl result.xml
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37210448
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гуй не работает Гуй работает, не работает результат трансформации. Результат, в котором нет корневого элемента, грузится в DomDocument, отсюда ошибка. vbs не срабатывает по той же причине.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37210464
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот vbs без валидации:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim xml,xsl,out
Set xml = CreateObject("MSXML2.DomDocument")
Set xsl = CreateObject("MSXML2.DomDocument")
Set out = CreateObject("Scripting.FileSystemObject")
xml.Load WScript.Arguments( 0 )
xsl.Load WScript.Arguments( 1 )
with out.CreateTextFile(WScript.Arguments( 2 ),true)
	.Write xml.documentElement.transformNode(xsl)
end with
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37210477
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон
Код: plaintext
with out.CreateTextFile(WScript.Arguments( 2 ),true, true)
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37210486
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гуй с дополнительной опцией.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37211323
junb1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если просто просмотреть результат работы, то можно и в IE. В xml прописать путь к xsl
Код: plaintext
1.
2.
3.
<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type="text/xsl" href="myxsl.xsl"?>
<root>
</root>
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37211480
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
junb1Если просто просмотреть результат работы, то можно и в IE.Можно в любом браузере, только для хрома версий 4+ требуется плагин xmltree.crx — почему-то у него пропала возможность обрабатывать xsl, что заставляет с…ть кирпичами разработчиков по всему миру и постить багреквесты на гугле, который их цинично игнорирует. Лучше всего FF — он выдает наиболее информативное описание ошибок.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37211560
Фотография Царь в голове
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyГуй работает, не работает результат трансформации...
Вот что я делаю. Исходный XML:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<?xml version="1.0" encoding="UTF-8"?>
<F908>
<P_COUNT> 3 </P_COUNT>
<LIST_G_DATA>
<G_DATA>
<NUM> 1 </NUM>
<NUM_VAL>. 1428 </NUM_VAL>
<STR_VAL>String (строка) №  1 </STR_VAL>
<DATE_VAL> 2011 - 04 -11T17: 56 : 46 . 000 + 04 : 00 </DATE_VAL>
</G_DATA>
<G_DATA>
<NUM> 2 </NUM>
<NUM_VAL>. 2857 </NUM_VAL>
<STR_VAL>String (строка) №  2 </STR_VAL>
<DATE_VAL> 2011 - 04 -11T22: 44 : 46 . 000 + 04 : 00 </DATE_VAL>
</G_DATA>
<G_DATA>
<NUM> 3 </NUM>
<NUM_VAL>. 4285 </NUM_VAL>
<STR_VAL>String (строка) №  3 </STR_VAL>
<DATE_VAL> 2011 - 04 -12T03: 32 : 46 . 000 + 04 : 00 </DATE_VAL>
</G_DATA>
</LIST_G_DATA>
</F908>
Преобразование:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <html><head><title>Test page ( 908 )</title></head>
    <style>
      table {border-collapse: collapse;}
      td {border: 1px solid black;
          padding: 7px;
         }
    </style>
    <body>
      <table>
        <xsl:for-each select="/F908/LIST_G_DATA/G_DATA">
          <tr><td><xsl:value-of select="NUM"/></td>
              <td><xsl:value-of select="NUM_VAL"/></td>
              <td><xsl:value-of select="STR_VAL"/></td>
              <td><xsl:value-of select="DATE_VAL"/></td>
          </tr>
        </xsl:for-each>
      </table>
    </body>
    </html>
  </xsl:template>
</xsl:stylesheet>
Скрипт от Antonariy дает вот что (разбил на строки я сам для удобства):
Код: plaintext
1.
2.
3.
<?xml version="1.0" encoding="UTF-16"?>
 31 .1428String (строка) №  12011 - 04 -11T17: 56 : 46 . 000 + 04 : 00 
 2 .2857String (строка) №  22011 - 04 -11T22: 44 : 46 . 000 + 04 : 00 
 3 .4285String (строка) №  32011 - 04 -12T03: 32 : 46 . 000 + 04 : 00 
Программка msxsl.exe дает вот что:
Код: plaintext
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.
<html><head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-16">
<title>Test page ( 908 )</title></head>
<style>
      table {border-collapse: collapse;}
      td {border: 1px solid black;
          padding: 7px;
         }
    </style>
<body>
<table>
<tr><td> 1 </td>
<td>. 1428 </td>
<td>String (строка) №  1 </td>
<td> 2011 - 04 -11T17: 56 : 46 . 000 + 04 : 00 </td>
</tr>
<tr><td> 2 </td>
<td>. 2857 </td>
<td>String (строка) №  2 </td>
<td> 2011 - 04 -11T22: 44 : 46 . 000 + 04 : 00 </td>
</tr>
<tr><td> 3 </td>
<td>. 4285 </td>
<td>String (строка) №  3 </td>
<td> 2011 - 04 -12T03: 32 : 46 . 000 + 04 : 00 </td>
</tr>
</table>
</body>
</html>
Кто из них прав?
Меня устраивает последний вариант.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37211598
junb1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробуй в xsl прописать <xsl:output method="html" encoding="UTF-8"/> должно выдать два одинаковых результата
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37211749
Фотография Царь в голове
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
junb1попробуй в xsl прописать <xsl:output method="html" encoding="UTF-8"/> должно выдать два одинаковых результата

Мне HTML не нужен. Это я так, для примера.
Программка msxsl.exe , кстати, тоже самовольничает. Этого я не заказывал:
Код: plaintext
<META http-equiv="Content-Type" content="text/html; charset=UTF-16">
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37211757
junb1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Царь в голове,
судя по xsl ты таки хочешь получить html. или я не прав :) так что лучше в xsl указывать что тебе надо на выходе
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37211760
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Царь в головеПрограммка msxsl.exe , кстати, тоже самовольничает. Этого я не заказывал:
Код: plaintext
<META http-equiv="Content-Type" content="text/html; charset=UTF-16">
А внимательнее посмотреть?
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37211803
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregЦарь в головеПрограммка msxsl.exe , кстати, тоже самовольничает. Этого я не заказывал:
Код: plaintext
<META http-equiv="Content-Type" content="text/html; charset=UTF-16">
А внимательнее посмотреть?Извиняюсь, это я не туда посмотрел.
Короче, по спецификации 16.2 HTML Output Method , если есть head добавляется meta.
Поставь метод xml - самовольничать не будет.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37211837
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Царь в головеКто из них прав?
Меня устраивает последний вариант.Правы по сути оба, но каждый по-своему. Нужно либо экранировать text() (не могу вспомнить как), либо match="F908" либо match="/*".
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37211857
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЦарь в головеКто из них прав?
Меня устраивает последний вариант.Правы по сути оба, но каждый по-своему. Нужно либо экранировать text() (не могу вспомнить как), либо match="F908" либо match="/*".Не могут быть два правильных ответа на одну задачу. Ошибка по-любому у тя в проге.
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Программа для применения xslt к xml
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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