博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

xsl使用随笔

Posted on 2007-12-25 15:44  大胸宝腚  阅读(267)  评论(0)    收藏  举报
最近开发中,为啦满足开发webservic调用的需要,将业务对象序列化成web服务所定义的XML格式,但是同时又希望不在程序里面做过多的业务处理来重组数据,在同事的指点下,使用外部定义的XSL来格式序列化后的业务对象,碰到好多问题,随手写下,以备回顾:
1.碰到带同名子节点的数据时,用xsl:for_each 直接取节点名无法取得,如:
<YMXX>
  
<YM>abc</YM> 
  
<YM>bcd</YM> 
  
<YM>adf</YM> 
</YMXX>
  xsl代码:
   <YM_xx>
<xsl:for-each select="YM">
     
<YM><xsl:value-of select="YM"/></YM> 
</xsl:for-each>
</YM_xx>                   
结果无法出数据,将循环的select改成根节点也无法解决.几经周折,正确如下:
<xsl:apply-templates select="YMXX" />

<xsl:template match="YMXX">
  
<xsl:for-each select="YM">
    
<YM><xsl:value-of select="text()"/></YM>
  
</xsl:for-each>
</xsl:template>
另外发现,使用循环取节点时,如果父节点中有多级子节点,而且有同名的时候,一定要把级联关系在select中标明: