xsltproc html документы - PullRequest
       6

xsltproc html документы

2 голосов
/ 31 июля 2011

Я пытаюсь почистить немного htmls.Я конвертировал их в xhtml с помощью 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 &mdash; as needed.</
                                                                   ^
o.xml:914: parser error : Entity 'uarr' not defined
        </div><a href="index.html#top" style="float:right">&uarr; Go to top</a>
                                                                 ^
o.xml:924: parser error : Entity 'nbsp' not defined
          Android 3.2&nbsp;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 ]

1 голос
/ 31 июля 2011

Я сделал иначе - заставил tidy производить числовые объекты, а не именовать их с помощью опции -n.

$ tidy -asxml -i  -n -w 150 -o o.xml index.xml

Теперь я могу удалить опцию --html, и она работает.Хотя я могу удалить этот атрибут имени, но все еще удивляюсь, почему он сообщается как ошибка, хотя он действителен

0 голосов
/ 31 июля 2011

Я предполагаю, что неясный вопрос заключается в следующем: я знаю, как избежать ошибок «Entity 'XXX' notfined» при запуске xsltproc (добавьте --html). Но как мне избавиться от "ID YYY уже определено"?

Последние сборки Tidy имеют опцию anchor-as-name . Вы можете установить значение «Нет», чтобы удалить нежелательные атрибуты name:

Эта опция контролирует удаление или добавление атрибута name в элементах, где он может служить якорем. Если установлено значение «да», атрибут имени, если он еще не существует, добавляется к существующему атрибуту идентификатора, если DTD это позволяет. Если установлено значение «нет», любой существующий атрибут имени удаляется, если атрибут id существует или был добавлен.

...