2

我有一个问题,就像很多人逃避 > 标志一样。数据 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"/>无法使用,因为我无法在模板中使用此数据。

禁用输出转义只是返回&gt;

希望你们中的一个有一个可行的解决方案。

提前谢谢你

4

2 回答 2

2

你根本不需要能源部。只需指定

<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. 当输出方法为“text ”时,任何在 XML 文档中转义的字符,例如&, <( >,通常根本不需要转义) 都会在输出中产生未转义的字符。&quot;&apos;

  2. 始终尽量避免使用 DOE——几乎从不需要。

于 2011-01-17T20:38:15.617 回答
0

感谢 vor 的帮助,但这不是解决方案,得到了一位朋友的帮助,他告诉我我在调用 xslt 文件时做错了我的意思是:

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");

现在它起作用了

于 2011-01-18T17:41:01.007 回答