Как я могу применить xslt2.0 к любому html-файлу в ubuntu?

Как я могу применить xslt2.0 к любому html-файлу в ubuntu?

Я ищу то, что сделает эту работу:

wget -qO- "https://www.amazon.com/" | ????? | saxonb-xslt -o:output.xml -xsl:transform20.xsl -s:-

Он должен быть достаточно надежным для работы с HTML в дикой природе, например, https://www.nzz.ch/ http://www.spiegel.de/


transform20.xsl:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

1 ответ

Вопрос

Как я могу применить xslt2.0 к любому html-файлу в ubuntu?

Краткий ответ

Ты не можешь.

Длинный ответ

HTML не XML. XSLT применим к XML, но не к HTML. Неважно, на какой ОС вы работаете.

Если вы можете удостовериться, что данный HTML-файл на самом деле является X HTML, тогда он также действителен как XML и может быть обработан с использованием XSLT. Однако большая часть HTML - это не XHTML, а допустимые конструкции HTML, подобные следующим:

<html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  </head>
  <body>
    <p>This is content.<br>
       This is the second line.</p>
  </body>
</html>

... приведет к тому, что механизм XML или XSLT будет жаловаться, что это недопустимая разметка, и он не сможет обработаться.

Основная проблема заключается в том, что HTML позволяет открывать теги, которые не закрываются. В приведенном выше примере <meta> а также <br> теги не закрываются. Для процессора XML эти теги начинают конструкцию, которая никогда не заканчивается. Процессоры HTML имеют встроенные списки этих элементов, а процессоры XML - нет.

Обходной путь

Чтобы приведенный выше фрагмент HTML обрабатывался механизмом XML / XSLT, <meta> а также <br> теги должны иметь либо конечные теги, так как <meta></meta>или они должны быть самозакрывающимися, как <meta/>,

Вероятно, существуют инструменты для преобразования HTML в XHTML. Быстрый поиск Google поднимает некоторые. Возможно, вы сможете сначала запустить HTML-код, а затем обработать их с помощью XSLT.

Другие вопросы по тегам