глюк XSLTransform'a для < >
От: Lazarus  
Дата: 21.04.03 12:38
Оценка:
имеем:
<P>
<xsl:text disable-output-escaping="yes">&lt;IMG SRC='</xsl:text>
<xsl:value-of select="@Source" />
<xsl:text disable-output-escaping="yes">'&gt;</xsl:text>
</P>


действуем, как описано в MSDN:

XslTransform xslt = new XslTransform();
xslt.Load("favorite.xsl");
XPathDocument xpathdocument = new XPathDocument("mydata.xml");
XmlTextWriter writer = new XmlTextWriter(Console.Out);
writer.Formatting=Formatting.Indented;
xslt.Transform(xpathdocument, null, writer);

И получаем:
&lt;IMG SRC='pic.gif'&gt;

А хотелось бы:
<IMG SRC='pic.gif'>

Кто сталкивался? Как бороться?
Re: глюк XSLTransform'a для &lt; &gt;
От: Аноним  
Дата: 21.04.03 12:57
Оценка:
Здравствуйте, Lazarus, Вы писали:

L>имеем:

<P>
L> <xsl:text disable-output-escaping="yes">&lt;IMG SRC='</xsl:text>
L> <xsl:value-of select="@Source" />
L> <xsl:text disable-output-escaping="yes">'&gt;</xsl:text>
</P>

L>А хотелось бы:

L> <IMG SRC='pic.gif'>

А надо ли городить огород? Не проще ли написать:
<P>
  <IMG SRC="{@Source}"/>
</P>
Re[2]: глюк XSLTransform'a для &lt; &gt;
От: Toughpheeckouse Россия  
Дата: 21.04.03 13:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Lazarus, Вы писали:


А>А надо ли городить огород? Не проще ли написать:

А>
<P>
А>  <IMG SRC="{@Source}"/>
</P>
А>


или воспользоваться xsl:attribute:


<img>
    <xsl:attribute name="src">
        <xsl:value-of select="source"/>
    </xsl:attribute>
</img>
Думайте сами, решайте сами...
Re[3]: глюк XSLTransform'a для &lt; &gt;
От: Lazarus  
Дата: 21.04.03 13:22
Оценка:
Меня в принципе интересует, почему я теги не могу сам сформировать.
Ведь должен же механизм disable-output-escaping работать!
Re[4]: глюк XSLTransform'a для &lt; &gt;
От: ibnTeo Россия http://ibnteo.klava.org/
Дата: 23.04.03 19:13
Оценка:
Здравствуйте, Lazarus, Вы писали:

L>Меня в принципе интересует, почему я теги не могу сам сформировать.

L>Ведь должен же механизм disable-output-escaping работать!

DOE не обязан работать, производители трансформеров могут это делать как им охота
На самом деле подумай, если ты формируешь XML на выходе, то надо ли формировать твой невалидный "xml"?
В .NET можно трансформировать твой пример, если ты установишь метод трансформации в html (<xsl:output method="html" />)

P.S. Проверять твой код неохота. Я пользуюсь XmlDocument вместо XPathDocument. Но думаю что это не важно.
Re: глюк XSLTransform'a для &lt; &gt; (Вопрос в тему)
От: Аноним  
Дата: 24.04.03 13:14
Оценка:
Вопрос в тему:

если в нете нельзя осформировать тег при output="xml", то
можно хотя бы получить его из нода программным образом уже без ескейпинга символов.
то бишь мне надо сформировать поле to типа

Person name <info@somedomain.com>...

у меня получается так,


<message>
<to>Person name &lt;info@somedomain.com&gt;</to>
...
<textbody>
...
message text
....
</textbody>
....
</message>

как получить значение нода "to" без escaping-a,
вида "Person name <info@somedomain.com>"?
Re[2]: ASP.NET и кириллица
От: ibnTeo Россия http://ibnteo.klava.org/
Дата: 24.04.03 13:27
Оценка:
А>Вопрос в тему:

