xsltproc html документы
Я пытаюсь почистить немного htmls. Я преобразовал их в HTML с Tidy
$ tidy -asxml -i -w 150 -o o.xml index.html
В результате получается xhtml с именованными объектами. При попытке xsltproc на этих xhtmls я продолжаю получать ошибки.
$ xsltproc --novalid -o out.htm t.xsl o.xml
o.xml:873: parser error : Entity 'mdash' not defined
resources to storing data and using permissions — as needed.</
^
o.xml:914: parser error : Entity 'uarr' not defined
</div><a href="index.html#top" style="float:right">↑ Go to top</a>
^
o.xml:924: parser error : Entity 'nbsp' not defined
Android 3.2 r1 - 27 Jul 2011 12:18
Если я добавлю --html в xsltproc, он будет жаловаться на тег, имеющий атрибуты name и id с тем же именем (что допустимо)
$ xsltproc --novalid --html -o out.htm t.xsl o.xml o.xml:845: element a: validity error : ID top already defined
<a name="top" id="top"></a>
^
Xslt прост:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//*[@id=side-nav]"/>
</xsl:stylesheet>
Почему не работает --html? Почему это жалуется? Или я должен забыть это и исправить сущности?
2 ответа
Я предполагаю, что неясный вопрос заключается в следующем: я знаю, как избежать ошибок "Entity 'XXX' notfined" при запуске xsltproc (добавить --html
). Но как мне избавиться от "ID YYY уже определено"?
Последние сборки Tidy имеют опцию " якорь как имя". Вы можете установить его на "нет", чтобы удалить ненужные name
атрибуты:
Эта опция управляет удалением или добавлением атрибута name в элементах, где он может служить якорем. Если установлено значение "да", атрибут имени, если он еще не существует, добавляется к существующему атрибуту идентификатора, если DTD это позволяет. Если установлено значение "нет", любой существующий атрибут имени удаляется, если атрибут id существует или был добавлен.
Я сделал другой путь - заставил tidy создавать числовые объекты, а не именовать с опцией -n.
$ tidy -asxml -i -n -w 150 -o o.xml index.xml
Теперь я могу удалить опцию --html, и она работает. Хотя я могу удалить этот атрибут имени, но все еще задаюсь вопросом, почему он сообщается как ошибка, хотя он действителен