我在哪里可以找到样本 X HTML 5页面?我主要想知道是否可以将XHTML 5与其他XML语言混合搭配,就像XHTML 1一样。例如,在XHTML 5中有效吗?
<!DOCTYPE html PUBLIC "WHAT SHOULD BE HERE?"
"WHAT SHOULD BE HERE?">
<html xmlns="WHAT SHOULD BE HERE?"
xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
<title><ui:insert name="title">Default title</ui:insert></title>
<link rel="stylesheet" type="text/css" href="./css/main.css"/>
</head>
<body>
<div id="header">
<ui:insert name="header">
<ui:include src="header.xhtml"/>
</ui:insert>
</div>
<div id="left">
<ui:insert name="navigation" >
<ui:include src="navigation.xhtml"/>
</ui:insert>
</div>
<div id="center">
<br />
<span class="titleText"> <ui:insert name="title" /> </span>
<hr />
<ui:insert name="content">
<div>
<ui:include src="content.xhtml"/>
</div>
</ui:insert>
</div>
<div id="right">
<ui:insert name="news">
<ui:include src="news.xhtml"/>
</ui:insert>
</div>
<div id="footer">
<ui:insert name="footer">
<ui:include src="footer.xhtml"/>
</ui:insert>
</div>
</body>
</html>
提前致谢。
答案 0 :(得分:7)
您根本不需要doctype。它们不是为处理命名空间而设计的,并且在XML中没有任何有用的用途。 (在HTML中,它们是进入标准模式所必需的。)如果您真的坚持使用它,无论出于何种原因,只使用<!DOCTYPE html>
。
至于命名空间:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets">
正如您已经在使用的那样,我认为。
如您所见,没有关于您正在使用的版本的信息。那是因为你不需要它。对于验证,您可以在UI中选择目标,浏览器从未查看过版本。也就是说,在浏览器中,没有HTML3.2或HTML4.01或HTML5,只有“HTML”,没有XHTML1.0,XHTML1.1或XHTML5,只有“XHTML”。今天,这些主要包括HTML4.01 / XHTML1.0和HTML5的某些部分,以及一些专有部分(尽管HTML5已经指定了大部分内容)。
答案 1 :(得分:2)
这是一个非常好的问题,涵盖W3C截至2012年底仍在处理的未解决问题:
关于DOCTYPE问题, DOCTYPE问题可能有新发展:截至 11月。 2012年12月12日,关于HTML语法的HTML5 Latest Editor's Draft州,在“8.1.1 DOCTYPE”部分中说明:
<!DOCTYPE html>
<!DOCTYPE html SYSTEM "about:legacy-compat">
(例如,通过XML生成器)<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
(或其他5个,见下文)据我所知:
除非进行最后一分钟的编辑,否则应将其纳入2012年11月8日的HTML5 W3C候选推荐标准。
XHTML语法在这方面保持不变:“如果需要,XML文档可能包含DOCTYPE,但这不是必须符合此规范。”
总结一下,从2012年11月8日开始,以下任何一项都有效:
<!DOCTYPE html>
<!DOCTYPE html SYSTEM "about:legacy-compat">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
和
答案 2 :(得分:1)
最好的选择可能是HTML5规范section on XHTML,它主要是XML 1.0 5th edition spec和namespaces spec。正如它所说的那样,XML中的HTML5没有定义的DOCTYPE,这是你问题的DOCTYPE部分的答案。它特别提到将HTML5与XML文档中的其他内容混合,因此这应该是您问题的这一部分的答案。
答案 3 :(得分:1)
例如,这个在XHTML 5中有效吗?
不,你也不能用XHTML 1做到这一点。一旦你开始做FOO + BAR文件,它们就不是有效的FOO或有效的BAR,只是两者的某种组合(可能符合DTD,因此是有效的FOO + BAR)
<!DOCTYPE html PUBLIC "WHAT SHOULD BE HERE?"
"WHAT SHOULD BE HERE?">
描述您正在使用的标记语言组合的自定义DTD。
混合名称空间时,通常最好忘记DTD。它无论如何都不会与HTML兼容,因此text/html
是不可能的
<html xmlns="WHAT SHOULD BE HERE?"
xmlns:ui="http://java.sun.com/jsf/facelets">
XHTML命名空间没有改变。这与其他所有版本的XHTML相同。
答案 4 :(得分:-2)
我担心没有XHTML5这样的东西。
你可以拥有真正的XHTML,使用其中一个经典的XHTML DOCTYPE(参见其他答案),或者你可以放入<!DOCTYPE html>
一个,然后它主要验证,但它不再是完全XHTML。它只有在您将其视为HTML时才有效。
例如,这个文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>test</title></head>
<body><p> </p></body>
</html>
仅在您提供.html
分机时才有效。使用.xhtml
,没办法。
你可能会认为保存为.html
没什么大不了的,但不管文件的内容是什么,它都是HTML。然后你也可以抛弃XML声明和xmlns属性以及所有其他XHTML特性。