xsl 写的递归

    技术2022-05-11  141

    由于项目的需要,我用xsl 编写了递归解析树形结构,原始xml如下: <?xml version="1.0" encoding="utf-8"?> <WMS_Capabilities>     <Service>         <Name>SIT WMS demo</Name>         <Title>SIT WMS demo</Title>         <Abstract>SIT WMS demo</Abstract>         <KeywordList>             <Keyword>WMS</Keyword>             <Keyword>SIT</Keyword>             <Keyword>ICT</Keyword>         </KeywordList>     </Service>     <Capability> <Layer id="1">     <Name>China</Name>     <Title>aggregation of 3 layers</Title>     <TypeName>1222</TypeName>     <CRS>CRS:84</CRS>     <Layer id="1,1">         <Name>Provinces</Name>         <Title>aggregation of 3 layers</Title>         <TypeName>Provinces</TypeName>         <CRS>CRS:84</CRS>         <Layer id="1,1,1">             <Name>Provinces</Name>             <Title>aggregation of 3 layers</Title>             <TypeName>Provinces</TypeName>             <CRS>CRS:84</CRS>         </Layer>     </Layer>     <Layer id="1,2">         <Name>China_point</Name>         <Title>aggregation of 3 layers</Title>         <TypeName>China_line</TypeName>         <CRS/>     </Layer>     <Layer id="1,3">         <Name>China_point</Name>         <Title>aggregation of 3 layers</Title>         <TypeName>China_point</TypeName>         <CRS>CRS:84</CRS>     </Layer> </Layer> </Capability> </WMS_Capabilities> 转换的xsl如下: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">     <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>     <xsl:template match="/">         <xsl:apply-templates select="/WMS_Capabilities/Capability/Layer"></xsl:apply-templates>     </xsl:template>     <xsl:template match="Layer">     <table>         <tbody>             <tr οnclick="javascript:doAction(this)">                 <xsl:attribute name="id"><xsl:value-of select="@id"></xsl:value-of></xsl:attribute>                 <th>Layer:</th>                 <td><xsl:value-of select="./Name"/></td>                 <td style="display:none"><xsl:value-of select="./Title"/></td>                 <td style="display:none"><xsl:value-of select="./TypeName"/></td>                 <td style="display:none"><xsl:value-of select="./CRS"/></td>             </tr>             <tr>                 <td>   </td>                 <td colspan="4"><xsl:apply-templates select="Layer"></xsl:apply-templates></td>             </tr>         </tbody>     </table>              </xsl:template> </xsl:stylesheet> 转换后如下: <table><tbody><tr οnclick="javascript:doAction(this)" id="1"><th>Layer:</th><td>China</td><td style="display:none">aggregation of 3 layers</td><td style="display:none">1222</td><td style="display:none">CRS:84</td>         </tr>         <tr>             <td />             <td colspan="4">                 <table><tbody><tr οnclick="javascript:doAction(this)" id="1,1"><th>Layer:</th><td>Provinces</td><td style="display:none">aggregation of 3 layers</td><td style="display:none">Provinces</td><td style="display:none">CRS:84</td>                         </tr>                         <tr>                             <td />                             <td colspan="4">                                 <table><tbody><tr οnclick="javascript:doAction(this)" id="1,1,1"><th>Layer:</th><td>Provinces</td><td style="display:none">aggregation of 3 layers</td><td style="display:none">Provinces</td><td style="display:none">CRS:84</td>                                         </tr>                                         <tr>                                             <td />                                             <td colspan="4" />                                         </tr>                                     </tbody></table>                             </td>                         </tr>                     </tbody></table>                 <table><tbody><tr οnclick="javascript:doAction(this)" id="1,2"><th>Layer:</th><td>China_point</td><td style="display:none">aggregation of 3 layers</td><td style="display:none">China_line</td><td style="display:none"></td>                         </tr>                         <tr>                             <td />                             <td colspan="4" />                         </tr>                     </tbody></table>                 <table><tbody><tr οnclick="javascript:doAction(this)" id="1,3"><th>Layer:</th><td>China_point</td><td style="display:none">aggregation of 3 layers</td><td style="display:none">China_point</td><td style="display:none">CRS:84</td>                         </tr>                         <tr>                             <td />                             <td colspan="4" />                         </tr>                     </tbody></table>             </td>         </tr>     </tbody></table>

    最新回复(0)