Регулярное выражение для удаления слова из XSLT - PullRequest
2 голосов
/ 21 января 2011

Мне нужна помощь в написании регулярных выражений для удаления слова с помощью XSLT.

Мне нужно изменить вывод "detailpath" моего XML-файла с:

/ События / 262/26207

... просто:

262/26207

XSL:

<xsl:value-of select="detailpath"/>

Как мне удалить "/ events /"?

Заранее спасибо.

Ответы [ 4 ]

3 голосов
/ 21 января 2011

Шаблон регулярного выражения будет просто '/events/'

Вы можете использовать его в вызове функции XSLT 2.0 replace () :

<xsl:value-of select="replace(detailpath,'/events/','')"/>

функция возвращает строку xs: получается путем замены каждого неперекрывающаяся подстрока $ input которая соответствует заданному шаблону $ с возникновение замены $ строка.

При желании вы можете указать flags

fn:replace( $input     as xs:string?,
            $pattern   as xs:string,
            $replacement   as xs:string) as xs:string

fn:replace( $input     as xs:string?,
            $pattern   as xs:string,
            $replacement   as xs:string,
            $flags     as xs:string) as xs:string
2 голосов
/ 22 января 2011

Обратите внимание, что для вашего примера (начальная строка) вы также можете использовать это выражение XPath 1.0:

substring(detailpath, 9 * starts-with(detailpath,'/events/'))
0 голосов
/ 22 января 2011

Другое решение XPath 1.0 (при условии замены только одного экземпляра строки), которое будет работать независимо от того, где в строке находится фрагмент текста:

<xsl:value-of select="concat(substring-before(detailpath,'/events/'), 
                             substring-after(detailpath,'/events/'))" />
0 голосов
/ 21 января 2011

эхо / события / 262/26207 | sed -e 's | / events / || g'

Это работает в bash на Solaris и, насколько мне известно, должно работать на PHP, Javascript и Perl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...