2013-09-06 5 views
1

Я хотел бы заменить. \ S + \ ш + 'последовательность с буквальным
XSLT побега угловые скобки

Вот что у меня есть:

<xsl:value-of select="replace($fdesc,'[.][ ]+\w+','<br/>')" /> 

Вот что я получаю как ошибка :

Error on line 33 column 57 of file:/Users/seth/Documents/EmausCCB/XSL/form_list.xsl: SXXP0003: Error reported by XML parser: The value of attribute "select" associated with an element type "null" must not contain the '<' character. Failed to compile stylesheet. 1 error detected.

Если я:

<xsl:value-of select="replace($fdesc,'[.][ ]+\w+','br')" /> 

я получить ожидаемые результаты

ответ

1

Ну, если вы хотите создать br результирующий элемент, который вы не можете использовать функцию replace как она возвращает строку, а не элементы.

Используйте, например, analyze-string, т.е.

<xsl:analyze-string select="$fesc" regex="[.][ ]+\w+"> 
    <xsl:matching-substring> 
    <br/> 
    </xsl:matching-substring> 
    <xsl:non-matching-substring> 
    <xsl:value-of select="."/> 
    </xsl:non-matching-substring> 
</xsl:analyze-string> 

Что касается ошибки XML разбора, правильный синтаксис будет <xsl:value-of select="replace($fdesc,'[.][ ]+\w+','&lt;br/&gt;')" />, но все равно возвращает строку, а не элемент узла.

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