Я хочу динамически построить соответствие в шаблоне xslt.Я использую xls fo и apache fop и saxon9he.В лучшем случае я хочу передать параметр из Java, но сначала я пытаюсь установить это в xslt.
Когда я создаю пример переменной, как это:
<xsl:variable name="testPath" select="/abc:Files/def:Description" />
также работает правильно, если я пытаюсь использовать этов apply-templates:
<xsl:apply-templates select="$testPath/qwe:Test"/>
Но я хочу динамически установить переменную testPath.Я пытаюсь использовать выбор тега:
<xsl:variable name="testPath">
<xsl:choose>
<xsl:when test="$versionNo = '2'">
<xsl:value-of select="/abc:Files/def:Description" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/abc:Files/def:Names" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
Но этот подход не работает, и когда я пытаюсь использовать эту переменную:
<xsl:apply-templates select="$testPath/qwe:Test"/>
Я получаю эту ошибку:
Ошибка оценки ((attr {table-layout = ...}, ...)) в строке 82 столбца 21 pdf_gen.xsl: SXCH0003: org.apache.fop.fo.ValidationException: "fo: table-body"отсутствует дочерние элементы.Требуемая модель содержимого: маркер * (строка таблицы + | ячейка таблицы +) (см. Позицию 82:21):
файл: / C: / Users / SuperUser / рабочая область / проект / xls-editor / target / classes / pdf /xsl / pdf_gen.xsl: 82: 21: в fo: table-body отсутствуют дочерние элементы.Требуемая модель содержимого: маркер * (таблица-строка + | таблица-ячейка +) (см. Позицию 82:21)
В лучшем случае я хочу передать переменную $ testPath из Java в качестве параметра, пример:
transformer.setParameter("testPath ", "/abc:Files/def:Description");
и использовать в xslt
<xsl:param name="testPath "/>
и применять в шаблонах:
<xsl:apply-templates select="$testPath/qwe:Test"/>
, но я получаю следующую ошибку:
Типоценка ошибки ($ testPath) в xsl: apply-templates / @ select в строке 74 столбца 60 pdf_gen.xsl: XPTY0019: Обязательным типом элемента первого операнда '/' является node ();предоставленное значение
u "/ abc: Files / def: Description" является атомарным значением
Почему не работает какое-либо решение, как его достичь?