2012-12-29 3 views
3

У меня есть XML-код вида:XQUERY Node возвращает HTML-код и браузер не читать

<description>&lt;div style=&quot;text-align: justify;&quot;&gt;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&#243;n mensual de conciertos y actividades y de una variada carta de c&#243;cteles.&lt;br/&gt;&lt;br/&gt;&lt;h4&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Descuento del 30% con la tarjeta tur&#237;stica Gij&#243;n Card (S&#243;lo en la entrada al recinto, no incluye espect&#225;culos)&lt;br/&gt;&lt;/span&gt;&lt;/h4&gt;&lt;/div&gt;</description> 

я знаю, что это на испанском языке, но только взглянуть на код HTML, есть некоторые «дивы», «уль» (obiusly «Ли» тоже) в середине XML

хорошо .... когда я создаю запрос 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, я искал его, но все решения дают мне как создать HTML с помощью Xquery, чтобы не заставить браузер разбирать HTML.

+0

Я не работал с XQUERY раньше, поэтому я не правильный ответ, но я думаю, что вы должны HTML-экранирования в сущности в строке, этот вопрос может помочь Http: // стек overflow.com/questions/2611480/how-to-unencode-escaped-xml-with-xquery – Roimer

ответ

4

Если у вас есть XQuery 3.0, то вы можете использовать новую функцию parse-xml() как этот:

let $doc := 
    <description>&lt;div style=&quot;text-align: justify;&quot;&gt;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&#243;n mensual de conciertos y actividades y de una variada carta de c&#243;cteles.&lt;br/&gt;&lt;br/&gt;&lt;h4&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Descuento del 30% con la tarjeta tur&#237;stica Gij&#243;n Card (S&#243;lo en la entrada al recinto, no incluye espect&#225;culos)&lt;br/&gt;&lt;/span&gt;&lt;/h4&gt;&lt;/div&gt;</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> 
+0

Большое вам спасибо, я собираюсь попробовать прямо сейчас, еще раз спасибо: D – Santanor

+0

@Santanor, добро пожаловать , –

+0

Мне жаль снова спрашивать, но когда я использую эту функцию, webapp возвращает мне эту ошибку: Функция parse-xml() не определена в пространстве имен модулей: http://www.w3.org/2005/xpath-functions я googled об этом, но я не могу найти пространство имен с этой функцией, я ставлю пространство имен Zorba, но вернул 404 URL-адрес, вы знаете решение? Tnak вы очень много – Santanor