Пробелы перед объявлением XML из JSP

Я пытаюсь добиться полной XHTML-проверки моего вывода JSP, но я столкнулся с проблемой. Верхняя часть заголовка выглядит так:

<?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>

Тег проверяет несколько разных путей, чтобы мы могли переопределить его заголовком, специфичным для проекта, если это будет необходимо. Проблема с этим заключается в том, что taglib owportal должен быть объявлен перед использованием, вставляя пустую строку перед объявлением 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>...

И я получаю сообщение об ошибке "Недопустимое стандартное действие" в строке . Не самое полезное сообщение об ошибке. Похоже, я как-то неправильно использую тег. Я использую Tomcat 6, так что это не должно быть проблемой с версией JSP. Кто-нибудь может увидеть, что я делаю не так? предназначен для обтекания ?

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. Чтобы сделать это, вы хотите начать с чего-то вроде этого (предполагая, что здесь вы используете недавнюю спецификацию 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"/>
...

Это более правильный способ обработки вывода XML из файла JSP(X) - более явный.

Другие вопросы по тегам