当前位置:  开发笔记 > 前端 > 正文

XHTML验证,自定义命名空间和属性

如何解决《XHTML验证,自定义命名空间和属性》经验,为你挑选了2个好方法。

我有一个客户端要求XHTML有效的网站.他们使用W3C验证器进行检查.

我想添加自己的命名空间和属性,所以我可以这样做:

...

据我所知,定义自定义命名空间是完全有效的XHTML,只要我这样做:


但是,我的XHTML验证失败.问题似乎是验证器实际上没有出去检查我的自定义DTD文档以查找我的自定义命名空间,它只检查XHTML与已知的DTD.谁能够解释我如何解决这个问题呢?



1> kmkaplan..:

对于XHTML 1.0,您只能使用XHTML 1.0元素和属性:

XHTML 1.0的规范定义

此版本的XHTML提供了严格符合XHTML 1.0文档的定义,这些文档仅限于XML和XHTML 1.0命名空间中的元素和属性.

我的理解是XHTML 2.0旨在提供一个框架来做你想要的.



2> bobince..:

据我所知,定义自定义命名空间是完全有效的XHTML

不.自定义命名空间在XML 中完美地形成,但"有效"具有特定含义,即使用的每个元素和属性都在文档的模式中声明.该模式可以是DTD,XML模式或其他东西,但您必须声明它.

因此,您可以声明自己的架构以向该语言添加自定义属性,实际上XHTML Modularization使这非常简单.你必须在prolog中添加对DTD的引用作为; 只设置命名空间URI并不会给XML处理器任何钩子来查找架构本身.

但是你所写的是"有效的my-language-like-a-bit-like-XHTML",而不是"有效的XHTML".其中一些"我的语言"是众所周知的,比如"XHTML + MathML + SVG",但它仍然不是XHTML,如果你的客户端设置在"有效的XHTML"上,你就不能使用它们中的任何一种.

你也有潜在的浏览器问题,尤其是IE浏览器,它(IE8之前)使用Element.*etAttribute*系列DOM调用做了一些奇怪的事情.除非您实际上将文档作为XML Content-Type(IE也无法处理)提供,否则您的所有命名空间内容实际上并不使用命名空间.

在[X] HTML5中,有一个建议允许用户自定义属性(主要用于编写脚本)进入名称以"data-"开头的属性.但与此同时,通常的方法是将值隐藏在另一个属性中,例如class:

...

然后在脚本中使用className上的合适字符串处理提取数据.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有