以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 XML源码及示例(仅原创和转载) 』 (http://bbs.xml.org.cn/list.asp?boardid=32) ---- [原创]php+xml+xslt初学笔记 (http://bbs.xml.org.cn/dispbbs.asp?boardid=32&rootid=&id=15354) |
-- 作者:dhlxmy -- 发布时间:3/10/2005 4:56:00 PM -- [原创]php+xml+xslt初学笔记 php+xml+xslt初学笔记 近日研究php+xml+xslt的使用,查阅些许资料,特写一下笔记! 1.配置 拷贝php/dlls目录下的下列文件到windows/system32下 修改extension_dir指向正确的extension目录 其实就是加载php_sablot模块 3.测试开始了 这是一个php文件,他能够直接将数据库中的东西,转化成xml输出,暂命名test.php <?php class CMySqlXML { var $host; var $user; var $password; var $db; function CMySqlXML($host, $user, $password, $db) { $this->host = $host; $this->user = $user; $this->password = $password; $this->db = $db; } function run_sql_return_xml($sql_string) { $connection = mysql_connect($this->host, $this->user, $this->password,$this->db); mysql_select_db($this->db); $result = mysql_query($sql_string); //结果集 $doc = domxml_open_mem("<root/>"); //创建一个dom对象 while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $num_fields = mysql_num_fields($result); //取得列数 $row_element = $doc->create_element(mysql_field_table($result, 0)); //创建表名的元素 $doc_root = $doc->document_element(); //确定root为文档根元素 $row_element = $doc_root->append_child($row_element); //添加列名元素到根文档 $text_node = $doc->create_text_node(iconv("gb2312","utf-8",$row[$field_name])); //值 为了显示方便特用iconv进行转码 } } mysql_free_result($result); mysql_close($connection); //return htmlspecialchars($doc->dump_mem(false)); } 在这里我对xslt和css做一下比较,有利于大家理解xslt CSS同样可以格式化XML文档,那么有了CSS为什么还需要XSLT呢?因为CSS虽然能够很好的控制输出的样式,比如色彩,字体,大小等,但是它有严重的局限性,就是: (1) CSS不能重新排序文档中的元素; (2) CSS不能判断和控制哪个元素被显示,哪个不被显示; (3) CSS不能统计计算元素中的数据; 换句话说,CSS只适合用于输出比较固定的最终文档。CSS的优点是简洁,消耗系统资源少;而XSLT虽然功能强大,但因为要重新索引XML结构树,所以消耗内存比较多。 因此,我们常常将它们结合起来使用,比如在服务器端用XSLT处理文档,在客户端用CSS来控制显示。可以减少响应时间。 <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <table border="2" bgcolor="yellow"> <tr> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="root/astro"> <tr> <td><xsl:value-of select="astroid"/></td> <td><xsl:value-of select="start_date"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> 最后当然就是将xml和xsl进行整合,转化成html输出了,一下是php文件 //store xmlString in an array using a key '/_xml' echo(xslt_process($xh, 'arg:/_xml', $xslfile, NULL, $arguments)); xslt_free($xh); 以上一个简单的php+xml+xsl的程序就生成了。是一个数据表格 如果将$xslfile = "htdocs/xml/test.xsl"; 改成file_get_contents方式获取,程序就变成以下方式 <?php //store xmlString in an array using a key '/_xml' echo(xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments)); xslt_free($xh); 运行的结果也是一样,先写到这里,接下去,准备仔细了解一下xslt,东西不少,有的研究的。
|
-- 作者:anchen0617 -- 发布时间:3/21/2005 12:30:00 PM -- 收藏了 |
-- 作者:东北星空 -- 发布时间:3/30/2005 4:24:00 PM -- 拷贝php/dlls目录下的下列文件到windows/system32下 expat.dll sablot.dll 两个文件与php.ini中的 extension=php_sablot.dll 文件名不一样呵 报错 无法加载此.dll 改名也不好使阿 与版本有关系么 我的php是 4。3。10 的
|
-- 作者:feitianshu -- 发布时间:3/30/2005 5:39:00 PM -- 谢了....正想找这个 |
-- 作者:东北星空 -- 发布时间:3/30/2005 6:13:00 PM -- 楼上的你用着好使么 快给俺讲讲啊 |
-- 作者:twttwt -- 发布时间:4/18/2005 4:19:00 PM -- 管他好不好用,收了再说 |
-- 作者:thq -- 发布时间:4/20/2005 10:22:00 PM -- 楼主你的php的版本是多少?我的503的根本不支持php_xslt,然后自带的php_xsl居然没有函数,晕死。结果我只能用exec来调用xslt文档转换xml,郁闷死 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
4,816.406ms |