Я сделал регулярное выражение для разделения определенной строки во время преобразования XML с использованием XSLT 2.0:
(@VAL)((.+?)(?=@VAL|$))
Это регулярное выражение применяется к некоторым строкам, которые имеют ту же форму, что и ниже:
@VAL@TEST1@1111@'Ceci est un texte'@VAL@TEST2@2222@'This is a text'@VAL@TEST3@3333@'Encore du texte'
Он извлекает все, что начинается с @VAL, до следующего @VAL (см. здесь объяснения о конструкция ?=). Итак, для этого примера результат регулярного выражения предоставляет следующие три строки:
- @VAL@TEST1@1111@'Ceci est un texte'
- @VAL@TEST2@2222@'Это текст'
- @VAL@TEST3@3333@'Encore du texte'
К сожалению, даже если он хорошо работает с этим онлайн-тестером регулярных выражений, при выполнении преобразования возникает следующая ошибка:
XTDE1140: Ошибка в регулярном выражении: net.sf.saxon.trans.DynamicError: Ошибка в символе 11 в регулярном выражении "(@VAL)(.+?(?=@VAL|$))": ожидается ()) Не удалось скомпилировать таблицу стилей. Обнаружена 1 ошибка
Так в чем проблема с этим регулярным выражением? Я не понимаю, почему закрывающая скобка ожидается на символе 11.
Любая помощь приветствуется.
PS: я использую процессор saxon8 XSLT.