А>если в нете нельзя осформировать тег при output="xml", то

А>можно хотя бы получить его из нода программным образом уже без ескейпинга символов.
А>то бишь мне надо сформировать поле to типа

А>Person name <info@somedomain.com>...


А>у меня получается так,



А><message>

<to>Person name &lt;info@somedomain.com&gt;</to>
А>...
А><textbody>
А>...
А>message text
А>....
А></textbody>
А>....
А></message>

А>как получить значение нода "to" без escaping-a,

А>вида "Person name <info@somedomain.com>"?

Конечно можно, используй Replace()
XmlNode nodeTo = documentMessage.DocumentElement.SelectSingleNode("to");
string to = nodeTo.InnerText.Replace("&lt;", "<").Replace("&gt;", ">").Replace("&amp;", "&");
Re[2]: глюк XSLTransform'a для &lt; &gt; (Вопрос в тему)
От: Аноним  
Дата: 24.04.03 13:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вопрос в тему:


А>если в нете нельзя осформировать тег при output="xml", то

А>можно хотя бы получить его из нода программным образом уже без ескейпинга символов.
А>то бишь мне надо сформировать поле to типа

А>Person name <info@somedomain.com>...


А>у меня получается так,


А> <message>
А>   <to>Person name &lt;info@somedomain.com&gt;</to>
...
А> </message>


А>как получить значение нода "to" без escaping-a?


Нет, этого нельзя сделать. XSLT-преобразователь при output="xml" пользуется стандартными средствами вывода XML, которые просто не позволяют сформировать некорректный XML. А то, что ты пытаешься сделать, — это не корректный XML, то есть вовсе не XML.

С другой стороны, если рассматривать XML как информационный набор, то, что ты получаешь, — это именно то, что ты хочешь. Т. е. содержимым элемента to (на уровне данных, а не лексического представления) является "Person name <info@somedomain.com>".
Re[3]: Не сработает
От: Аноним  
Дата: 24.04.03 13:34
Оценка:
Здравствуйте, ibnTeo, Вы писали:

T>
T>XmlNode nodeTo = documentMessage.DocumentElement.SelectSingleNode("to");
T>string to = nodeTo.InnerText.Replace("&lt;", "<").Replace("&gt;", ">").Replace("&amp;", "&");
T>


Элемент не содержит в своем тексте "&lt;".
Re[4]: ASP.NET и кириллица
От: ibnTeo Россия http://ibnteo.klava.org/
Дата: 24.04.03 13:45
Оценка:
T>
T>XmlNode nodeTo = documentMessage.DocumentElement.SelectSingleNode("to");
T>string to = nodeTo.InnerText.Replace("&lt;", "<").Replace("&gt;", ">").Replace("&amp;", "&");
T>


А>Элемент не содержит в своем тексте "&lt;".


Мда... совсем заработался
в nodeTo.InnerText уже будет что нужно
Re[5]: ASP.NET и кириллица
От: Аноним  
Дата: 24.04.03 14:26
Оценка:
Здравствуйте, ibnTeo, Вы писали:

T>
T>XmlNode nodeTo = documentMessage.DocumentElement.SelectSingleNode("to");
T>string to = nodeTo.InnerText.Replace("&lt;", "<").Replace("&gt;", ">").Replace("&amp;", "&");
T>


А>Элемент не содержит в своем тексте "&lt;".


T>Мда... совсем заработался

T>в nodeTo.InnerText уже будет что нужно

хмм. мож я тоже заработался но в иннер тект у меня
поему-то с ескейпингом , сейчас проверю еще раз.
Re[6]: ASP.NET и кириллица
От: Аноним  
Дата: 24.04.03 14:35
Оценка:
Здравствуйте, Аноним, Вы писали:

А>хмм. мож я тоже заработался но в иннер тект у меня

А>поему-то с ескейпингом , сейчас проверю еще раз.

проверил и правда все правильно, буду смотреть что за [censored]
его ескейпит.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.