乖,别哭的薄壳
~一份耕耘,一份收获~
posts - 34,comments - 213,trackbacks - 0
前几天公司要用xml快速方便的存取属性N多的数据,跟sinoly合作研究了一下.做了一个小例子.

1.example.xml--主要数据文件

<?xml version="1.0" encoding="UTF-8"?>

<?xml:stylesheet type="text/xsl" href="example.xsl"?>

<projects id="1">
    
<project title="一级标题1" index="1">
        
<items isTrunk="false" title="二级标题1.1" id="items_1">
            
<result type="2">1</result>
            
<officer><![CDATA[]]></officer>
            
<classified>1</classified>
            
<eligibility>0</eligibility>
            
<remark></remark>
        
</items>
        
<items isTrunk="false" title="二级标题1.2" id="items_2">
            
<result type="2">3</result>
            
<officer><![CDATA[]]></officer>
            
<classified>1</classified>
            
<eligibility>0</eligibility>
        
</items>
    
</project>
    
<project title="一级标题2" index="2">
        
<items isTrunk="false" title="二级标题2.1" id="items_3">
            
<result type="3">3</result>
            
<officer><![CDATA[]]></officer>
            
<classified>1</classified>
            
<eligibility>0</eligibility>
        
</items>
        
<items isTrunk="true" title="二级标题2.2">
            
<item title="三级标题2.2.1" id="item_1">
                
<result type="1">2</result>
                
<officer><![CDATA[居然是乱码]]></officer>
                
<classified>1</classified>
                
<eligibility>0</eligibility>
            
</item>
            
<item title="三级标题2.2.2" id="item_2">
                
<result type="1">3</result>
                
<officer><![CDATA[<><>]]></officer>
                
<classified>1</classified>
                
<eligibility>0</eligibility>
            
</item>
        
</items>            
        
<items isTrunk="true" title="二级标题2.3">
            
<item title="三级标题2.3.1" id="item_3">
                
<result type="2">1</result>
                
<officer><![CDATA[]]></officer>
                
<classified>1</classified>
                
<eligibility>0</eligibility>
            
</item>
            
<item title="三级标题2.3.2" id="item_4">
                
<result type="2">1</result>
                
<officer><![CDATA[]]></officer>
                
<classified>1</classified>
                
<eligibility>0</eligibility>
            
</item>
        
</items>            
    
</project>
    
<project title="一级标题3" index="3">
        
<items isTrunk="false" title="二级标题3.1" id="items_4">
            
<result type="4" units="元">25345</result>
            
<officer><![CDATA[sinoly]]></officer>
            
<classified>1</classified>
            
<eligibility>0</eligibility>
        
</items>
        
<items isTrunk="false" title="二级标题3.2" id="items_5">
            
<result type="4" units="元">9865764</result>
            
<officer><![CDATA[]]></officer>
            
<classified>1</classified>
            
<eligibility>0</eligibility>
        
</items>
        
<items isTrunk="false" title="二级标题3.3" id="items_6">
            
<result type="2">0</result>
            
<officer><![CDATA[]]></officer>
            
<classified>1</classified>
            
<eligibility>0</eligibility>
        
</items>
        
<items isTrunk="true" title="二级标题3.4">
            
<item title="三级标题3.4.1" id="item_5">
                
<result type="1">0</result>
                
<officer><![CDATA[]]></officer>
                
<classified>1</classified>
                
<eligibility>0</eligibility>
            
</item>
            
<item title="三级标题3.4.2" id="item_6">
                
<result type="1">0</result>
                
<officer><![CDATA[]]></officer>
                
<classified>1</classified>
                
<eligibility>0</eligibility>
            
</item>
            
<item title="三级标题3.4.3" id="item_7">
                
<result type="1">0</result>
                
<officer><![CDATA[]]></officer>
                
<classified>1</classified>
                
<eligibility>0</eligibility>
            
</item>
        
</items>
    
</project>
</projects>

2.example.xsl--样式文件,很方便的取到xml数据

<?xml version="1.0" encoding="gb2312"?>

<xsl:stylesheet version="1.0"   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    
<!--根模板-->    
    
<xsl:output method="xml"/>

    
<xsl:template match="/">    
        
<xsl:apply-templates select="projects/project"/>
        
<h6>
            
