最近开发中,为啦满足开发webservic调用的需要,将业务对象序列化成web服务所定义的XML格式,但是同时又希望不在程序里面做过多的业务处理来重组数据,在同事的指点下,使用外部定义的XSL来格式序列化后的业务对象,碰到好多问题,随手写下,以备回顾:
1.碰到带同名子节点的数据时,用xsl:for_each 直接取节点名无法取得,如:
<YMXX>
<YM>abc</YM>
<YM>bcd</YM>
<YM>adf</YM>
</YMXX>
<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中标明:
1.碰到带同名子节点的数据时,用xsl:for_each 直接取节点名无法取得,如:





xsl代码:
<YM_xx>
<xsl:for-each select="YM">
<YM><xsl:value-of select="YM"/></YM>
</xsl:for-each>
</YM_xx>
结果无法出数据,将循环的select改成根节点也无法解决.几经周折,正确如下:












