我喜欢.NET webcontrols和你操作的东西,这是普遍的共识,但XML和XSL是如此之大,因为你有UI逻辑,这是平台和语言无关,所以有一天我将应用程序更改为php,java或其他任何东西,我可以重用所有的表示逻辑。 而且,XSL有可能在呈现之前调用.NET(或其他)方法。
您何时正常使用XML / XSL?为什么不经常使用它?
答案 0 :(得分:2)
而不是HTML?
我经常使用它来代替asp.net控件,因为它提供了对2.0中V和C的关注点的分离,而你在.NET 2.0中没有开箱即用。
显然,还有一百万个其他用途与asp.net控件无关。
编辑:实施草图
public class xsltmanager
{
/* constructor (singleton) which defines a file watcher for *.xsl in the path of your choice */
//just a mutex for thread safety
private object Mutex = new object();
//caching XslCompiledTransforms
private Dictionary<string, XslCompiledTransform> cTransforms = new Dictionary<string, XslCompiledTransform>();
public XslCompiledTransform fetch(string identifier)
{
if (!this.cTransforms.ContainsKey(identifier))
{
lock (this.Mutex)
{
if (!this.cTransforms.ContainsKey(identifier))
{
XslCompiledTransform xslDoc = new XslCompiledTransform();
xslDoc.Load(/* file path based on identifier */);
this.cTransforms.Add(identifier, xslDoc);
}
}
}
return this.cTransforms[identifier];
}
/* other util xslt methods - namespace wash, doc merge, whatever */
}
public class myPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//get source data
XPathDocument xPathDoc = myGetXMLMethod();
//transform params
XsltArgumentList oArgs = new XsltArgumentList();
/* add params as required */
//fetching and executing the transform directly to the Response here
xsltmanager.instance.get(@"foo\bar\baz").Transform(xPathDoc, oArgs, Response.OutputStream);
}
}
答案 1 :(得分:2)
对于第一个近似值,每当我需要以HTML格式呈现信息时,我都会使用XSLT。几乎每次我在过去七年中都偏离了这一点,我后悔了。我在Python中生成HTML的简短经验是我遇到过的唯一可以替换它的经历。
答案 2 :(得分:1)
与ASP.NET不同,但在此之前(使用VB6)我几乎只使用它(在服务器上)将xml转换为html。我总能发现它非常多才多艺。我也在我的“protocol buffers”项目中使用它作为代码生成器引擎:主框架生成xml,然后我使用xsl转换来吐出C#。我听说有人说他们没有找到直观的xsl,但我真的很喜欢它,而且在处理xml时它是我的默认ttool。
现在,我正在寻找很多ASP.NET MVC,它不一定适用于xsl - 虽然在某些方面,<%=foo.Name%>
和<xsl:value-of select="Name"/>
之间并不多
答案 3 :(得分:-3)
使用XML / XSL存在巨大的开销,并且存在许多缺点。
如果您担心逻辑分离,请使用一些模板语言(不是XSL)。