3

次のような XML コードがあります。

<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コードを見てください.XMLの真ん中にいくつかの「div」、「ul」(明らかに「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>

問題は、これを Web に表示すると、テキストが正確に xml テキストであり、ブラウザが HTML コードを解析せず、次のようなものを表示"<ul><li>somethins...</li></ul>"し、ブラウザに html を強制的に解析させる方法がわからないことです。しかし、すべてのソリューションは、ブラウザに HTML を強制的に解析させるのではなく、Xquery で HTML を作成する方法を教えてくれます。

4

1 に答える 1

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>
于 2012-12-29T18:17:41.953 に答える