xsl学习2
??? ??
?
????? 在一个大型的项目中往往用到好几种开发语言,例如C# Java? PHP 。。。
那么如何更好更方便的实现这几种语言之间的相互通讯和结合呢,我下面来介绍一种新的模式,当然已经有很多人用过,但我还是要罗嗦一下:
???? 通过XML进行交互,每种语言设计的对象类都可以转化为内存中的xml对象,然后每种语言都可以对xml对象进行操作与交互。
???? 最近做了一个项目就是改造以前的程序提升性能,由于以前页面上的构造非常乱而且杂,有从Mysql数据库取数据的,也有从SqlServer数据库取数据的,而且数据库分布在多个服务器上,由于每个项目组之间的协调不够所以在读取数据上有读取重复数据的情况,大大浪费了资源。一个页面上访问数据库很多次,所以造成访问速度非常慢。
??? 我们现在设计了一个模式,就是一次性从数据库加载所有的数据然后转化为内存中的xml对象,然后用xsl对数据包装转化为一个带有样式的Html,当然xsl可以支持所有的Js中变量都一次性打到页面上以便使用。
????
1、在xsl中定义变量,用xpath取出数据,然后可以在用于显示的地方进行调用
<xsl:variable?name="curUserID"?select="Data/ME/BasicInfo/UserID"/>
<xsl:value-of?select="$curUserID"/>
2、xsl也可以像导入控件一样来引入另一个xsl?
<xsl:include?href="lovetype.xsl"/>
3、条件语句的使用
?????????<xsl:if test="$oppGender='true'">男</xsl:if>
?????????<xsl:if test="$oppGender='false'">女</xsl:if>
$oppGender代表一个变量,值为true or? false
这里的if语句没有else部分,要想使用else只能用when
语法如下:
?<xsl:choose>??????????? <xsl:when test="expression">
??????????? ... some output ...
??????????? </xsl:when>
??????????? <xsl:otherwise>
??????????? ... some output ....
??????????? </xsl:otherwise>
??????????? </xsl:choose>
?
4、for-each 循环语句
<xsl:template?match="/">?
?????<TABLE>?
??????????<xsl:for-each?select="//car">?
???????????????<xsl:sort?data-type="text"?select="@id"/>?
???????????????<TR>?
????????????????????<TH>?
?????????????????????????<xsl:text>Car-</xsl:text>?
?????????????????????????<xsl:value-of?select="@id"/>?
????????????????????</TH>?
???????????????</TR>?
??????????</xsl:for-each>?
?????</TABLE>?
</xsl:template>
select 是选取的xml文件的符合条件的节点集合