首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XHTML验证、自定义名称空间和属性

XHTML验证、自定义名称空间和属性
EN

Stack Overflow用户
提问于 2009-02-24 10:43:26
回答 4查看 6.9K关注 0票数 9

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

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

代码语言:javascript
运行
复制
<div my:userid="123"> ... </div>

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

代码语言:javascript
运行
复制
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:my="http://www.example.com/my">

但是,我的XHTML没有通过验证。问题似乎是验证器实际上并没有去检查我的自定义名称空间的自定义DTD文档,它只检查XHTML和已知的DTD。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-02-24 11:00:54

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

Normative Definition of XHTML 1.0

这个版本的XHTML提供了严格符合XHTML1.0文档的定义,这些文档仅限于来自XHTML和XHTML1.0名称空间的元素和属性。

我的理解是,XHTML2.0的目标是提供一个框架来完成您想要做的事情。

票数 6
EN

Stack Overflow用户

发布于 2009-02-24 15:21:20

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

不是的。自定义名称空间在XML中格式完全正确,但是“有效”具有特定的含义,即使用的每个元素和属性都是在文档的模式中声明的。该模式可以是DTD、XML模式或其他模式,但您必须声明它。

因此,您可以声明自己的模式来为语言添加自定义属性,而XHTML模块化确实使这一点变得非常简单。您必须将对DTD的引用作为<!XML添加到prolog中;仅仅设置名称空间URI并不会给DOCTYPE>处理程序提供任何钩子来查找模式本身。

但是您所写的是“有效的my-language- what - is -a-bit-like-XHTML”,而不是“有效的XHTML”。其中一些‘my-language’是众所周知的,比如‘XHTML +MathML+SVG’,但是它本身仍然不是XHTML,如果你的客户一心想要“有效的XHTML”,你就不能使用它们中的任何一种。

您还会遇到潜在的浏览器问题,特别是IE,它(IE8之前的版本)对元素.*etAttribute*家族的DOM调用做了一些奇怪的事情。除非您实际将文档作为XML Content-Type ( IE也不能处理)提供服务,否则您的所有名称空间实际上并不使用名称空间。

在XHTML5中,有人提议允许用户自定义属性(主要用于脚本目的)包含名称以‘data-’开头的属性。但同时,通常的方法是在另一个属性中隐藏值,例如class:

代码语言:javascript
运行
复制
<div class="userid-123">...</div>

然后在脚本中通过className使用适当的字符串处理来提取数据。

票数 5
EN

Stack Overflow用户

发布于 2009-04-11 20:02:13

我有一个网站,客户要求是

有效的。他们使用W3C验证器进行检查。

我使用W3C验证器取得了一些成功,使用的不是xmlns=,而是标准的XHTML DTD,并在末尾添加了一些属性,就像博本斯上面描述的那样。我使用它来添加PHPTAL模板系统使用的属性,比如

代码语言:javascript
运行
复制
<html metal:define-macro="m">

我同意您需要的不是XHTML,而是XHTML的超集。但是,如果您的客户端准备简单地通过将W3C验证器指向您的URL来进行测试,那么请继续。有关建议,请参阅WDG

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

https://stackoverflow.com/questions/581279

复制
相关文章

相似问题

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