我有一个类似这样的XML代码:
<description><div style="text-align: justify;">El Casino de Asturias alberga una sala polivalente para cualquier tipo de acto desde conferencias, convenciones o reuniones de trabajo, hasta banquetes y celebraciones. Dispone de programación mensual de conciertos y actividades y de una variada carta de cócteles.<br/><br/><h4><span style="font-weight: bold;">Descuento del 30% con la tarjeta turística Gijón Card (Sólo en la entrada al recinto, no incluye espectáculos)<br/></span></h4></div></description>
我知道它是西班牙文,但只是看看html代码,在XML的中间有一些“div”,“ul”(obiusly“li”)
嗯....当我在其上创建一个XQuery查询时,我把这个描述放在一个像这样的表的行中:
<table id="pubs" border="1">
{
for $dir in doc("/db/Ocio/pubs.xml")//dir
order by $dir/name
return
<tr>
<td><p>{$dir/description/text()}</p></td>
</tr>
}
</table>
问题是,当我在网上显示这个文本时,文本完全是xml文本,我的浏览器不会解析HTML代码并显示像"<ul><li>somethins...</li></ul>"
这样的内容,我不知道如何强制浏览器解析html,我google了它,但所有解决方案都给我如何使用Xquery创建HTML,而不是强制浏览器解析HTML。
答案 0 :(得分:4)
如果你有XQuery 3.0,那么你可以像这样使用新的parse-xml()
函数:
let $doc :=
<description><div style="text-align: justify;">El Casino de Asturias alberga una sala polivalente para cualquier tipo de acto desde conferencias, convenciones o reuniones de trabajo, hasta banquetes y celebraciones. Dispone de programación mensual de conciertos y actividades y de una variada carta de cócteles.<br/><br/><h4><span style="font-weight: bold;">Descuento del 30% con la tarjeta turística Gijón Card (Sólo en la entrada al recinto, no incluye espectáculos)<br/></span></h4></div></description>
return
<table id="pubs" border="1">
<tr>
<td><p>{$doc/text()/parse-xml(.)}</p></td>
</tr>
</table>
执行此XQuery时,会生成正确的结果(标记 - 不是文本):
<table id="pubs" border="1">
<tr>
<td>
<p>
<div style="text-align: justify;">El Casino de Asturias alberga una sala polivalente para cualquier tipo de acto desde conferencias, convenciones o reuniones de trabajo, hasta banquetes y celebraciones. Dispone de programación mensual de conciertos y actividades y de una variada carta de cócteles.<br/>
<br/>
<h4>
<span style="font-weight: bold;">Descuento del 30% con la tarjeta turística Gijón Card (Sólo en la entrada al recinto, no incluye espectáculos)<br/>
</span>
</h4>
</div>
</p>
</td>
</tr>
</table>