首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jEdit XML Sidekick无法处理XHTML5

jEdit XML Sidekick无法处理XHTML5
EN

Stack Overflow用户
提问于 2015-12-02 02:54:42
回答 2查看 191关注 0票数 1

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

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

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

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

代码语言:javascript
复制
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文件?

EN

回答 2

Stack Overflow用户

发布于 2016-02-12 13:05:15

回复:

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

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

回复:

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

<!DOCTYPE html>触发了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 parsing.
  2. Download XHTML5架构。
  3. 在jEdit中,将XHTML5架构与您的XHTML5文档相关联。

详细步骤

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

  1. 在XHTML5文件的前10行的注释中插入字符串:xml.validate.ignore-dtd=true:。例如:这将停止jEdit从GitHub存储库arasix/XHTML5-XML-Schema中查找XHTML5模式中不存在的DTD.
  2. Download。

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

XHTML5的其他模式也可用。没有将存储库(sic).文件设置到您选择的位置的“官方”XHTML5。

  • 在jEdit中,设置XHTML5文档的架构:(sic).

XHTML5选择插件> XML >

  1. 下载的xhtml5_with_microdata.xsd文件还选择了单击"make this location (make this location (预览)“)。

jEdit将在与XHTML5文档相同的目录中创建一个schemas.xml文件。有关schemas.xml的详细信息,包括对其进行编辑,以便不需要为每个XHTML5文档设置模式,请参阅jEdit XML插件帮助。

已知问题

架构中的唯一粒子属性冲突

当jEdit加载模式时(它只执行一次,然后将其缓存),它会在xhtml5.xsd中报告以下错误:

link 159:cos-nonambig:“http://www.w3.org/1999/xhtml”:

和"http://www.w3.org/1999/xhtml":link (或来自其替换组的元素)违反了“唯一粒子属性”。在针对此模式的验证过程中,将为这两个粒子创建歧义。

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

我已经向模式作者报告了这些错误。

实际上,您可以忽略这些错误:在Error List窗格中,单击broom ("Clear Error List")按钮。

在清除这些错误之后,我发现需要“唤醒”XHTML5文档的解析:选择Plugins > Sidekick > Parse Buffer。然后,对击键的解析再次开始工作。

不支持HTML命名字符引用

超文本标记语言定义了各种命名字符引用,比如&nbsp; (不间断空格)。

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

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

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

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

故障排除

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

Sidekick检查您的插件的编辑模式是否为解析(例如,尚未恢复为

  • ):选择实用程序>缓冲区选项>编辑模式:xml.

  • "Wake up“XML parsing: select xml >Sidekick> Parse Buffer

问题

为什么不直接删除DOCTYPE呢?

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

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

票数 1
EN

Stack Overflow用户

发布于 2016-04-05 19:56:04

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34027922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档