Разбор JSTL xml

У меня есть небольшой вопрос по вкладке JSTL lib.

Как мы можем выбрать все содержимое тега xml.

Позволь мне показать тебе:

XML-файл:

<?xml version="1.0" encoding="ISO-8859-1"?>
<menu>
<portlet id="publier">
    <titre>Publier</titre>
    <contenu><a target="blank"
            href="#">
            <img src="Logo_32x32_Facebook.png"
                alt="Publier cette info sur Facebook" />
        </a>
    <contenu>
</portlet>
 ...
</menu>

JSP-файл, который пользователь JSL:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/xml"  prefix="x" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<c:import url="./vue/Theme/default/menu.xml" var="menuXML" />
<x:parse xml="${menuXML}" varDom="menuXML" />

<div class="column" id="col1">

<x:forEach select="$menuXML/menu/portlet" var="currentPortlet">
    <div class="portlet" id="<x:out select="@id"/>">
        <div class="portlet-header"><x:out select="$currentPortlet//titre" /></div>
        <div class="portlet-content">
            <x:if select="$currentPortlet//contenu">
                <x:out select="$currentPortlet//contenu"/>
            </x:if>             
            <x:if select="$currentPortlet//lien" >
                <ul>
                    <x:forEach var="lien" select="$currentPortlet//lien" >
                        <li><a href="<x:out select="@url"/>"><x:out select="$lien" /></a></li>
                    </x:forEach>
                </ul>
            </x:if>             
        </div>
    </div>
</x:forEach>
</div>

Проблема в том, что думают:

<x:if select="$currentPortlet//contenu">
    <x:out select="$currentPortlet//contenu"/>
</x:if> 

Когда контент содержит теги HTML, они не отображаются

Как получить все содержимое тега «contenu», а не игнорировать теги html?

Спасибо за внимание.


person Paca    schedule 01.08.2011    source источник


Ответы (1)


Вы должны попытаться обернуть свой HTML-код в CDATA, чтобы он не анализировался как XML-код.

Как это :

<?xml version="1.0" encoding="ISO-8859-1"?>
...
<contenu>
   <![CDATA[
      <a target="blank"
        href="#">
        <img src="Logo_32x32_Facebook.png"
            alt="Publier cette info sur Facebook" />
      </a> 
   ]]>
<contenu>
...

Привет, Мэтт

person Matt    schedule 01.08.2011
comment
XML должен содержать только необработанные данные, а форматирование (теги HTML) предназначено для части JSP. Например, вместо того, чтобы ставить тег A и тег IMG, просто поместите ссылку на свой тег A и URL-адрес изображения вашего тега img. ‹продолжение›‹ссылка›stckoverflow.com‹/ - person Matt; 01.08.2011
comment
Большое спасибо, я наконец-то использую форматирование xsl ‹xsl:value-of select=contenu disable-output-escaping=yes/› А затем в файле jsp: ‹c:import url=./vue/Theme/default/menu .xml var=inputDoc /› ‹c:import url=./vue/Theme/default/menu.xsl var=stylesheet /› ‹x:transform xml = ${inputDoc} xslt = ${stylesheet}› ‹/x: трансформировать› - person Paca; 02.08.2011