2009-10-02 4 views
0

У меня есть функция XSLT, которая принимает регулярное выражение в качестве параметра, но парсер XSLT ему не нравится.Регулярное выражение в XSLT

Вот код:

<xsl:value-of select='ns:RegexReplace($variable, "", "style=\"\w+\:\s\w+;\"")' disable-output-escaping='yes' /> 

Я нашел это: http://www.xml.com/pub/a/2003/06/04/tr.html < - но он использует то, что я и, кажется, работает (для них). У меня просто есть мусорный парсер?

Есть ли способ сделать это? Или способ заставить элемент игнорировать встроенный стиль с помощью трюка CSS?

+1

Из вашего образца CCODE это выглядит так, как будто вы используете расширение XSLT. Что это за расширение? И для решения это помогает узнать, какая платформа у вас есть, поскольку для регулярных выражений доступны расширения для платформы. –

+0

@divo - Расширение XSLT не имеет значения, поскольку я просто говорю о передаче в параметре. К сожалению, я не знаю детали парсера. – tgandrews

+0

Возможно, вам нужно заменить кавычки внутри вашего выражения на объект XML (") –

ответ

2

Кажется, вы пытаетесь включить кавычки в литеральном литерале XPath с разделителями с цитатами, экранируя их обратным слэшем. Это не работает.

В XPath 1.0 (XSLT 1) нет хорошего способа сделать это. Вы, возможно, придется прибегнуть к хитрости, как определить переменную, которая содержит один символ кавычек и с помощью функции concat создать строку:

<xsl:variable name='quot' select="'&quot;'"/> 
<xsl:value-of select='concat("a string with a quote ", $quot, " character")'/> 

В XPath 2.0 (XSLT 2), вы можете избежать цитату с другой цитатой:

<xsl:value-of select='"a string with a quote "" character"'/> 
0

Мне кажется, что вы можете удалить атрибуты style. Если это так, то замена строки не поможет вам.

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

<xsl:template match="@style"/> 
+0

К сожалению, есть функция, которая возвращает встроенный стиль как текст и, следовательно, не может быть удалена таким образом. – tgandrews

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