xml xslt 全国省市县三级树型列表

 

觉得这篇文章很适合我们学习,转来一学

 

XSLTFile.xsl文件

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

<xsl:stylesheet version="1.0"
    xmlns:xsl="
http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="//province">
    <xsl:param name="id" select="@id"/>
    <div style="cursor:hand" οnclick= "D{$id}.style.display=='none'?D{$id}.style.display='block':D{$id}.style.display='none'; S{$id}.innerHTML=='+ '?S{$id}.innerHTML='- ':S{$id}.innerHTML='+ '">
      <span id="S{$id}" >+ </span>
      <xsl:value-of select="@name"/>
    </div>
    <div id="D{$id}" style="display:none">
      <xsl:for-each select="city">
        <xsl:variable name="cid" select="@id"></xsl:variable>
        <xsl:choose>
          <xsl:when test="@id!=''">
            <div style="margin-left:30px; cursor:hand" οnclick= "F{$cid}.style.display=='none'?F{$cid}.style.display='block':F{$cid}.style.display='none'; Z{$cid}.innerHTML=='+ '?Z{$cid}.innerHTML='- ':Z{$cid}.innerHTML='+ '">
              <span id="Z{$cid}" >+ </span>
              <xsl:value-of select="@name"/>
            </div>
          </xsl:when>
          <xsl:otherwise>
            - <xsl:value-of select="@name"/><br />
          </xsl:otherwise>          
        </xsl:choose>
        <div id="F{$cid}" style="display:none; margin-left:60px;">
          <!--第一个地区-->
          <xsl:value-of  select="substring-before(@area,',')"/>
          <br />
          <xsl:variable name="area-i" select="substring-after(@area,',')"></xsl:variable>
          <xsl:call-template name="area">          
          </xsl:call-template>         
          <br />
        </div>
      </xsl:for-each>     
    </div>      
  </xsl:template>
 
  <xsl:template name="area">
    <xsl:param name="area-i" select="substring-after(@area,',')"/>
    <xsl:if test="contains($area-i,',')">
      <xsl:value-of select="substring-before($area-i,',')"/>
      <br />
      <xsl:call-template name="area">
        <xsl:with-param name="area-i" select="substring-after($area-i,',')"/>
      </xsl:call-template>
    </xsl:if>
    <!--最后一个地区-->
    <xsl:if test="not(contains($area-i,','))">
      <xsl:value-of select="$area-i"/> 
    </xsl:if>
   
  </xsl:template>

</xsl:stylesheet>

CityList.xml文件

?xml version="1.0" encoding="gb2312" ?>
<?xml-stylesheet type="text/xsl" href="XSLTFile.xsl"?>
<country name="中国">
  <province id="110000" name="北京市">
    <city id="110100" name="北京" area="东城区,西城区,崇文区,宣武区,朝阳区,丰台区,石景山区,海淀区,门头沟区,房山区,通州区,顺义区,昌平区,大兴区,怀柔区,平谷区,密云县,延庆县">
    </city>
  </province>
  <province id="120000" name="天津市">
    <city id="120100" name="天津" area="和平区,河东区,河西区,南开区,河北区,红桥区,塘沽区,汉沽区,大港区,东丽区,西青区,津南区,北辰区,武清区,宝坻区,宁河县,静海县,蓟 县">
    </city>
  </province>
 <province id="130000" name="河北省">
   <city id="130100" name="石家庄" area="长安区,桥东区,桥西区,新华区,井陉矿区,裕华区,井陉县,正定县,栾城县,行唐县,灵寿县,高邑县,深泽县,赞皇县,无极县,平山县,元氏县,赵 县,辛集市,藁城市,晋州市,新乐市,鹿泉市">
   </city>
   <city id="130200" name="唐山" area="路南区,路北区,古冶区,开平区,丰南区,丰润区,滦 县,滦南县,乐亭县,迁西县,玉田县,唐海县,遵化市,迁安市">
   </city>
   <city id="130300" name="秦皇岛" area="海港区,山海关区,北戴河区,青龙满族自治县,昌黎县,抚宁县,卢龙县">
   </city>
   <city id="130400" name="邯郸" area="邯山区,丛台区,复兴区,峰峰矿区,邯郸县,临漳县,成安县,大名县,涉 县,磁 县,肥乡县,永年县,邱 县,鸡泽县,广平县,馆陶县,魏 县,曲周县,武安市">
   </city>
   <city id="130500" name="邢台" area="桥东区,桥西区,邢台县,临城县,内丘县,柏乡县,隆尧县,任县,南和县,宁晋县,巨鹿县,新河县,广宗县,平乡县,威县,清河县,临西县,南宫市,沙河市">
   </city>
   <city id="130600" name="保定" area="新市区,北市区,南市区,满城县,清苑县,涞水县,阜平县,徐水县,定兴县,唐县,高阳县,容城县,涞源县,望都县,安新县,易县,曲阳县,蠡县,顺平县,博野县,雄县,涿州市,定州市,安国市,高碑店市">
   </city>
   <city id="130700" name="张家口" area="桥东区,桥西区,宣化区,下花园区,宣化县,张北县,康保县,沽源县,尚义县,蔚县,阳原县,怀安县,万全县,怀来县,涿鹿县,赤城县,崇礼县">
   </city>
   <city id="130800" name="承德" area="双桥区,双滦区,鹰手营子矿区,承德县,兴隆县,平泉县,滦平县,隆化县,丰宁满族自治县,宽城满族自治县,围场满族蒙古族自治县">
   </city>
   <city id="130900" name="沧州" area="新华区,运河区,沧县,青县,东光县,海兴县,盐山县,肃宁县,南皮县,吴桥县,献县,孟村回族自治县,泊头市,任丘市,黄骅市,河间市">
   </city>
   <city id="131000" name="廊坊" area="安次区,广阳区,固安县,永清县,香河县,大城县,文安县,大厂回族自治县,霸州市,三河市">
   </city>
   <city id="131100" name="衡水" area="桃城区,枣强县,武邑县,武强县,饶阳县,安平县,故城县,景县,阜城县,冀州市,深州市">
   </city>
 </province>

</country>

 

效果:

 

 

 

 

http://www.3gput.com/forum.php?mod=viewthread&tid=141&page=1&extra=#pid219  

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值