Вопрос

Я пытаюсь взять за ниточку " .<BR>" в VB.NET и преобразуйте его в HTML через XSLT.Однако, когда HTML выходит, он выглядит примерно так:

&lt;BR&gt;

Я могу только предположить, что он идет дальше и пытается это отрисовывать.Есть ли какой-нибудь способ, которым я могу их преобразовать &lt;/&gt; обратно в скобки, чтобы я получил перевод строки, к которому стремлюсь?

Это было полезно?

Решение

Проверьте, что XSLT имеет:

<xsl:output method="html"/>

Редактировать:объяснение из комментариев

По умолчанию XSLT выводит данные в виде XML (1), что означает, что в нем не будет никаких значащих символов.Вы можете переопределить это в определенных экземплярах с помощью атрибута disable-output-escaping="yes" (вступление здесь) но гораздо более эффективным является изменение выходных данных на явное значение HTML, которое дает те же преимущества во всем мире, что и следующее:

  • Для элементов script и style замените все экранируемые символы (такие как & и >) на их фактические значения (& и > соответственно).
  • Что касается атрибутов, замените все вхождения > на >.
  • Запишите пустые элементы, такие как <br>, <img>, и <input> без закрывающих тегов или косых черт.
  • Запишите атрибуты, которые передают информацию своим присутствием в отличие от их значения, такие как проверено и выбрано, в свернутом виде.

от солидной компании IBM Статья освещая тему, более свежий репортаж от stylusstudio здесь

Если вывод HTML - это то, что вам нужно, вам следует указать вывод HTML.

(1) На самом деле есть угловой случай, когда вывод по умолчанию выполняется в формате HTML, но я не думаю, что это универсально, и зависеть от этого довольно глупо.

Другие советы

Попробуйте обернуть его с помощью <xsl:text disable-output-escaping="yes">&lt;br&gt;</xsl:text>

Не знаю насчет XSLT, но..

Одним из обходных путей может быть использование HttpUtility.Htmlдекод из системы.Веб-пространство имен.

using System;
using System.Web;

class Program
{
    static void Main()
    {
        Console.WriteLine(HttpUtility.HtmlDecode("&lt;br&gt;"));
        Console.ReadKey();
    }
}

...

Понял! Поверх выбранного ответа я также сделал что-то похожее на эту строку:

htmlString = htmlString.Replace("&lt;","<")
htmlString = htmlString.Replace("&gt;",">")

Тем не менее, я думаю, что в конечном итоге я могу просто использовать теги <pre> для сохранения всего.

Строка " <br> " это уже HTML, так что вы можете просто Response.Write("<br>").

Но вы имеете в виду XSLT, поэтому я представляю, что происходит какое-то преобразование. В этом случае, несомненно, преобразование должно вставлять его в правильном месте в качестве узла. Лучший вопрос, скорее всего, даст лучший ответ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top