XSLT语法—在.net中使用XSLT转换xml文档的示例代码详解

黄舟
Release: 2017-03-09 16:59:10
Original
1220 people have browsed it

XSL即可扩展的样式表文件。 可以格式化xml的显示,也可以将xml转换成需要的另一种格式。

学习XSL必须熟悉XPath。XSL和XPath一样简单强大,容易学习。

1. XSL既然可以格式化xml的显示样式,我们先来看如何在xml中引用xsl文件

如下代码示例:

只需在xml文件的文档声明后面添加即可

2. XSL的格式

XSL也是一个标准的xml文件,它以xml文档声明开始,根元素必须是xsl:styleshee,同时根元素必须有version属性指定xsl的版本,和xmlns:xsl=” http://www.php.cn/”指定xsl命名空间,如下示例

3. Xsl要点 如下示例xml





  
    100
    this is a blue pig
  
  
    80
    this is a red cat
  
  
    80
    this is a green dog
  
  
    80
    this is a green cat
  


  
    100
    this is a blue dog
  
  
    80
    this is a red dog
  
Copy after login

上面的xml在通过xsl格式化之后的显示效果如下:

1) xsl:template定义匹配节点的转换模板,属性match=”xpath expression”用来定义模板匹配的元素

如下定义匹配根节点的模板


Copy after login

2) xsl:for-each循环显示select=”xpath expression”选择节点的转换 (类似编程语言中的foreach语句),

如下示例,选择了pets下面的子元素,并循环显示子元素的几点名字:



Copy after login

3) xsl:if 元素条件显示节点(类似编程语言中的if语句)注意小于号大于号要分别用<和>替代


its weight is less than 10 km
Copy after login

4) xsl:choose 多分支条件显示 (类似编程语言中的switch语句)


 
this is a pig
 

  this is not a pig

Copy after login

5) xsl:value-of 显示选择节点或者属性的值

选择子节点price

Copy after login

选择属性weight

Copy after login

6) xsl:attribute 构造xml节点的属性

用来向节点添加属性,例如:



Copy after login

将输出

7) xsl:apply-templates 应用模板

如果xml文件结构比较复杂,可以定义多个template,然后使用标签应用模板,xsl:apply-templates 可以指定属性select=”xpath”来选择应用的模板,或者不指定select表示选择当前节点的模板。

请看下面示例xslt文件pets-templates.xsl

完整的示例xsl文件:pets.xsl




  
    
      
        
        lovely pets
        
      
      
        

lovely pets

  • http://www.php.cn/;/xsl:attribute> http://www.php.cn/;/xsl:attribute> http://www.php.cn/@N00.jpg?1143660418 Courier said: "" weight:

    its weight is less than 10 km

Copy after login

完整示例文件 pets-templates.xsl:



  
    
      
        
        lovely pets
        
      
      
        

lovely pets

  • http://www.php.cn/;/xsl:attribute> Courier dog said: "" weight:

    its weight is less than 10 km

  • http://www.php.cn/;/xsl:attribute> Courier pig said: "" weight:

    its weight is less than 10 km

  • http://www.php.cn/@N00.jpg?1143660418 Courier cat said: "" weight:

    its weight is less than 10 km

  • Copy after login

    在c#.net中使用XslCompiledTransform转换xml文档,XslTransform也可以使用,但是这个类已经被微软标记为过时,最好不要再用了,如下代码示例:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Xml;
    
    namespace UseXslt
    {
        class Program
        {
            static void Main(string[] args)
            {
                //声明XslTransform类实例
                System.Xml.Xsl.XslCompiledTransform trans = new System.Xml.Xsl.XslCompiledTransform();
    
                string xsltFile = @"X:\about.net\System.Xml\example\pets.xsl";
                using (StreamReader rdr = new StreamReader(xsltFile))
                {
                    using (XmlReader xmlRdr = XmlReader.Create(rdr))
                    {
                        //载入xsl文件
                        trans.Load(xmlRdr);
                    }
                }
                string inputFile = @"X:\about.net\System.Xml\example\pets.xml";
                string outputFile = @"X:\about.net\System.Xml\example\pets-out.htm";
                //转化源文件输出到输出文件outputFile
                trans.Transform(inputFile, outputFile);
            }
        }
    }
    Copy after login


    有一点需要注意,使用XslCompiledTransform转换出来的文件,是一个html格式的,这个类会自动在html的head标签中添加一个未关闭的meta标签 ;微软帮我们想的太多了。

    Xslt还可以指定参数,定义变量,有关这些方面请查看相关文档。


    The above is the detailed content of XSLT语法—在.net中使用XSLT转换xml文档的示例代码详解. For more information, please follow other related articles on the PHP Chinese website!

    Related labels:
    source:php.cn
    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact [email protected]
    Popular Tutorials
    More>
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!