<button type="submit" class="btn1_mouseout" onmouseover="this.className='btn1_mouseover'" onmouseout="this.className='btn1_mouseout'" title="提交"> 下一步</button>
        
</h6>
    
</xsl:template>
    
    
<!--主题模板-->
    
<xsl:template match="project">
        
<TABLE border="0" cellspacing="0" cellpadding="0" class="table">
            
<tr>
                
<td colspan="5" align="center" class="tright">
                    
<h2>
                        
<xsl:number value="position()" format="一、"/><xsl:value-of select="@title"/>
                    
</h2>
                
</td>
            
</tr>
            
<xsl:apply-templates select="items"/>
        
</TABLE>
        
<BR/>
    
</xsl:template>
    
    
<!--一级题干模板-->
    
<xsl:template match="items">
        
<tr>
            
<td colspan="2" class="tright">
                
<xsl:number value="position()" format="1."/><xsl:value-of select="@title"/>
            
</td>
            
<xsl:choose>
                
<xsl:when test="@isTrunk[.='false']">
                    
<xsl:apply-templates select="result"/>
                    
<xsl:apply-templates select="officer"/>
                
</xsl:when>
                
<xsl:otherwise>
                    
<td colspan="3" class="tright" style="color:blue;font-weight:bolder">
                        注意以下几点
                    
</td>
                    
<xsl:apply-templates select="item"/>
                
</xsl:otherwise>
            
</xsl:choose>
        
</tr>
    
</xsl:template>
    
        
<!--二级题干模板-->
    
<xsl:template match="item">

      
<tr>
        
<td class="tright" style="padding-left:20px" colspan="2">
            
<h4><xsl:number value="position()" format="(a)."/><xsl:value-of select="@title"/></h4>
        
</td>
            
<xsl:apply-templates select="result"/>
            
<xsl:apply-templates select="officer"/>
      
</tr>
    
</xsl:template>
    
    
<!--选择框模板-->
    
<xsl:template match="result">
                    
<xsl:choose>
                        
<xsl:when test="@type = '1'">
                            
<td width="15%">
                            
<xsl:element name="select">
                                
<xsl:attribute name="name">re_<xsl:value-of select="../@id"/></xsl:attribute>
                                
<!--<select name="select">-->
                                    
<xsl:choose>
                                        
<xsl:when test=".='0'">
                                            
<option value="0" selected="selected">请选择 </option>
                                            
<option value="1">符合</option>
                                            
<option value="2">基本符合</option>
                                            
<option value="3">不符合</option>
                                        
</xsl:when>
                                        
<xsl:when test=".='1'">
                                            
<option value="0">请选择 </option>
                                            
<option value="1" selected="selected">符合</option>
                                            
<option value="2">基本符合</option>
                                            
<option value="3">不符合</option>
                                        
</xsl:when>
                                        
<xsl:when test=".='2'">
                                            
<option value="0">请选择 </option>
                                            
<option value="1">符合</option>
                                            
<option value="2" selected="selected">基本符合</option>
                                            
<option value="3">不符合</option>
                                        
</xsl:when>
                                        
<xsl:when test=".='3'">
                                            
<option value="0">请选择 </option>
                                            
<option value="1">符合</option>
                                            
<option value="2">基本符合</option>
                                            
<option value="3" selected="selected">不符合</option>
                                        
</xsl:when>                                        
                                    
</xsl:choose>
                                    
<!--</select>-->
                                
</xsl:element>
                            
</td>
                        
</xsl:when>
                        
<xsl:when test="@type = '2'">
                            
<td width="15%">
                                
<xsl:element name="select">
                                
<xsl:attribute name="name">re_<xsl:value-of select="../@id"/></xsl:attribute>
                                    
<xsl:choose>
                                        
<xsl:when test=".='0'">
                                            
<option value="0" selected="selected">请选择 </option>
                                            
<option value="1"></option>
                                            
<option value="2"></option>
                                        
</xsl:when>
                                        
<xsl:when test=".='1'">
                                            
<option value="0">请选择 </option>
                                            
<option value="1" selected="selected"></option>
                                            
<option value="2"></option>
                                        
</xsl:when>
                                        
<xsl:when test=".='3'">
                                            
<option value="0">请选择 </option>
                                            
<option value