24Jul

[置顶]博客程序第n次更新!

评论:3 分类:杂七杂八 点击:2708
这又是一个从零开始写起的版本,从2006年开始,已经记不清有多少次更新,多少回修改。期间还用过PJBlog,也尝试过php+mysql,每一次更新都是一次改进,都是积累一段时间的集中爆发。这次的版本最大变动是页面使用 xsl 模板技术,页面所有数据都通过 xml 装载,然后在服务器把 xml 与 xsl 转换为 html。查看详细»
04Sep

抬头练习

评论:0 分类:小陶陶 点击:22

RSS(Really Simple Syndication) 是标准的 XML 文档,wiki上可以找到它完整的文档,这里不再赘述。RSS大概是 1999 年 3 月被正式提出的,但很少有人关注。 3年后 IE6 发布,并迅速占领了市场,不知何原因,IE6 并不原生支持 RSS(估计是自大成性的MS从未关注过RSS),这也导致 RSS 一直被雪藏,直至 Firefox 的崛起,2005年开始 RSS 才流行开来。面对国内大量的 IE6,如何正常显示 RSS,而不是直接呈现 XML 代码呢?

最有效的方法是使用 XSL 模板。IE5.5+ 后就支持使用 XSL 渲染 XML 数据了(顺便赞一下微软中国团队开发的MSXML组件)。 RSS 本身就是一个标准的 XML 文件,我们只要做一个 XSL 文件,并通过 XML 处理指令链接 XSL 文件,IE6 就会根据 XSL 来呈现 XML 数据。

只需在 RSS 的版本定义 <?xml version="1.0" encoding="utf-8"?> 后增加一行:

查看详细»
14Aug

用 Schema 约束 XML 数据

评论:1 分类:XML技术 点击:166
XML 是严格又自由的标记语言。我们都习惯于它的自由特性,自己想怎么定义都行,设计上非常自由,从不会因为它的标记特性约束到设计灵感的发挥。对于其严格特性,很多人的认识只停留在“标签的开始与结束必须一致,且不能错位嵌套”。本文主要想举例子来体现XML的严格特性。

举个例子,总公司需要收集所有子公司每个月份的销售数据(XML格式),这些子公司有些是收购来的,有些子公司产品具有地域特性与产品特性,这些子公司的销售数据不太一致。总公司为了收集这些数据,制定了一套约束数据的规则(Schema),子公司的数据只要通过有效性约束,就可以存入总公司的数据库。下面穿插一段从百度百科来的关于 Schema 的简介:
Schema是用于描述和规范XML文档的逻辑结构的一种语言,它最大的作用就是验证XML文件逻辑结构的正确性。可以理解成与DTD(文档类型定义)功能差不多,但是Schema在当前的WEB开发环境下优越很多。因为它本身就是一个有效的XML文档,因而可以更直观地了解XML的结构。除此之外,Schema支持命名空间,内置多种简单和复杂的数据类型,并支持自定义数据类型。由于存在这么多的优点,所以Schema渐渐成为XML应用的统一规范。

通过上述文字,可以看到 Schema 就是为了约束 XML 而设计的,它本身也是使用 XML 实现的(这是它比DTD更优秀的一个重要原因)。总公司通过设计一套严格的数据约束规范,就可以保证最终进入数据库的数据格式完整统一,可以生成有效的财务报表。

查看详细»
12Aug

使用 XMLSPY 设计项目的 Schema 原型

评论:0 分类:XML技术 点击:169
XMLSPYAltova 公司的 XMLSPY 是个不可多得的好东西,它几乎可以开发所有的 XML 产品。最近用它来做 Schema 的设计,感觉真的爽极了,它既直观地描述了还在大脑中的原型,又为日后的开发提供严格的约束,比其他的 XMind、Visio 等灵感图都实用。下面举一个例子,这是一般企业内部使用的邮件模型(仅单条邮件记录的原型):

查看详细»
首先说明,伪造访问来路不是什么光明正大的事情,目的就是为了欺骗服务器。原本以为给 XMLHTTP 对象增加一个 Referer 的header 就可以,结果却没有任何作用,改用 ServerXMLHTTP 也如此。

无意间发现公司内部项目使用的 paypal 扣款程序里面有 WinHttp.WinHttpRequest.5.1 对象,它负责把客户的信用卡信息提交到 paypal 的服务器,看来是一个核心的远程访问方法,google一下发现它居然用可以成功伪造所有 http 请求的 header 信息!下面的代码通过伪造 referer 的值,假装从百度首页提交一个表单到指定的 url 去:
var url = "http://www.yourtarget.com";
var param = "name=david&age=30";
var obj = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
obj.Open("POST", url, false);
obj.Option(4) = 13056;
obj.Option(6) = false; //false可以不自动跳转,截取服务端返回的302状态。
obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
obj.setRequestHeader("Referer", "http://www.baidu.com");
obj.Send(param);
WScript.Echo(obj.responseText);
查看详细»
页码: 1 2