2015-04-22 4 views
0

В моей таблице стилей XSLT я хочу присвоить объект документа XML глобальной переменной. Имя XML-документа меняется так, что назначение должно быть условным. Имена разных XML-документов выглядят следующим образом: screenlabels0.xml, screenlabels1.xml и т. Д. Число в этих именах равно значению параметра ui_language, переданного в таблицу стилей. До тех пор, как я жесткий код уступки следующим образом, это работает отлично:XSLT условное присвоение переменной документа XML

<xsl:variable name="screenlabels" select="document('..\xslt\screenlabels1.xml')"/> 

Позже в таблице стилей я могу обратиться узлами из этого объекта через Xpath начиная с $ screenlabels (нет необходимости применять набор узлов к нему). Любая попытка условно разрешить это пока не удалась. Сначала я заметил, что следующий код, по-видимому, не совпадает с одной строки кода выше:

<xsl:variable name="screenlabels"> 
    <xsl:value-of select="document('..\xslt\screenlabels1.xml')"/> 
    </xsl:variable> 

Кажется, я не могу решить эту переменную таким же образом, ни после применения набора узлов к нему. Изменение значения для копий также не помогает. Условный вариант выше, используя конструкцию выбора, не работает, конечно. Мой альтернативный подход просто использовать параметр ui_language в однострочном присваивании, как показано ниже, тоже не работает. Кто-нибудь знает, как это сделать, или я был неаккуратным в своем тестировании? Ваша помощь будет очень признательна.

<xsl:variable name="screenlabels" select="document('..\xslt\screenlabels{$ui_language}.xml')"/> 

ответ

3

Вы пытались concat?

<xsl:variable name="screenlabels" 
    select="document(concat('..\xslt\screenlabels',$ui_language,'.xml'))"/> 
+0

Отлично! Ваше решение работает как шарм. Огромное спасибо! – Erik

Смежные вопросы