xsltproc html 文档

发布于 2024-11-27 04:33:27 字数 1625 浏览 3 评论 0原文

我正在尝试清理一些 html。我已经用 tidy 将它们转换为 xhtml

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

生成的 xhtml 最终具有命名实体。 当在这些 xhtml 上尝试 xsltproc 时,我不断收到错误。

$ 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 不起作用?它为什么抱怨?或者我应该忘记它并修复实体?

I'm trying to clean some htmls. I have converted them to xhtml with tidy

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

The resulting xhtml ends up having named entities.
When trying xsltproc on those xhtmls, I keep getting errors.

$ 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

If I add --html to the xsltproc it complains on a tag that has name and id attributes with same name (which is valid)

$ 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>
                            ^

The xslt is simple:

<?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>

Why doesn't --html work? Why is it complaining? Or should I forget it and fix the entities?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浪漫之都 2024-12-04 04:33:27

我采用了另一种方式 - 使整齐地生成数字实体,而不是使用 -n 选项命名。

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

现在我可以删除 --html 选项并且它可以工作。
虽然我可以删除该 name 属性,但仍然想知道为什么它被报告为错误,尽管它是 有效

I did the other way - made tidy produce numeric entities rather then named with -n option.

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

Now I can remove --html option and it works.
Although I can remove that name attribute, but still wonder why it is reported as an error, although it is valid

如日中天 2024-12-04 04:33:27

我假设不清楚的问题是这样的:我知道如何在运行 xsltproc 时避免“Entity 'XXX' not Define”错误(添加 --html)。但如何摆脱“ID YYY 已定义”呢?

Tidy 的最新版本有一个 anchor-as-name 选项。您可以将其设置为“no”以删除不需要的 name 属性:

此选项控制在可以充当锚点的元素中删除或添加名称属性。如果设置为“yes”,则在 DTD 允许的情况下,名称属性(如果尚不存在)将与现有的 id 属性一起添加。如果设置为“no”,则当 id 属性存在或已添加时,任何现有的 name 属性都会被删除。

I am assuming that the unclearly stated question is this: I know how to avoid "Entity 'XXX' not defined" errors when running xsltproc (add --html). But how do I get rid of "ID YYY already defined"?

Recent builds of Tidy have an anchor-as-name option. You can set it to "no" to remove unwanted name attributes:

This option controls the deletion or addition of the name attribute in elements where it can serve as anchor. If set to "yes", a name attribute, if not already existing, is added along an existing id attribute if the DTD allows it. If set to "no", any existing name attribute is removed if an id attribute exists or has been added.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文