XSLT убегает> - PullRequest
       20

XSLT убегает>

2 голосов
/ 17 января 2011

У меня проблема, как и у многих людей с экранированием знака>.XML-файл данных выглядит как

<XML>
<check><![CDATA[value > 60]]></check>
</Xml>

с xslt. Я хотел бы создать функцию ac #.проверки - это элементы, которые были использованы в операторе if.

public void product(int value)
{
if( <xsl:value-of disable-output-escaping="yes" select="actie" />)

this should be: if( value > 60 ) but returns if( value &gt; 60 ) 

}

<xsl:value-of cdata-section-elements="check"/> нельзя использовать, потому что я не могу использовать эти данные в шаблоне.

disable-выходной выход просто возвращает &gt;

надеюсь, у кого-то из вас есть рабочее решение.

, заранее поблагодарив вас

Ответы [ 2 ]

2 голосов
/ 17 января 2011

Тебе совсем не нужен DOE.Просто укажите :

<xsl:output method="text"/>

, и результат будет удален .

Вот небольшой пример :

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

    <xsl:template match="/*">
   public void product(int value)
       {
        if( <xsl:value-of select="check" />)
        }
  </xsl:template>
</xsl:stylesheet>

Когда это преобразование применяется к любому XML-документу (не используется), получается нужный, правильный результат :

   public void product(int value)
        {
         if( value > 60)
        }

Помните :

  1. Когда в качестве метода вывода используется «текст », любые символы, которые экранируются в документе XML, например &, < (>, &quot; и &apos; обычно вообще не нуждаются в экранировании) на выходе выдаются без экранирования.

  2. Всегда старайтесь избегать использования DOE -- это почти никогда не требуется.

0 голосов
/ 18 января 2011

Спасибо за помощь, но это не решение Что я дит было:

XPathDocument myXPathDoc = new XPathDocument("../../file.xml");
XslTransform myXslTrans = new XslTransform();
myXslTrans.Load("../../file.xslt");
XmlTextWriter myWriter = new XmlTextWriter("../../file.txt", null);
myXslTrans.Transform(myXPathDoc, null, myWriter);

я изменил его на:

XslCompiledTransform myXslTrans = new XslCompiledTransform();
myXslTrans.Load("../../file.xslt");
myXslTrans.Transform("../../file.xml", "../../file.cs");

теперь это работает

...