XSLT 调用外部程序


通常可以通过xslt把一个xml转成html

cd.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="cd_apply.xslt"?>
<collection>
  <cd>
    <title>Boys for Pele</title>
    <artist>Tori Amos</artist>
    <tracks>
      <track type="vocal">
        <name>Horses</name>
        <length>3.5</length>
      </track>
      <track type="instrumental">
        <name>Blood roses</name>
        <length>3.2</length>
      </track>
      <track type="vocal">
        <name>Father lucifer</name>
        <length>3.8</length>
      </track>
      <track type="instrumental">
        <name>Professional widow</name>
        <length>4.1</length>
      </track>
      <track type="vocal">
        <name>Mr. Zebra</name>
        <length>3.6</length>
      </track>
    </tracks>
  </cd>
  <cd>
    <title>The Ghosts that Hunt me</title>
    <artist>Crash TestDummies</artist>
    <tracks>
      <track type="vocal">
        <name>Winter song</name>
        <length>4.3</length>
      </track>
      <track type="instrumental">
        <name>Comin's back soon</name>
        <length>4.1</length>
      </track>
      <track type="vocal">
        <name>Superman's song</name>
        <length>4.1</length>
      </track>
      <track type="vocal">
        <name>Here on earth</name>
        <length>3.1</length>
      </track>
    </tracks>
  </cd>
</collection>

cd.apply.xslt

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html>
            <body><xsl:apply-templates/></body>
        </html>
    </xsl:template>
    
    <xsl:template match="collection">
        <xsl:apply-templates/>
    </xsl:template>
    
    <xsl:template match="cd">
        <center>
            <xsl:apply-templates/>
        </center>
    </xsl:template>
    
    <xsl:template match="title">
        <font size="5"><b><xsl:value-of select="."/>:</b></font>
    </xsl:template>
    
    <xsl:template match="artist">
        <font size="5"><i><xsl:value-of select="."/></i></font>    
    </xsl:template>

    <xsl:template match="tracks">    
        <table border="1">
            <tr>
                <th>Name</th>
                <th>Length</th>
                <th>Type</th>
            </tr>
            <xsl:apply-templates/>        
        </table>
        <br/><br/>
    </xsl:template>    
    
    <xsl:template match="track">
        <tr>
            <td><xsl:value-of select="name"/></td>
            <td><xsl:value-of select="length"/></td>
            <td><xsl:value-of select="@type"/></td>
        </tr>
    </xsl:template>
</xsl:stylesheet>

有时可以调用一个外部程序的方法进行转换,比如外部类叫做Transformer

XslCompiledTransform xslt = new XslCompiledTransform();
XsltSettings xsltset = new XsltSettings();
xslt.Load(path, xsltset, null);
var arguments = new XsltArgumentList();
arguments.AddExtensionObject("urn:transformer", new Transformer());
xsltDOE2.Transform(.., arguments, ..);

xslt做相应修改

xmlns:transformer="urn:transformer"  //加一个namespace
<xsl:value-of select="transformer:Transform(.)"/>

C#代码

 public class Transformer
    {
        public string Transform(XPathNavigator navigator, double value1, bool value2)
        {
           ...
        }
        public string Transform(XPathNodeIterator iterator)
        {
            ...
        }
}            

优质内容筛选与推荐>>
1、Skype for Business server 数据库安装
2、JVM
3、Weekly blog for week 1910
4、事务
5、day05前阶段复习


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn