Очистка CDATA в xml через xslt - PullRequest
1 голос
/ 04 марта 2011

Я пытаюсь преобразовать RSS 2 из Wordpress в XHTML 1.0 Strict (используя cronjob и xsltproc);однако Wordpress вставляет img в CDATA в конце элемента summary.img имеет атрибут border, который недопустим в XHTML 1.0 Strict.Поскольку это CDATA, я предполагаю, что это означает, что я не могу сопоставить его с моим XSLT.Я могу с уверенностью сказать, что img всегда является последним, прежде чем CDATA заканчивается.Я бы предпочел убрать атрибут border attr и сохранить изображение, но я бы предпочел полностью избавиться от элемента, чем иметь недопустимую разметку.

Возможно ли сопоставление внутри CDATA с использованием XSLT, возможно, с использованиемстроковое выражение?Если так, то это правильный путь или есть лучшее решение?

Ответы [ 2 ]

3 голосов
/ 05 марта 2011

Помните, что означает CDATA: «символьные данные».Поместить что-то в CDATA означает: это может выглядеть как разметка, но я не хочу, чтобы вы воспринимали это как разметку.Так что, если эта вещь внутри CDATA выглядит как элемент img, CDATA есть, чтобы сказать вам, чтобы вас не обманули - это вообще не элемент.Сказав это, вы, конечно, можете обрабатывать текст так же, как обрабатываете любые другие символьные строки, включая передачу его в анализатор XML для преобразования в дерево узлов.

1 голос
/ 04 марта 2011

CDATA - это просто текстовый узел, вы можете сопоставить его с шаблоном text(). Затем вы можете использовать строковые функции для удаления border attr из текста.

...