xhtml错误

时间:2018-08-17 06:43:33

标签: xhtml

我开始学习xhtml,因为它是我正在阅读的书中的第一个主题,并尝试创建一个简单的表单以仅输入名称。 这是我从书中复制的内容的一半,仅保留输入文本字段:

<?xml version = "1.0" encoding = "UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">

<head>
  <title>Enter Customer Name</title>
</head>

<body> 
  <h:outputStylesheet library="css" name="styles.css"/>
  <h:messages/>
  <h:form id="test">
     <h:outputLabel for="firstname" value="first name:"></h:outputLabel>
     <h:inputText id="firstname" label="first name" value="#{test.firstname}" required="true">
     <f:validateLength minimum="2" maximum="10">
     </f:validateLength>
     </h:inputText>
   </h:form>   
</body>
</html>

但是当我在浏览器中打开它时,这就是我得到的

The output

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您的文档不是XHTML。

Doctype声称是这样,但是然后您会遇到很多错误和非XHTML内容。

浏览器正在以XML模式解析文档,如果您实际上是在编写XHTML,这是一个很好的第一步。

如评论中所指出:

  

xmlns属性不正确。应该是"http://www.w3.org/1999/xhtml"而不是"http://w3.org/1999/xhtml"

由于弄错了,您的默认名称空间不会被识别为XHTML,并且浏览器将其视为未知XML格式,没有进行特殊处理。这就是为什么您可以查看XML节点树的原因。

更正后,您的文档开始被解析为XHTML。

  

现在我所得到的只是一个空白屏幕

这是因为您仅有的XHTML元素是根元素,head及其后代以及body

其他所有内容(例如h:form)都不是XHTML。您已经从http://java.sun.com/jsf/html命名空间导入了它(从http://java.sun.com/jsf/core命名空间导入的那些部分除外)。 (请注意,您选择的Doctype禁止这样做。)

Web浏览器不知道如何处理这些命名空间中的元素,因此它们被插入到DOM中但未呈现。

您需要:

  • 确定这些元素设计用于什么工具,并代替Web浏览器使用。 (该工具可能会输出您可以在网络浏览器中使用的代码。)
  • 使用专为网络浏览器使用的语言编写代码。那可能是真正的XHTML,但是它的好处仅适用于极少数情况,并且几乎可以肯定,编写HTML会更好。