powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Программа для применения xslt к xml
38 сообщений из 38, показаны все 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
Программа для применения xslt к xml
    #37212194
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregAntonariyпропущено...
Правы по сути оба, но каждый по-своему. Нужно либо экранировать text() (не могу вспомнить как), либо match="F908" либо match="/*".Не могут быть два правильных ответа на одну задачу. Ошибка по-любому у тя в проге.Суть проги в этой строчке:
Код: plaintext
xml.documentElement.transformNode(xsl)
Найди ошибку.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37212214
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Я как-то мелкомягким больше доверяю. А куда суть - это не ко мне
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37212239
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это и есть мелкомягкий объект и его метод — смотри скрипт. За что купил за то продал, никакой отсебятины.
Возможно msxsl.exe использует IXSLProcessor и в этом есть какая-то разница. Попробую.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37212266
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

проверять не хочется - попробуй использовать msxml другой версии. Кажется 3 и ниже использует XSLpattern по-умолчанию, вместо XPath.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37212354
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пространства имен MSXML3 не существует. Все версии с 2.6 по 6.0 используют MSXML2, а CreateObject создает объект последней имеющейся на компе версии. Жестко привязаться к какой-то конкретной версии не могу, ее просто может не быть в системе.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37212390
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37212507
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, поимею ввиду.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37212817
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregAntonariy,

SelectionLanguage Property Ничего не изменилось ни от XSLPattern ни от IXSLProcessor ни от их различных комбинаций.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37212867
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последняя версия гуя.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37212877
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Вот, нашел - валялось в компе с давних пор (проверил - работает, единственно - надо метод xml поставить, для html надо,
видимо, проверку отключить)
Код: 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.
Dim xslt, xslDoc, xmlDoc, xmlOut, xslProc 
dim s 
Set xslt = CreateObject("MSXML2.XSLTemplate")
Set xslDoc = CreateObject("MSXML2.FreeThreadedDOMDocument")
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
Set xmlOut = CreateObject("MSXML2.DOMDocument")
xslDoc.async = False
xslDoc.Load "test_rules.xsl"
If (xslDoc.parseError.errorCode <>  0 ) Then
   Dim myErr
   Set myErr = xslDoc.parseError
   MsgBox "Stylesheet error: " + myErr.reason
Else
   Set xslt.StyleSheet = xslDoc
   xmlDoc.async = False
   xmlDoc.Load "test_src.xml"
   If (xmlDoc.parseError.errorCode <>  0 ) Then
      Set myErr = xmlDoc.parseError
      MsgBox "XML document error: " + myErr.reason
   Else
      Set xslProc = xslt.createProcessor()
      xslProc.input = xmlDoc
      xslProc.output = xmlOut
      xslProc.transform
      xmlOut.save("q3.xml")
   End If
End If
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37213093
Flok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XmlNotePad пробовали? как раз для ваших целей подойдет.
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37213739
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refreg,

Очень капризный код. Чуть шаг в сторону — на строке Set xslProc = xslt.createProcessor() выдает ошибку "требуемое свойство не имеет допустимого значения". Но в итоге заработало как msxsl.exe.

refregединственно - надо метод xml поставитьЭто можно поставить не только через xsl:output, но и через объектную модель?
...
Рейтинг: 0 / 0
Программа для применения xslt к xml
    #37213816
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последняя версия гуя
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Программа для применения xslt к xml
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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