拐弯抹角的解决Share站XSLT+XML搜索引擎收录问题

正如我之前所说的,XSLT+XML的站点无论从结构上而言还是从实际运用来说,都是非常理想化的一个东西..当然,也很好..但是有个非常实际的问题那就是...

搜索引擎的收录.

Share站还在内部测试的时候,hiei就已经把站点提交到了baidu和Google,但是时至今日,百度的收录条数为1.内容为"<![CDATA[ gundam uc 01 ]]>"毫无意义的一些XML中的字符..而Google则干脆没有收录.

现在基本的功能都完善了,解决share站的搜索引擎检索功能自然成为了当务之急.

于是想到了用PHP来拼接XSLT与XML.

这个函数早在PHP4中就已经存在了,我也一直知道它,但是却从来未用过..只是知道有这么个东西.

今日一试,果然才知道它的强大.

简简单单的几行代码,可以说就是用了XSL类里面ImportStyleSheet方法的示范代码就解决了这个问题.

用DOMDocument类的load方法来载入已经在磁盘中存在的缓冲,然后再同样的载入XSL文件.接着用XSL类的ImportStyleSheet方法拼接二者,再用transformToDoc方法转换拼接结果为DOMDocument,接着最后用saveHTML方法直接Echo出来,任务就完成了.

PHP拼接的结果可以说是非常的完美...包括了XSL里面全部内含的JS文件,以及做的一些小手脚都很精确的展现了出来...其实我原本最初认为它可能做不到这么好的,以为我需要重新写一个较为简单一点的XSL来方便它拼接,没想到这么简单,这么完美...大大出乎了我的意料..orz

最后用$_Sever变量判断客户端的User Agent,判断为是蜘蛛之后就给出合并了之后的页面,而普通用户继续访问XML核心页面..作为服务器端我自然是希望负载越小越好..如果我直接让客户端载入XML文件,我每次就给个不到2K的XML,其余的完全依赖客户端已有的缓冲就可以生成页面了,理想状况下我甚至连一个SQL查询都不需要,这何乐而不为呢?

至此,这个XML+XSL的大难题也算是告一段落了..不过最近听闻到一个消息,那就是StratCraft2的首页也是采用这个架构的...但是很不幸的是,它明显只是看中了XSLT可以比较完美的隐藏页面内容而已,并没有严格的按照"表现与结构分离,数据与表现分离"的模式来构架整个系统,但是在它的系统,特别是XSLT的编写方面,确实有值得可圈可点之处...毕竟我的XSLT也完全没有看过任何正统的教材,也只是去W3School看了看它的基础教程,有个大概的印象而已,真正的用起来其实碰上了非常多的问题,也没有任何的前人可以作为指导者,完全是自己一手摸出来的...现在多看看别人写的东西,也一定能够对自己的思想大有帮助.

评论

此博客中的热门博文

远程记录OpenWRT日志

用OpenWRT打造自动翻墙路由器(详解篇)

Python中为什么要用is None来代替== None?