Может ли XML / XSLT substring-before принимать более одной строки соответствия в качестве второго аргумента? - PullRequest
3 голосов
/ 27 сентября 2011

XML / XSLT. Новый вопрос. Я прошу прощения за это. Я получил кусок кода и попросил «взглянуть на это», и я не особенно знаком с XSLT: (

У меня есть файл .xsl, который преобразует фрагмент текста истории и вычеркивает первое предложение, используя строку:

<xsl:value-of select="substring-before(story,'.')" />

Работает нормально, в основном. Проблема заключается в следующем: если первое предложение заканчивается знаком вопроса или восклицательным знаком, я получаю два предложения.

Есть ли способ сделать что-то вроде:

<xsl:value-of select="substring-before(story,'.' or '!' or '?')" />

Или есть способ использования регулярных выражений, например

/^(.*?)[.?!]\s/

... чтобы извлечь только самое первое предложение?

Или я совершенно не в порядке и лучше жду, когда местный эксперт XSLT вернется? :)

1 Ответ

1 голос
/ 27 сентября 2011

Если ваш набор символов для пунктуации относительно ограничен, вы можете отобразить все это на один символ (например, точку), используя функцию перевода, а затем использовать подстроку перед. например,

<xsl:value-of select="substring-before(translate(story,'?!','..'),'.')" />

Edit: я должен сказать в ответ на ваш фактический вопрос, нет - вы не можете иметь логическое выражение в качестве второго аргумента в substring-before.

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