Исключите JavaScript из HTML с помощью XSLT - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь преобразовать отчет HTML в XML, но некоторые JavaScript-файлы в файле выдают ошибки из-за операторов с символом меньше чем (например, for(var i=0; i<els.length;i++)). Я подумал, что смогу исключить JavaScript с помощью следующего шаблона, который должен удалить все узлы сценария:

<xsl:template match="script"/>

Я предполагал, что процессор XSLT просто пропустит все узлы сценария, но все равно выдает те же ошибки. Я также попытался добавить это:

<xsl:template match="script/text()"/>

Не повезло. Если я вручную удаляю весь javascript из файла, мое преобразование работает, но это не практично, поскольку мне нужно создавать и запускать ежедневный автоматизированный процесс для этих файлов HTML, чтобы извлечь некоторые данные из таблиц HTML.

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Как правило, XSLT обрабатывает только правильно сформированный ввод XML: он не предназначен для обработки других форматов, таких как HTML.

Однако XSLT обычно принимает ввод от анализатора, который доставляет поток событий. это выглядит достаточно похоже на поток XML. Это позволяет использовать синтаксические анализаторы, такие как TagSoup и validator.nu, в качестве внешнего интерфейса для вашего процессора XSLT.

Saxon упаковывает это с помощью функции parse-html (), которая вызывает TagSoup для анализа ввода HTML и его поворота. в DOM-подобное дерево (фактически дерево XDM), которое он может обрабатывать, как если бы он пришел из XML.

validator.nu - более современный HTML-анализатор, чем TagSoup, но вам придется проделать немного больше работы для его интеграции.

0 голосов
/ 08 октября 2019

На вопрос ответил Мартин Хоннен в комментариях:

oxygenxml.com / doc / version / 18.1 / ug-editor / tasks /… предполагает наличие функции импорта HTML, поэтому попробуйте, поможет ли это. Конечно, есть отдельные приложения, такие как HTML Tidy, я думаю, что вы можете использовать его вне XSLT-обработки, чтобы сначала преобразовать ваш HTML в XHTML.

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