xsltproc html 文档
我正在尝试清理一些 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 — 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 不起作用?它为什么抱怨?或者我应该忘记它并修复实体?
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我采用了另一种方式 - 使整齐地生成数字实体,而不是使用 -n 选项命名。
现在我可以删除 --html 选项并且它可以工作。
虽然我可以删除该 name 属性,但仍然想知道为什么它被报告为错误,尽管它是 有效
I did the other way - made tidy produce numeric entities rather then named with -n option.
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
我假设不清楚的问题是这样的:我知道如何在运行 xsltproc 时避免“Entity 'XXX' not Define”错误(添加
--html
)。但如何摆脱“ID YYY 已定义”呢?Tidy 的最新版本有一个 anchor-as-name 选项。您可以将其设置为“no”以删除不需要的
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: