Проверьте, существует ли параметр в XSLT перед его использованием
Я использую XPATH, чтобы определить, существует ли мой параметр $test. Я использую конструктор XPATH в ALtova Stylevision и подумал, что могу использовать что-то вродеexists ( $blah)
или же exists ( string($blah) )
Но это заканчивается
" Undefined variable in expression test="exists( string( $blah) )""
Проблема в том, что иногда параметр будет существовать, а иногда нет. Я не хочу использовать жесткий код в пустом параметре!
Можно ли как-то сказать "Проверьте, существует ли параметр XXXX", прежде чем использовать его? Это печально, потому что я знаю, как это сделать практически на любом другом языке программирования.
Определен параметр:
<xsl:param name="blah"> some text </xsl:param>
Эти параметры считываются из отдельного файла "parameters.xslt". Этот файл может существовать или не существовать в зависимости от сценария. Мне нужно проверить, что парам действительно существует, прежде чем я попытаюсь его использовать.
2 ответа
Если вы объявили параметр, он существует. То, что вы хотите знать, имеет ли это значение?
<xsl:choose>
<xsl:when test="not($blah)">$blah wasn’t passed in</xsl:when>
<xsl:otherwise>$blah was passed in</xsl:otherwise>
</xsl:choose>
По сути, если вы пишете XSLT, вы должны знать, какие переменные были объявлены. Вы пытаетесь работать с какой-то моделью разработки, в которой люди, пишущие разные модули таблицы стилей, не имеют полного знания кода друг друга, а XSLT не предназначен для работы с этой моделью.
XSLT вряд ли уникален в этом: вы не найдете в методе Java ничего, что позволяло бы автору метода спрашивать "сколько аргументов было предоставлено вызывающей стороной?". Если недостаточно аргументов, код просто не скомпилируется.