Feature: s9api-basierte SaxonWorkerPool-Variante für XSLT 2.0/3.0
Die JAXP-basierte SaxonWorkerPool-Implementierung ist nur für XSLT 1.0 vollständig spezifiziert und kann bei XSLT 2.0/3.0 zu fehlerhaften Ausgaben führen. Änderungen: - Neue SaxonWorkerPoolS9Api-Klasse mit Saxon s9api für XSLT 2.0/3.0 - XsltVersion-Enum in conf.py (XSLT_1_0, XSLT_2_0_3_0) - ComboBox in Performance-Einstellungen zur XSLT-Version-Auswahl - MainWindow wählt automatisch richtige Worker-Pool-Variante - Verbesserte Classpath-Behandlung und Fehlerbehandlung Standard-Einstellung: XSLT 2.0/3.0 (s9api) - empfohlen für moderne Stylesheets Fallback: XSLT 1.0 (JAXP) - verfügbar für Legacy-Stylesheets 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -15,17 +15,17 @@ from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
|
||||
QFont, QFontDatabase, QGradient, QIcon,
|
||||
QImage, QKeySequence, QLinearGradient, QPainter,
|
||||
QPalette, QPixmap, QRadialGradient, QTransform)
|
||||
from PySide6.QtWidgets import (QAbstractButton, QApplication, QCheckBox, QDialog,
|
||||
QDialogButtonBox, QFrame, QGroupBox, QHBoxLayout,
|
||||
QHeaderView, QLabel, QPushButton, QSizePolicy,
|
||||
QSpacerItem, QSpinBox, QTabWidget, QTableWidget,
|
||||
QTableWidgetItem, QVBoxLayout, QWidget)
|
||||
from PySide6.QtWidgets import (QAbstractButton, QApplication, QCheckBox, QComboBox,
|
||||
QDialog, QDialogButtonBox, QFrame, QGroupBox,
|
||||
QHBoxLayout, QHeaderView, QLabel, QPushButton,
|
||||
QSizePolicy, QSpacerItem, QSpinBox, QTabWidget,
|
||||
QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget)
|
||||
|
||||
class Ui_Dialog(object):
|
||||
def setupUi(self, Dialog):
|
||||
if not Dialog.objectName():
|
||||
Dialog.setObjectName(u"Dialog")
|
||||
Dialog.resize(833, 446)
|
||||
Dialog.resize(833, 526)
|
||||
self.verticalLayout = QVBoxLayout(Dialog)
|
||||
self.verticalLayout.setObjectName(u"verticalLayout")
|
||||
self.tabSettings = QTabWidget(Dialog)
|
||||
@@ -336,6 +336,27 @@ class Ui_Dialog(object):
|
||||
|
||||
self.verticalLayout_11.addWidget(self.checkBoxUseSaxonPool)
|
||||
|
||||
self.horizontalLayoutXsltVersion = QHBoxLayout()
|
||||
self.horizontalLayoutXsltVersion.setObjectName(u"horizontalLayoutXsltVersion")
|
||||
self.labelXsltVersion = QLabel(self.groupBoxSaxonPool)
|
||||
self.labelXsltVersion.setObjectName(u"labelXsltVersion")
|
||||
|
||||
self.horizontalLayoutXsltVersion.addWidget(self.labelXsltVersion)
|
||||
|
||||
self.comboBoxXsltVersion = QComboBox(self.groupBoxSaxonPool)
|
||||
self.comboBoxXsltVersion.addItem("")
|
||||
self.comboBoxXsltVersion.addItem("")
|
||||
self.comboBoxXsltVersion.setObjectName(u"comboBoxXsltVersion")
|
||||
|
||||
self.horizontalLayoutXsltVersion.addWidget(self.comboBoxXsltVersion)
|
||||
|
||||
self.horizontalSpacerXsltVersion = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||
|
||||
self.horizontalLayoutXsltVersion.addItem(self.horizontalSpacerXsltVersion)
|
||||
|
||||
|
||||
self.verticalLayout_11.addLayout(self.horizontalLayoutXsltVersion)
|
||||
|
||||
self.labelSaxonPoolInfo = QLabel(self.groupBoxSaxonPool)
|
||||
self.labelSaxonPoolInfo.setObjectName(u"labelSaxonPoolInfo")
|
||||
self.labelSaxonPoolInfo.setWordWrap(True)
|
||||
@@ -363,6 +384,10 @@ class Ui_Dialog(object):
|
||||
|
||||
self.verticalLayout_9.addWidget(self.groupBoxFopPool)
|
||||
|
||||
self.verticalSpacer = QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
||||
|
||||
self.verticalLayout_9.addItem(self.verticalSpacer)
|
||||
|
||||
self.label = QLabel(self.tabPerformance)
|
||||
self.label.setObjectName(u"label")
|
||||
self.label.setMouseTracking(True)
|
||||
@@ -392,7 +417,7 @@ class Ui_Dialog(object):
|
||||
self.buttonBox.accepted.connect(Dialog.accept)
|
||||
self.buttonBox.rejected.connect(Dialog.reject)
|
||||
|
||||
self.tabSettings.setCurrentIndex(0)
|
||||
self.tabSettings.setCurrentIndex(7)
|
||||
|
||||
|
||||
QMetaObject.connectSlotsByName(Dialog)
|
||||
@@ -438,6 +463,21 @@ class Ui_Dialog(object):
|
||||
"\u2022 Sie die Funktion testen m\u00f6chten", None))
|
||||
#endif // QT_CONFIG(tooltip)
|
||||
self.checkBoxUseSaxonPool.setText(QCoreApplication.translate("Dialog", u"SaxonWorkerPool verwenden (empfohlen)", None))
|
||||
self.labelXsltVersion.setText(QCoreApplication.translate("Dialog", u"XSLT-Version:", None))
|
||||
self.comboBoxXsltVersion.setItemText(0, QCoreApplication.translate("Dialog", u"XSLT 1.0 (JAXP)", None))
|
||||
self.comboBoxXsltVersion.setItemText(1, QCoreApplication.translate("Dialog", u"XSLT 2.0/3.0 (s9api) - Empfohlen", None))
|
||||
|
||||
#if QT_CONFIG(tooltip)
|
||||
self.comboBoxXsltVersion.setToolTip(QCoreApplication.translate("Dialog", u"W\u00e4hlen Sie die XSLT-Version f\u00fcr Saxon-Transformationen:\n"
|
||||
"\n"
|
||||
"XSLT 1.0 (JAXP): Verwendet die JAXP Transformer API\n"
|
||||
"\u2022 Nur f\u00fcr XSLT 1.0 vollst\u00e4ndig spezifiziert\n"
|
||||
"\u2022 Kann bei XSLT 2.0/3.0 zu fehlerhaften Ausgaben f\u00fchren\n"
|
||||
"\n"
|
||||
"XSLT 2.0/3.0 (s9api): Verwendet die Saxon s9api\n"
|
||||
"\u2022 Vollst\u00e4ndige Unterst\u00fctzung f\u00fcr XSLT 2.0 und 3.0\n"
|
||||
"\u2022 Empfohlen f\u00fcr moderne XSLT-Stylesheets", None))
|
||||
#endif // QT_CONFIG(tooltip)
|
||||
self.labelSaxonPoolInfo.setText(QCoreApplication.translate("Dialog", u"<i>Hinweis: SaxonWorkerPool ben\u00f6tigt ein JDK (Java Development Kit).<br>Mit JRE allein werden Transformationen im Fallback-Modus ausgef\u00fchrt.</i>", None))
|
||||
self.groupBoxFopPool.setTitle(QCoreApplication.translate("Dialog", u"FopWorkerPool Einstellungen", None))
|
||||
#if QT_CONFIG(tooltip)
|
||||
|
||||
Reference in New Issue
Block a user