2015-09-30 3 views
0

Поведение переменной здесь не работает должным образом. У меня есть переменная с именем fonttag со значением, которое представляет собой строку HTML с начальными и конечными тегами и разделителем.Как использовать значение переменной

<xsl:variable name="fonttag"> 
    <font face="ANGSANA NEW" size="12">|</font> 
</xsl:variable> 

Когда я пытаюсь использовать его, чтобы получить часть строки обратно, я получаю пустую строку:

<xsl:value-of select="substring-before($fonttag ,'|')"/> 

Где я ожидал подстроку:

<font face="ANGSANA NEW" size="12"> 

Аналогичным образом

<xsl:value-of select="$fonttag"/> 

ничего не возвращает, хотя

<xsl:copy-of select="$fonttag"/> 

возвращение всей строки. Есть ли другой способ добиться ожидаемого результата?

наследованного вопрос: Можно ли гнездо Xsl выбора тегов, как это (не могу заставить его работать либо)

<xsl:copy-of select="substring-before(<xsl:copy-of select="$fonttag"/>,'|')"/> 

?

спасибо

+0

Вы не устанавливаете строковое значение для своей переменной ... это узел в этом случае, поэтому 'substring()' не будет работать и 'copy-of' делает. – potame

ответ

0

Я боюсь, что вы неправильно поняли, как работает XSLT. Ваша переменная не содержит строку "<font face="ANGSANA NEW" size="12">|</font>". Он содержит элемент font с двумя атрибутами и строковым значением "|". Инструкция xsl:value-of, а также любая строковая функция, такая как substring(), адресовать только string value данного выражения.

+0

Хорошо, так что мне нужно будет добавить тег как текстовую строку. Или был бы более естественный способ XLST добиться того же, что и у – Christian

+0

, с этой информацией я получил его для работы, объявив переменную с помощью < font face = "ARIAL "size =" 12 "> | </font> вместо этого спасибо – Christian

+0

@Christian Вы не сказали нам, что эта вещь, которую вы пытаетесь достичь. Но я уверен, что есть ** намного лучше, чем работать с экранированными строками. –

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