博文

目前显示的是标签为“XSL”的博文

XSL继续学习

继续总结一些XSL中比较实用的经验: 1.多用用属性比直接增加节点来的方便,也更加爱节约流量,但是属性中无法增加CDATA,所以必要的节点还是必要的 2.在XSL中所有的HTML必须要转义,特别用的多的有&要写成&amp,空格应当写成&#160; 3.输出XSL中的CDATA必须要用到JS才可以跨浏览器 <div id="test"><xsl:value-of disable-output-escaping="yes" select="//node"/></div> <xsl:if test="system-property('xsl:vendor')='Transformiix'"> <script language="JavaScript"> var el = document.getElementById("test"); el.innerHTML = el.lastChild.data; </script> </xsl:if> 其实很简单的一个东东,从上面的一个节点处取得这个节点的值,然后用innerHTML方法把它塞回元素里面,于是就能完整显示了,上面那个if test="system-property('xsl:vendor')='Transformiix'"其实是在测试浏览器是否是FF,因为IE直接就用disable-output-escaping="yes"这个属性让HTML直接输出了.

昨天被捣鼓死了...

一直在捣鼓IE 6.0下的表现问题,因为盒模型的问题结果导致IE 6和IE 7显示效果不同. 结果是:IE 7=FF 2=Opera 9.2的显示效果,IE 6是独立独行... 试过了N种CSSHack甚至IE才能识别的CSS选择器,结果发现...无效... 加上还需要远程求人帮忙调试,真是痛苦无比,到最后才发现这个地方: http://browsers.evolt.org/?ie 基本上涵括了全部版本的IE浏览器的绿色版下载...调试者的福音啊~ 解决了调试困难的问题,开始专注于表现问题.. 试过了无数的方法,理论上其实用!important属性就应该可以搞定的,因为IE 7已经修正了这个属性了,理论上它的表现应该是等同于FF了,但是实际中我发现,他的表现竟然和IE 6一样的...半拉子糟糕.. 什么叫半拉子糟糕,意思就是说可以识别,但是还是没用...比如: div{ color: #FFF !important; color: #000; } 在IE 7和IE6中均识别为#000,而FF和Opera可以顺利识别为#FFF 但是如果这样写: div{ color: #FFF !important; } div{ color: #000; } 那么,在IE 6和IE7中均识别为#FFF... 呵呵,可能专业人士要发话了,"这怎么可能!",但是我发现就是可能的,在处理XHTML的时候确实没有这个问题,但是在处理XSL的时候...就变成了这样的半拉子状况.. 而且类似*+HTML,*DIV,_#,*HTML,这类的可以用在HTML中的Hack统统在XSL中失效了... 绞尽脑汁没结果的状况下,我决定利用已知的BUG,把IE 7和IE 6的表现统一,然后再用important属性来区分IE系列和其他浏览器...结果,把宽度改为100%,把float属性去掉,用margin居中...竟然就OK了...然后对FF使用important让width变为auto...世界就这样和谐了... 简直是无语...白白浪费了我一个晚上的时间...

继续学习充电

图片
这次是关于Tab标准化布局的心得...之前发现怎么样也无法吧表格之间的间隙去掉,无论怎么样做出来的都是双线的表格,后来发现原来是要这样解决: tab的属性: border-collapse:collapse; border-color:#999999; 内部表格的属性: border: 1px solid #999999; 这样就OK了,还害得我捣鼓半天.. 还有就是关于PHP直接echo出XML文件的问题,现开始直接echo怎么都无法输出XML文档,输出格式都是正确的,但是浏览器并不识别为XML,后来终于发现...原来是Header的原因.只要在PHP的输入头文件修改Header就好了,语句是: header('Content-Type: text/xml'); 这样就不需要PHP 4.x的版本打开一些特殊的XML类来生成类了,直接echo就好了,但是解析还是存在问题就是了...不过解析也可以用正则来完成的...具体可以查看IBM站的这帖,写的很基础 http://www.ibm.com/developerworks/cn/opensource/os-xmldomphp/ 现在所需要做的就是实现鼠标移动到对应表格之后的浮动效果了... 结果找到这么一个站: http://www.dyn-web.com/ 实在是太强大了...orz JS原来还可以实现这么多功能...我算是开了眼界了...以后看来需要恶补一下JS的编写了..orz 不过美中不足的是,有加密....不允许使用在非Localhost的站点上..不过JS最多也就是一个16进制的加密而已,随便就搞定了,上网,找了一个JS的16进制转换器,OK了~ 这个是存档,下载这张图片然后把扩展名改为RAR即可解压.. 另外就是在XSL中加载JS文件和直接写入JS的问题.. 加载要使用: <script src="'"></script> 而直接写入JS需要: <script langauge="'"> <![CDATA[ ..................... ]]> </script> 有些地方会画蛇添足的给中间再加上XSL的注释,但是这样的话FF反到不能识别了(FF是矫枉过正..内...

XML+XSL学习...

其实就是在一步一步的学习XSL了... 第一个是发现编码的问题....页面编码要指定为UTF-8的话,除了改变XML的编码之外,同时,XSL的头应该这样写: <xsl:stylesheet version="1.0" xsl="http://www.w3.org/1999/XSL/Transform"> 不可以加那个 <xsl:output version="'1.0'" method="'html'" encoding="'UTF-8'" indent="'yes'/"> 具体原因不明 再就是处理换行的问题,最佳的解决方式: xml: hello world hello csdn 对应的xsl: <xsl:stylesheet version="1.0" xsl="http://www.w3.org/1999/XSL/Transform";> <xsl:template match="/"> <html> <body> <xsl:apply-templates select="根/内容"> </body> </html> </xsl:template> <xsl:template match="br"> <xsl:copy-of select="."> </xsl:template> </xsl:stylesheet> 其实就是定义了一个特殊的模板来匹配br字符,然后在对应所需要转换换行的地方使用这个模板就好了