最近开发中,为啦满足开发webservic调用的需要,将业务对象序列化成web服务所定义的XML格式,但是同时又希望不在程序里面做过多的业务处理来重组数据,在同事的指点下,使用外部定义的XSL来格式序列化后的业务对象,碰到好多问题,随手写下,以备回顾:
1.碰到带同名子节点的数据时,用xsl:for_each 直接取节点名无法取得,如:
xsl使用随笔<YMXX>
xsl使用随笔  
<YM>abc</YM> 
xsl使用随笔  
<YM>bcd</YM> 
xsl使用随笔  
<YM>adf</YM> 
xsl使用随笔
</YMXX>
  xsl代码:
xsl使用随笔   <YM_xx>
xsl使用随笔
<xsl:for-each select="YM">
xsl使用随笔     
<YM><xsl:value-of select="YM"/></YM> 
xsl使用随笔
</xsl:for-each>
xsl使用随笔
</YM_xx>xsl使用随笔                   
结果无法出数据,将循环的select改成根节点也无法解决.几经周折,正确如下:
xsl使用随笔<xsl:apply-templates select="YMXX" />
xsl使用随笔
xsl使用随笔
<xsl:template match="YMXX">
xsl使用随笔  
<xsl:for-each select="YM">
xsl使用随笔    
<YM><xsl:value-of select="text()"/></YM>
xsl使用随笔  
</xsl:for-each>
xsl使用随笔
</xsl:template>
另外发现,使用循环取节点时,如果父节点中有多级子节点,而且有同名的时候,一定要把级联关系在select中标明:

相关文章: