LINUX.ORG.RU
ФорумTalks

А у вас были проблемы с XML в JAVA?


0

0

Вот такой вот примерчик:

Есть необходимость поставить пробел (&nbsp) в JSP (jspx) странице. Для этого, разумеется, нежно определить ENTITY, но следующий пример не работает:

org.apache.jasper.JasperException: /layout/test.jspx(5,103) Element type "jsp:root" must be declared.

<?xml version="1.0"?>

<!DOCTYPE jsp:root [><!ENTITY nbsp " ">]>

<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"; xmlns="http://www.w3.org/1999/xhtml"; version="1.2"> <jsp:directive.page contentType="text/html"/> <jsp:output doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"; doctype-root-element="html" omit-xml-declaration="true"/> <html> <head><title>Simple jspx page</title></head> <body>&nbsp;</body> </html> </jsp:root>

Т.е. в определении DTD нужно указывать ВСЕ элементы которые присутствуют в документе. Поиски в гугле выдают пару ссылок на архивы переписок, где такая же проблема увы осталась без решения.

Пробовал даже так писать:

<!DOCTYPE jsp:root [ <!ELEMENT jsp:root ANY> <!ENTITY nbsp " ">]>

где ANY якобы допускает любые вложенные теги, но все тщетно.

Самое интересное что в дотнете, при работе с XSLT, подобное работало без проблем, тоесть я писал:

<?xml version="1.0" encoding="utf-8" ?>

<!DOCTYPE stylesheet SYSTEM "../xhtml-lat1.ent"> <!-- в xhtml-lat1.ent определены только ENTITY's без каких либо элементов -->

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">; ...

Забавно также то, что здесь не нужно указывать префикса xsl:stylesheet и парсер отрабатывает просто stylesheet.

Потратил 2 дня на решение проблемы но так и не нашел ответа. Сервер &#8212; SUN JSAS 8.1

anonymous

> Потратил 2 дня на решение проблемы но так и не нашел ответа.

LOL. Тебя еще с работы не выгнали? :) Напиши #xA0; и не мучайся.

Cantor ★★
()
Ответ на: комментарий от anonymous

???

Это *стандартный* и *единственный* способ вставлять entities в XML файлы. DTD - вот это костыль.

Cantor ★★
()

Сначала так напиши, а то у тебя в <jsp:root xmlns:jsp.... ошибки, ";" не должно в элементе встречаться, вот оно и ругается

<?xml version="1.0"?>
<!DOCTYPE jsp:root [
	<!ENTITY nbsp " ">
]>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"; xmlns="http://www.w3.org/1999/xhtml"; version="1.2">
	<jsp:directive.page contentType="text/html"/>
	<jsp:output doctype-public="-//W3C//DTD XHTML 1.1//EN" doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"; doctype-root-element="html" omit-xml-declaration="true"/>
	<html>
		<head>
			<title>Simple jspx page</title>
		</head>
		<body>&nbsp;</body>
	</html>
</jsp:root>

anonymous
()
Ответ на: комментарий от anonymous

Упс, значит это движок вставляет ";"

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.