jEdit XML Sidekick无法处理XHTML5

时间:2015-12-01 18:54:42

标签: xml html5 plugins jedit

我在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文件?

2 个答案:

答案 0 :(得分:1)

回复:

  

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

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

回复:

  

为什么不像我简单的,符合标准的XHTML5文件那样jEdit + Sidekick?

<!DOCTYPE html>触发jEdit的基于DTD的解析,但没有提供足够的信息来定位相应的DTD。有关详细信息,请参阅&#34; allowed-public-ID-system-ID-combination&#34;在W3C网页上&#34; HTML syntax&#34;。

回复:

  

我不需要或不想要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文档相关联。
  4. 详细程序

    以下过程假定您已经使用XML插件安装了jEdit。

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

      <?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的其他模式。没有&#34;官方&#34; XHTML5架构。

    3. 将存储库.zip文件解压缩到您选择的位置。
    4. 在jEdit中,设置XHTML5文档的架构:
      1. 选择插件&gt; XML&gt;设置架构......
      2. 从下载的存储库中选择xhtml5_with_microdata.xsd文件。
      3. 我还选择点击&#34;使这个位置相对(预览下方)&#34; (原文如此)。
    5. jEdit在与XHTML5文档相同的目录中创建schemas.xml文件。有关schemas.xml的详细信息,包括编辑它以便您不需要为每个XHTML5文档设置模式,请参阅jEdit XML插件帮助。

      已知问题

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

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

        

      159:cos-nonambig:&#34; http://www.w3.org/1999/xhtml&#34;:链接和&#34; http://www.w3.org/1999/xhtml&#34;:链接(或其替换组中的元素)违反& #34;独特的粒子归因&#34;。在针对此模式进行验证期间,将为这两个粒子创建歧义。

           550:cos-nonambig:&#34; http://www.w3.org/1999/xhtml&#34;:figcaption和&#34; http://www.w3.org/1999/xhtml&#34;:figcaption(或来自其替换组的元素)违反& #34;独特的粒子归因&#34;。在针对此模式进行验证期间,将为这两个粒子创建歧义。

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

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

      清除这些错误后,我发现我需要醒来&#34;我的XHTML5文档的XML解析:select Plugins&gt; Sidekick&gt;解析缓冲区。然后按键上的解析再次开始工作。

      不支持HTML命名字符引用

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

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

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

        

      实体&#34; nbsp&#34;被引用,但未被声明。

      要解决此问题,请指定相应的XML十进制或十六进制数字字符引用:&#160;&#xA0;

      故障排除

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

      1. 检查XHTML5的编辑模式是否为xml(尚未恢复为html):选择实用工具&gt;缓冲选项&gt;编辑模式:xml
      2. &#34;醒来&#34; XML解析:选择插件&gt; Sidekick&gt;解析缓冲区
      3. 问题

        为什么不删除DOCTYPE?

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

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

答案 1 :(得分:0)

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