У меня есть цепной сценарий преобразования XSLT 2.0 (с использованием saxon), например:- I1.xml является вводом для T1.xslt, таблицы стилей для построения T2.xslt- I2.xml является вводом для T2.xslt, таблицы стилей, которая будет выводить O1.xml
Я хотел бы иметь функцию xsl: (чтобы она была доступна в выражениях XPath), назовем ее my: f (dataNode, queryString), которая будет запрашивать dataNode с использованием предоставленного запроса, аналогичнониже:
<xsl:function name="my:f">
<xsl:param name="dataNode" as="item()*"/>
<xsl:param name="query" as="xsd:string"/>
<xsl:sequence select="$dataNode/$query"/>
</xsl:function>
my: f () хранится в отдельном файле и включается только в T2.my: f () изолирован в файле, потому что в зависимости от конфигурации он может вызвать функцию расширения для выполнения запроса.Вызов my: f () - это, конечно, «сборка» в T1 (где XPath queryString динамически объединяется), но на самом деле он вызывается только в T2.
Единственная проблема, которая у меня, похоже, возникает.Это способ передачи динамически созданной строки запроса из T1 в T2, а затем в my: f () в виде простой строки (поскольку фактический запрос будет выполняться my: f ()).
У кого-нибудь есть идеи (и в идеале некоторый код) о том, как к этому подойти?
С уважением