Как уже отмечали другие, добавление значения по умолчанию к глобальной переменной, определенной в импортированной таблице стилей, не может быть выполнено с использованием того же имени переменной . Это связано с тем, что переменная с таким именем, определенная в текущей таблице стилей xslt, имеет более высокий приоритет, чем переменная в импортированной таблице стилей, и будет использоваться только первая (вы не можете получить доступ к переменной с одинаковым именем в таблице стилей с более низким приоритетом).
Вот как можно добавить значение по умолчанию :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- -->
<xsl:import href="other.xsl"/>
<!-- -->
<xsl:variable name="vMyEmail" select=
"concat(substring('bar@foo.com', 1 div not($vEmail)), $vEmail)"
/>
<!-- -->
<xsl:template match="/">
<xsl:value-of select="$vMyEmail"/>
</xsl:template>
</xsl:stylesheet>
Обратите внимание , что глобальная переменная $vMyEmail
определена таким образом, что она имеет значение переменной $vEmail
(определено в импортированная таблица стилей), если это строка длиной не менее 1 или требуемое значение по умолчанию - в противном случае.
Используя эту технику, каждый будет использовать так определенный $vMyEmail
в любом месте после его определения. Переменная $vEmail
из импортированной таблицы стилей вообще не будет использоваться напрямую .