创建一个XSLT文件

时间:2011-01-11 13:29:46

标签: xslt

我有两个xml文件:

<m2> 
 <header> 
  <to>ggg</to> 
  <from>aaa</from> 
  <id>11</id> 
  <name>gd</name> 
  <mtype>me</mtype> 
 </header> 
 <body>some text</body> 
</m2> 

2

<m2> 
   <header> 
      <desc> 
         <to>ggg</to> 
         <from>aaa</from> 
      </desc> 
      <id>11</id> 
      <name>gd</name> 
      <mtype>nothing</mtype> 
   </header> 
   <body>some text</body> 
</m2> 

从第一个xml转换为第二个xml的xslt文件是什么? xslt需要将mtype的值从“me”转换为“some text” 并将“to”和“from”元素插入“desc”元素。

2 个答案:

答案 0 :(得分:2)

此转化

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="to">
  <desc>
   <xsl:copy-of select=".|../from"/>
  </desc>
 </xsl:template>

 <xsl:template match="mtype/text()">nothing</xsl:template>
 <xsl:template match="from"/>
</xsl:stylesheet>

应用提供的XML文档时,从图片中恢复(再也不要这样做了!):

<m2>
 <header>
  <to>ggg</to>
  <from>aaa</from>
  <id>11</id>
  <name>gd</name>
  <mtype>me</mtype>
 </header>
 <body>some text</body>
</m2>

产生想要的结果

<m2>
   <header>
      <desc>
         <to>ggg</to>
         <from>aaa</from>
      </desc>
      <id>11</id>
      <name>gd</name>
      <mtype>nothing</mtype>
   </header>
   <body>some text</body>
</m2>

解释:简单应用身份规则设计模式。使用和覆盖标识模板是最基本和最强大的XSLT设计模式。

请参阅示例和解释:http://dpawson.co.uk/xsl/sect2/identity.html

答案 1 :(得分:0)

这里有很多教程;只需在“XSLT教程”上进行网络搜索。这是其中一个网站:

http://www.w3schools.com/xsl/