【问题标题】:jEdit XML Sidekick cannot handle XHTML5jEdit XML Sidekick 无法处理 XHTML5
【发布时间】:2016-03-05 19:40:10
【问题描述】:

我有一个 XHTML5 文档。这只是意味着我正在创建一个 HTML5 文档,但我希望所有结束标记都存在并且我想要适当的编码等。所以文件扩展名是 xhtml 并且文件以:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html>
<html lang="en-us" xmlns="http://www.w3.org/1999/xhtml">

所有这些都是完全标准的东西。只是用 XML 编码的简单 HTML5。

我安装了带有 XML Sidekick 插件的 jEdit 5.3.0。我立即得到一个错误列表,上面写着:

Element type "html" must be declared.
Element type "html" must be declared.
Element type "body" must be declared.
Element type "h1" must be declared.
Element type "p" must be declared.
...

Sidekick 的轮廓看起来很酷,提示元素和属性名称的弹出窗口也不错。

但是我该如何摆脱所有这些错误呢?我不需要也不想要 DTD。

如果我将解析器更改为 html,那么我不会收到任何错误 --- 但我也不会收到任何 DOM 树表示或自动建议。

为什么 jEdit+Sidekick 不喜欢我的简单、符合标准的 XHTML5 文件?

【问题讨论】:

  • 与您的问题没有直接关系,所以我没有在回答中提到这一点...您是通过 HTTP(S) 作为媒体类型 text/htmlapplication/xhtml+xml 提供该文档吗?
  • 如果您不再对这个问题的答案感兴趣,因为您找到了一个不同的编辑器,可以对 XHTML5 进行即时验证,我会对您正在使用的内容感兴趣,特别是如果它是免费的。我使用了几个商业验证 XML 编辑器,我偶尔会四处看看有什么新东西,但我还是会继续使用 jEdit。

标签: xml html plugins jedit


【解决方案1】:

回复:

但是我该如何摆脱所有这些错误呢?

这个答案描述了一种方式。还有其他的。

回复:

为什么 jEdit+Sidekick 不喜欢我的简单、符合标准的 XHTML5 文件?

&lt;!DOCTYPE html&gt; 触发 jEdit 的基于 DTD 的解析,但没有提供足够的信息来定位相应的 DTD。详见W3C网页“HTML syntax”中“permitted-public-ID-system-ID-combination”的说明。

回复:

我不需要也不想要 DTD。

如果您想使用 XML 插件在 jEdit 中验证 XHTML5,那么您需要一个 DTD 或一个模式。此答案使用 W3C XML 模式。

如果您只想检查您的 XHTML5 是否格式正确,但不一定有效,那么,是的,正如您所说,您不需要 DTD 或模式,您可以忽略大部分答案:只需在 XHTML5 文档前 10 行之一的注释中插入字符串 :xml.validate.ignore-dtd=true:

在 jEdit 中验证 XHTML5

总结

  1. 在 XHTML5 的前 10 行的注释中插入 :xml.validate.ignore-dtd=true: 以防止 jEdit DTD 解析。
  2. 下载 XHTML5 架构。
  3. 在 jEdit 中,将 XHTML5 架构与您的 XHTML5 文档相关联。

详细流程

以下过程假设您已经安装了带有 XML 插件的 jEdit。

  1. 在 XHTML5 文件前 10 行的注释中插入字符串 :xml.validate.ignore-dtd=true:。例如:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <!-- jEdit XML plugin property: :xml.validate.ignore-dtd=true: -->
    <meta charset="UTF-8"/>
    <title>XHTML5 document</title>
    </head>
    <body>
    <p>Hello, World!</p>
    </body>
    </html>    
    

    这会阻止 jEdit 寻找不存在的 DTD。

  2. 从 GitHub 存储库 arasix/XHTML5-XML-Schema 下载 XHTML5 架构。

    请注意存储库自述文件中关于 data-* 属性的警告。

    XHTML5 的其他模式也可用。没有“官方”的 XHTML5 模式。

  3. 将存储库 .zip 文件解压缩到您选择的位置。
  4. 在 jEdit 中,为您的 XHTML5 文档设置架构:
    1. 选择插件 > XML > 设置架构...
    2. 从下载的存储库中选择 xhtml5_with_microdata.xsd 文件。
    3. 我还选择了单击“使此位置相对(预览如下)”(原文如此)。

jEdit 在与您的 XHTML5 文档相同的目录中创建一个 schemas.xml 文件。有关 schemas.xml 的详细信息,包括编辑它以便您无需为每个 XHTML5 文档设置架构,请参阅 jEdit XML 插件帮助。

已知问题

架构中的唯一粒子归属违规

当 jEdit 加载架构时(它执行一次,然后缓存它),它在 xhtml5.xsd 中报告以下错误:

159:cos-nonambig: "http://www.w3.org/1999/xhtml":link 和 "http://www.w3.org/1999/xhtml":link(或它们替换组中的元素)违反了“唯一粒子属性”。在针对此模式进行验证期间,将为这两个粒子创建歧义。

550:cos-nonambig: "http://www.w3.org/1999/xhtml":figcaption 和 "http://www.w3.org/1999/xhtml":figcaption(或它们替换组中的元素)违反了“唯一粒子属性”。在针对此模式进行验证期间,将为这两个粒子创建歧义。

我已将这些错误报告给架构作者。

实际上,您可以忽略这些错误:在错误列表窗格中,单击扫帚(“清除错误列表”)按钮。

清除这些错误后,我发现我需要“唤醒”我的 XHTML5 文档的 XML 解析:选择插件 > Sidekick > 解析缓冲区。然后按键解析再次开始工作。

不支持 HTML 命名字符引用

HTML 定义了各种命名字符引用,例如&amp;nbsp;(不间断空格)。

此答案中描述的基于 XML 模式的验证不支持此类命名引用,predefined in XML 除外。

例如,在您的 XHTML5 文档中输入&amp;nsbp; 将在 jEdit 中生成以下错误:

实体“nbsp”已被引用,但未声明。

作为一种解决方法,请指定相应的 XML 十进制或十六进制数字字符引用:&amp;#160;&amp;#xA0;

疑难解答

如果 jEdit 似乎没有将您的文档解析为 XML:

  1. 检查 XHTML5 的编辑模式是否为 xml(它尚未恢复为 html):选择实用程序 > 缓冲区选项 > 编辑模式:xml
  2. “唤醒”XML 解析:选择插件 > Sidekick > 解析缓冲区

问题

为什么不直接删除 DOCTYPE?

与其将特定于 jEdit 的字符串插入到我的 XHTML5 源代码中以防止基于 DTD 的解析,为什么不直接删除 DOCTYPE?

有几个原因:例如,在 Web 浏览器中触发标准模式。有关更多信息,请参阅 WHATWG 常见问题解答;具体来说,“What is the DOCTYPE for modern HTML documents?”问题的答案

【讨论】:

  • 更好的解决方案是使用随 Nu Html Checker (v.Nu) 提供的 RELAX NG 模式。但是我无法让 jEdit 识别来自 v.Nu 的数据类型库。如果我能做到这一点,我会在这个答案中添加详细信息。
  • 在其他人的帮助下,我现在使用 jEdit XML 插件的预发布版本(包含所需的数据类型库)来编辑 XHTML5。详情见:github.com/unsoup/validator
【解决方案2】:

您只需更新您的 XML 插件。 当前版本识别 HTML5 Doctype 声明并自动切换到 DTD-less 验证和完成。

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多