<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>lizongbo at 618119.com &#187; Xhtml</title>
	<atom:link href="http://618119.com/category/web/xhtml/feed" rel="self" type="application/rss+xml" />
	<link>http://618119.com</link>
	<description>工作,生活,Android,前端,Linode,Ubuntu,nginx,java,apache,tomcat,Resin,mina,Hessian,XMPP,RPC</description>
	<lastBuildDate>Tue, 31 Jan 2012 14:25:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>手机wap网站开发过程中通过dtd校验来检查wap1.0和wap2.0的页面语法</title>
		<link>http://618119.com/archives/2011/08/21/212.html</link>
		<comments>http://618119.com/archives/2011/08/21/212.html#comments</comments>
		<pubDate>Sun, 21 Aug 2011 05:40:06 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Xhtml]]></category>
		<category><![CDATA[dtd]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[WAP]]></category>
		<category><![CDATA[wap1.0]]></category>
		<category><![CDATA[wap2.0]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[手机]]></category>

		<guid isPermaLink="false">http://618119.com/?p=212</guid>
		<description><![CDATA[手机wap网站开发过程中通过dtd校验来检查wap1.0和wap2.0的页面语法 对手机wap网站的wap1.0和wap2.0页面内容进行dtd的校验非常有价值，既可以保证页面对移动终端的兼容性，也能促使开发人员写出高质量的代码。 以前早期在做普通web页面开发的时候，对html的语法一知半解就开搞，标签不闭合，嵌套错误等问题从来没注意过，只管在IE6里打开能正常显示即可， 结果带来的后果就是在页面某个位置需要插入一段新内容时，整个页面就错位了，变得非常难看，也不知道怎么样来搞好，痛苦万分。 后来进行的是wap页面开发，wap页面用的是wap1.0的xml，加上各种山寨手机对wap页面的解析可不像电脑上的浏览器那样可以对错误的写法进行兼容，于是各种兼容性问题就出来了。 因此学会了用m3gate打开页面进行检查，只有m3gate打开时不出错的页面，才能放心的在各种山寨上正常显示而不出错。 再到后来，经过学习和总结，发现m3gate的检查其实和dtd校验的效果是一样的，于是摸索出通过dtd校验来发现标签嵌套错误等问题。 移动终端的发展是日新月异，很快就进入到了wap2.0时代，当然这个时候的手机浏览器对wap2.0的兼容性就好多了。 一些小的错误，也能兼容掉，但是难免也出现莫名其妙的错误，由于wap2.0的xml元素定义用的也还是dtd，因此继续用dtd校验来搞定。 wap1.0和wap2.0的自动化监控校验流程如下： 测试工具访问各个页面，获取对应的xml内容，保存为字符串，然后将页面的dtd声明部分，替换为对应的本地声明映射（这样避免联网获取dtd文件而影响性能）， 生成新的字符串，然后使用java的xml parser进行解析，解析过程中如果有抛出各种异常，那就是把页面内容有错的地方全部揪出来了，再通知开发人员进行页面内容的bug修复。 通常比如img元素缺少alt属性等问题都可以及时发现。 正式环境则通过自动化监控脚本定期访问业务进行检查。 进行dtd校验的相关代码如下： 1.将远程的dtd等实体解析映射到本地的LocalEntityResolver（自动化监控中是通过字符串替换来将dtd的声明替换为本地路径，我是直接通过EntityResolver来进行映射）： [code] package com.lizongbo.xml; import java.io.IOException; import org.xml.sax.EntityResolver; import org.xml.sax.InputSource; import org.xml.sax.SAXException; /** * 将xml组件依赖的远程的schema文件都映射到本地 * * @author lizongbo * */ public class LocalEntityResolver implements EntityResolver { @Override public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { System.out.println("publicId==" [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2011/08/21/212.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>将wml转换成html的方法。</title>
		<link>http://618119.com/archives/2008/09/07/108.html</link>
		<comments>http://618119.com/archives/2008/09/07/108.html#comments</comments>
		<pubDate>Sun, 07 Sep 2008 08:07:56 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Xhtml]]></category>
		<category><![CDATA[FireFox]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[wml]]></category>
		<category><![CDATA[xsl]]></category>

		<guid isPermaLink="false">http://618119.com/archives/2008/09/07/108.html</guid>
		<description><![CDATA[Opera是直接支持wml的，但是有不少bug。 Firefox需要插件wmlbrowser来进行转换。 IE没法直接支持wml显示，但是有个在线转换的工具，通过中间代理的方式来获取内容，再通过js进行转换，效果一般。 今天在查看httpunit相关资料的时候，发现可以通过wmlbrowser的源代码，将wml转换成html，再借助httpunit的html支持， 来实现对wml的支持，因此实现针对wap网站的测试。 简单体验了一下， 首先下载，http://ftp.osuosl.org/pub/mozdev/wmlbrowser/wmlbrowser-0.7.18.xpi。 解压找到 wmlbrowser.jar，在从wmlbrowser.jar\content\wmlbrowser中提取wml.css，wml.js，wml.xsl三个文件。 写一个测试的wml，取名为test.xml 再第一行后面加上： &#60; ?xml-stylesheet href=&#8217;wml.xsl&#8217; type=&#8217;text/xsl&#8217; ? &#62; 编辑 wml.xsl，将 &#60;script type=&#8221;text/javascript&#8221; src=&#8221;chrome://wmlbrowser/content/wml.js&#8221;&#62;// hack&#60;/script&#62; &#60;link href=&#8221;chrome://wmlbrowser/content/wml.css&#8221; rel=&#8221;stylesheet&#8221; type=&#8221;text/css&#8221; /&#62; 改成 &#60;script type=&#8221;text/javascript&#8221; src=&#8221;wml.js&#8221;&#62;// hack&#60;/script&#62; &#60;link href=&#8221;wml.css&#8221; rel=&#8221;stylesheet&#8221; type=&#8221;text/css&#8221; /&#62; 然后保存。 用ie打开test.xml，可以看到wml被正常转换成html了。 由于wml.xsl，wml,js，wml.css是各浏览器通用的，因此照此思路，可以基于ie做一个同样的wmlbrowser插件。 相关参考： http://www.nabble.com/WML-support-for-httpunit-td9558351.html Tags: FireFox, html, Opera, wml, xsl]]></description>
		<wfw:commentRss>http://618119.com/archives/2008/09/07/108.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

