Я скачал последний выпуск Schxslt 1.5.2 schxslt-1.5.2-xslt-only.zip
с https://github.com/schxslt/schxslt/releases/tag/v1.5.2 и запустите следующий пример программы Python, используя Python 3.7 и Saxon-C HE 1.2.1 в Windows:
import saxonc
with saxonc.PySaxonProcessor(license=False) as proc:
print("Test Saxon/C on Python")
print(proc.version)
xslt30_processor = proc.new_xslt30_processor()
xslt30_processor.set_cwd(".")
xslt30_processor.transform_to_file(source_file="price-xslt2.sch", stylesheet_file="../../../schxslt-1.5.2/2.0/pipeline-for-svrl.xsl", output_file="price-compiled-saxon-c.xsl")
xslt30_processor.transform_to_file(source_file="books.xml", stylesheet_file="price-compiled-saxon-c.xsl", output_file="saxon-c-report-books.xml")
Это работает нормально, и с первым вызовом transform_to_file
создается файл XSLT price-compiled-saxon-c.xsl
, который второй вызов transform_to_file
применяет к входному образцу и создает отчет о проверке как saxon-c-report-books.xml
.
Если вы хотите избежать промежуточного файла, то также работает следующее:
import saxonc
with saxonc.PySaxonProcessor(license=False) as proc:
print("Test Saxon/C on Python")
print(proc.version)
xslt30_processor = proc.new_xslt30_processor()
xslt30_processor.set_cwd(".")
compiled_schematron = xslt30_processor.transform_to_value(source_file="price-xslt2.sch", stylesheet_file="../../../schxslt-1.5.2/2.0/pipeline-for-svrl.xsl")
stylesheet_node = compiled_schematron.item_at(0).get_node_value()
xslt30_processor.compile_stylesheet(stylesheet_node = stylesheet_node)
xslt30_processor.transform_to_file(source_file="books.xml", output_file="saxon-c-report-3-books.xml")
Единственным неизвестным фактором является моя установка Saxon-C 1.2.1, я не могу сказать, идентична ли она последней версии, которую вы можете загрузить с Saxonica, так как ей уже год, и различные отчеты об ошибках на https://saxonica.plan.io/projects/saxon-c привели к некоторым исправлениям, которые я мог применить ; К сожалению, Saxonica до сих пор не выпустила новую версию со всеми исправлениями.
Если у вас возникнут проблемы с запуском Saxon-C из Python, я думаю, лучше открыть проблему или вопрос на их форуме поддержки со всеми минимальными, но полными подробностями, чтобы воспроизвести его, и я уверен, что они помогут вам рассказать вам, как чтобы встать и бежать.
person
Martin Honnen
schedule
04.12.2020