我有一个像很多人逃避>的问题标志。 数据xml文件看起来像
<XML>
<check><![CDATA[value > 60]]></check>
</Xml>
使用xslt我想创建一个c#函数。检查是在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 > 60 )
}
<xsl:value-of cdata-section-elements="check"/>
无法使用,因为我无法在模板中使用此数据。
disable-output-escaping只返回>
希望你有一个有效的解决方案。
感谢你 预先
答案 0 :(得分:2)
您根本不需要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)
}
记住:
当输出方法为“text ”时,XML文档中转义的所有字符,例如&
,<
({{1} },>
和"
通常根本不需要转义)在输出中未转义。
始终尽量避免使用DOE - 几乎不需要它。
答案 1 :(得分:0)
谢谢你的帮助,但它不是解决方案,得到了一位朋友的帮助,他告诉我,我在调用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");
现在有效了