繁体   English   中英

何时使用xml而不是HTML?

[英]When to use xml with xsl instead of HTML?

我喜欢.NET webcontrols和你操作的东西,这是普遍的共识,但XML和XSL是如此之大,因为你有UI逻辑,平台和语言无关,所以总有一天我把应用程序更改为php,java或者其他什么我可以重用所有表示逻辑。 而且,XSL有可能在渲染之前调用.NET(或其他)方法。

你什么时候使用XML / XSL? 为什么不经常使用它?

而不是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);
    }
}

首先,我需要在需要以HTML格式呈现信息时使用XSLT。 几乎每次我在过去七年中都偏离了这一点,我后悔了。 我在Python中使用HTML生成的简短经验是我遇到的唯一可能能够替换它的东西。

在ASP.NET的东西中并没有那么多,但在此之前(使用VB6)我几乎只使用它(在服务器上)将xml转换为html。 我总能发现它非常多才多艺。 我也在我的“ 协议缓冲区 ”项目中使用它作为代码生成器引擎:主框架生成xml,然后我使用xsl转换来吐出C#。 我听说有人说他们没有找到直观的xsl,但我真的很喜欢它,而且在处理xml时它是我的默认ttool。

现在,我正在寻找很多ASP.NET MVC,它不一定适用于xsl - 虽然在某些方面, <%=foo.Name%><xsl:value-of select="Name"/>之间没有多少关系<xsl:value-of select="Name"/>

使用XML / XSL存在巨大的开销,并且存在许多缺点。

  1. 您需要一个完整的XML数据集来确保XSL仅用作逻辑引擎。
  2. 其次,XSL逻辑控制很差,并且版本之间不一致。
  3. 第三,组合是一个相当繁重的过程,不适合大型网站。

如果您担心逻辑分离,请使用一些模板语言(不是XSL)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM