Я что-то преобразовываю с помощью xslt, пытаюсь использовать функцию xalan document-location
, если и когда она доступна, и избегаю ее в противном случае (переносимо).Пример кода:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:choose>
<xsl:when test="function-available('document-location')">
<xsl:message>YES document-location
</xsl:message>
<xsl:message><xsl:value-of select="document-location()"/></xsl:message>
</xsl:when>
<xsl:otherwise>
<xsl:message>NO document-location
</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:transform>
Саксонские отчеты
SAXON 6.5.5 from Michael Kay
Java version 1.7.0_151
Error at xsl:value-of on line 8 of file:minisax.xsl:
Error in expression document-location(): Unknown system function: document-location
Transformation failed: Failed to compile stylesheet. 1 error detected.
, хотя функция доступна для проверки перед попыткой ее использования.Кажется, он пытается использовать его до того, как «контроль» достигнет этой точки.
Он корректно работает с xalanj (ну, это легко), но также с xsltproc.
Как я могу заставить эту работу работать?
Edit / Backgroud
Это саксонская версия, поставляемая с моей оценкой Renderx XEP, которая затрудняет написание переносимых таблиц стилей для работы из коробки.Я понимаю, что это не актуальная проблема саксонского языка из-за древней версии.