0

JSP 出力の完全な XHTML 遷移検証を実現しようとしていますが、問題が発生しました。ヘッダーの上部は次のようになります。

<?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:page> タグは、必要に応じてプロジェクト固有のヘッダーでオーバーライドできるように、いくつかの異なるパスをチェックします。これに関する問題は、owportal taglib を使用する前に宣言する必要があり、XML 宣言の前に空白行が挿入され、検証警告が発生することです。

jsp:output を使用して XML 宣言を生成しようとしましたが、うまくいきませんでした。ここで正しい軌道に乗っているかどうかを誰かに教えてもらえますか?

アップデート:

現在、私はこのようなことを試みています

<%@ 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:root> 行で「無効な標準アクション」というエラーが表示されます。最も役立つエラー メッセージではありません。どうやらタグの使い方が間違っているようです。私は Tomcat 6 を実行しているので、JSP のバージョンに問題はありません。誰かが私が間違っていることを見ることができますか? <jsp:root> は <html> をラップするためのものですか?

4

1 に答える 1

1

私があなたを正しく理解しているなら、あなたはこのjsp:includeをJSPの一番上に含めようとしていますが、その過程で、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宣言を出力するように指示する方法です。そのためには、次のようなものから始めます(ここでは、2.1などの最近のJSP仕様を使用していると仮定します)...

<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(X)ファイルからのXMLの出力を処理するためのより適切な方法です-より明示的です。

于 2009-06-02T18:26:06.090 に答える