2009-05-29 34 views
0

我正在嘗試實現JSP輸出的完整XHTML過渡驗證,但我遇到了一個障礙。頭的頂部是這樣的:來自JSP的XML聲明之前的空白空間

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

它包含有看起來像這樣的聲明:

<jsp:include> 
    <jsp:attribute name="page"><owportal:page name="/style/portal/header.jsp" /></jsp:attribute> 
</jsp:include> 

的< owportal:頁>標籤檢查了幾個不同的路徑,這樣我們就可以如果需要,可以使用項目特定的標頭覆蓋它。這個問題是owportal taglib需要在使用之前聲明,在XML聲明之前插入一個空白行並導致驗證警告。

我已經嘗試使用jsp:輸出到generate an XML declaration沒有多少運氣。任何人都可以讓我知道,如果我在這裏的正確軌道?

更新:

目前我想是這樣的

<%@ taglib uri="/WEB-INF/yadda/yadda" prefix="yadda" %> 

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" xmlns="http://www.w3.org/1999/xhtml" version="2.0"> 
    <jsp:output omit-xml-declaration="false" doctype-root-element="html" 
       doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" 
       doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> 
</jsp:root> 

<html>... 

而且我在< JSP得到一個錯誤 「無效的標準動作」:根>線。不是最有用的錯誤消息。聽起來好像我在某種程度上錯誤地使用了標籤。我正在運行Tomcat 6,所以它不應該是JSP版本的問題。任何人都可以看到我做錯了什麼?是< jsp:root >的意思是圍繞<html>?

+1

是的,我看到可能有兩個問題:XML文檔只能有一個根元素;在這裏你有兩個。 確實在之內。另外,看起來您正在使用舊的1.x語法來聲明taglib。我認爲有一些相當於您可能需要或需要使用的。我相信這也是內在的。 – 2009-06-09 10:57:49

回答

1

如果我正確理解你,那麼你試圖在JSP的最頂部包含這個jsp:include,但是在這個過程中,你正在導致JSP在​​頂部輸出幾位空白XML序言。

在這樣的情況下,我剛纔使出確保該JSP無空白直到有:

<jsp:include><jsp:attribute name="page"><owportal:page name="/style/portal/header.jsp" /></jsp:attribute></jsp:include>[your content continues here, not on next line!]... 

但我認爲你是那種問一個不同的問題,也就是如何讓JSP輸出一個XML聲明。要做到這一點,你要開始像這樣的東西(這裏假設你使用的是最近的JSP規範像2.1)...

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" xmlns="http://www.w3.org/1999/xhtml" version="2.1"> 
    <jsp:output 
      omit-xml-declaration="false" doctype-root-element="html" 
      doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" 
      doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/> 
... 

這是從JSP處理XML輸出更正確的方式( X)文件 - 更明確。

+0

嘿謝謝你的回答。是的,我更想到你列出的第二個解決方案。我使用過jsp:root,但遇到了一些麻煩。我更新了原始帖子並提供了更多信息。 – Kenny 2009-06-03 03:02:33