XSLT 2.0: регулярное выражение в Saxon против XMLSpy

У меня XMLSpy жалуется на это:

regex="url\(\"\.\./([^\"]*)\"\)" (внешние кавычки двойные)

Это говорит о том, что первая обратная косая черта в \.\. является неожиданной.

Поэтому я меняю его на:

regex='url\(\"\.\./([^\"]*)\"\)' (одиночные внешние отметки)

И все хорошо.

но тут Саксон жалуется: XTDE1140: char 7 in regular expression: Escape character '"' not allowed. Так что это первое ".

Судя по всему, Альтова и Саксоника не на одной странице. Какие-либо предложения?

Кстати: речь идет о строке типа url("../Fonts/bodoni.ttf"). Мне нужно убрать из него ../.


person Erik    schedule 31.05.2014    source источник


Ответы (2)


Вам не нужно экранировать символы двойных кавычек в регулярном выражении:

regex='url\("\.\./([^"]*)"\)'

(с одинарными кавычками вокруг значения атрибута) будет работать нормально.

Единственное ограничение, о котором вам нужно знать, - это ограничение XML, в котором вы не можете использовать символы двойных кавычек внутри атрибутов двойных кавычек или символы одиночных кавычек внутри атрибутов одиночных кавычек, если они не экранированы как " или ' соответственно (или эквивалентный числовой символ использованная литература).

person Ian Roberts    schedule 31.05.2014

Ой, я нашел это: я должен использовать ":

regex="url\("\.\./([^"]*)"\)"

person Erik    schedule 31.05.2014