XSLT之路3---引用外部类

引用外部类

1.定义一个类
2.定义一个XSLT
3.c#导入urn:myPolicy
4.脚本调用外部类

1.定义一个类:

/// <summary>
/// 保单
/// </summary> public class Policy { //<xs:attribute name="Amount" type="xs:integer" use="required" /> public string InsuredListInstance(int amount) { this.Insureds.Amount = amount; return "Insureds Count" + this.Insureds.Count.ToString() ; }
}

2.定义一个XSLT:

申明一个命名空间:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:myPolicy="urn:myPolicy">

使用外部类函数:
 <xsl:value-of select="myPolicy:InsuredListInstance(@Amount)"/>

3.c#导入myPolicy:

public static string XLST(Policy policy,XmlReader xmlreader,XmlReader xlstReader)
{
    StringBuilder sb = new StringBuilder();
    try
    {
        XslCompiledTransform xslt = new XslCompiledTransform();
        xslt.Load(xlstReader);

        XPathDocument doc = new XPathDocument(xmlreader);

        XsltArgumentList xslArg = new XsltArgumentList();

        ///Policy policy = new Policy();
        xslArg.AddExtensionObject("urn:myPolicy", policy);
        System.IO.StringWriter sw = new System.IO.StringWriter(sb);
        XmlTextWriter writer = new XmlTextWriter(sw);//Console.Out

        xslt.Transform(doc, xslArg, writer);
        writer.Close();
    }
    catch (Exception ex)
    { 
        throw ex; 
        //throw new Exception("xlst转换失败");
    }

    return sb.ToString();
}

 4.脚本调用外部类:详见另一篇http://www.cnblogs.com/meixiaoqiang/p/3432838.html

 

posted @ 2013-11-20 10:28  Roader  阅读(240)  评论(0编辑  收藏  举报