JSTL c: import y x: analizar dentro de x: forEach
Pregunta
Estoy tratando de usar las etiquetas c: import y x: parse dentro de una x: forEach.
¿Es esto posible?
Si no, ¿cuál es otra forma de importar múltiples fuentes xml dependiendo de los datos analizados de otra fuente xml?
<x:forEach select="$sitemap/pages/page" varStatus="status">
<x:set var="location_id" select="@id"/>
<c:import url="xml/pages/page${location_id}.xml" var="location_xml_var"/>
<x:parse var="location_xml" xml="${location_xml_var}" />
<x:out select="$location_xml/pages/page/@name" escapeXml="false"/>
</x:forEach>
Esto resulta en un
javax.servlet.jsp.JspException: org.xml.sax.SAXParseException: Content is not allowed in prolog.
error, en el x: parse.
Solución
Parece que esto simplemente no funcionará.
Terminé recorriendo el mapa del sitio xml y enviando los identificadores a un nuevo
<c:set>
variable, luego recorriendo eso con
<c:forEach> and <c:import>'ing
cada archivo XML que necesitaba. Entonces, el núcleo de forEach lo permitirá, el xml forEach no lo hará.
Me doy cuenta de que esta es probablemente la forma incorrecta de solucionar este problema de todos modos, pero todavía no obtuve ninguna respuesta a esta pregunta. ¡Siéntase libre de ofrecer una alternativa!