| 프로필Asdcer사진블로그리스트 | 도움말 |
|
2005-08-24 xml常见问题A.概述性问题
A.1 什么是XML? XML 全称是“可扩展标识语言“(Extensible Markup Language)。之所以称之为可扩展,是因为它不像HTML 那样只有固定的形式。它是被用来使SGML 能在万维网上能应用自如。 XML并不是一个独立的,预定义的标识语言。它是一种元语言。它是用来描述其他语言的语言。它允许你自己设计你的标识。(HTML 是一种预定义的标识语言。HTML 只是在一类特定的文件中定义了一种描述信息的方法。而XML 能允许你在不同的文件中定义你自己设计的标识语言。)这是因为XML 是用SGML (“通用标识语言标准”国际标准的标识元语言)书写的。 A.2 XML的目的是什么? XML是被设计用来使SGML 能在万维网上能自如应用的:方便地定义文件类型,方便地制作和管理用SGML定义的文件,在网上方便地传输和共享这些文件。 A.3 什么是SGML? SGML的全称是“Standard Generalized Markup Language“(通用标识语言标准)。它是国际上定义电子文件结构和内容描述的标准。在往上有以下相关资源: SGML FAQ: http://www.infosys.utas.edu.au/info/sgmlfaq.txt SGML 主页: http://www.oasis-open.org/cover/sgml-xml.html A.4 什么是HTML? HTML的全称是“HyperText Markup Language “(超文本标识语言)。它是SGML在网络上的一个特殊应用。 A.5 XML,SGML,HTML是不是一回事? 不竟然。SGML是XML和HTML的母语言。SGML的覆盖面很广。它几乎涉及人们生活的每一个领域。它被用来描述成千上万中文件。HTML只是其中一种文件类型,是一种在网上最常用的类型。它定义了一种简单而固定且含标识的文件类型。 XML是SGML的简化版。为了实现更加方便地编写和理解应用程序,更加方便地在网络上传输信息,更加方便地实现互操作性,XML申略了一些SGML中复杂和不常用的部分。但XML还能和SGML一样通过解析。 A.6 SGML/XML 和C/ C++?什么不同? C和C++和Fortran, Pascal, Basic, 或是Java一样都是编程语言。是用来制定运算和操作的。 而SGML和XML标是说明性的语言。它们是用来表现信息的。它们使得信息能被程序正常地存储传输和处理。就它们本身而言,并不能产生什么操作。操作要由应用程序来实现。 A.7 是由谁负责XML? XML是W3C(World Wide Web Consortium 万维网络联盟)的一个项目。XML不是任何一家公司的私有财产。 A.8 为什么XML是一项重要的技术? 应为它解决了两个制约网络发展的问题: 1.基础是单一固定的文件类型。(HTML); 2.完整的SGML过于复杂。 A.9 为什么不只是扩展HTML? 不同的厂家在开发HTML时产生了许多有趣但却不兼容的发明。这已使HTML不堪重负。因为这使得你只能用一种方法表现你的信息。XML却允许许许多多的个人与组织来创造他们自己的标识语言。应用这些标识语言他们可以在自己的领域内自由地交换信息。HTML在表现信息方面是有缺陷的。当然我们必须承认它现在仍然扮演着重要的角色。但许多新的应用领域需要更加强大和灵活的工具。 B.SGML的使用(包括HTML的各种浏览器) B.1 为什么我们要推荐XML而不主张HTML? 1.我们可以用XML设计自己的文件类型。 2.信息的内容将更加丰富,更加方便使用。在XML中超文本链接的能力比HTML更强。 3. XML能使得浏览器的表现形式更加丰富。 4.处理XML文件比.处理SGML文件来得简单。信息的开放性和重复使用的性能斗将提高。 5.合法(Valid 参见D中Valid与-formed)的XML文件在SGML中也是合法的。 B.2 我是不是必须由SGML或是HTML转向XML? 不是的。现存的SGML和HTML的应用软件仍能正常处理现有的文件。 C. SGML 和HTML的编写 C.1 XML是否已取代了HTML? 没有。XML并没有取代HTML。它只是给了你一种新的选择。HTML将仍在一段时间内广泛地被使用。HTML的DTD(参见C中DTD)将既有XML版本,又有SGML版本。但XML版本更加简单。 C.2 XML文件是怎样的? 它的基本结构和SGML和HTML差不多。XML文件可以非常简单。它可以不需要文件类型说明,而直接就是你自己设计的内嵌式标识。如下面一段代码: <?xml version="1.0" standalone="yes"?> <conversation> <greeting>Hello, world!</greeting> <response>Stop the planet, I want to get off!</response> </conversation> 当然它也可以更加复杂些。如DTD声明,内嵌子集,等等: <?xml version="1.0" standalone="no" encoding="UTF-8"?> <!DOCTYPE titlepage SYSTEM "http://www.frisket.org/dtds/typo.dtd" [<!ENTITY % active.links "INCLUDE">]> <titlepage> <white-space type="vertical" amount="36"/> <title font="Baskerville" size="24/30" alignment="centered">Hello, world!</title> <white-space type="vertical" amount="12"/> <!-- In some copies the following decoration is hand-colored, presumably by the author --> <image location="http://www.foo.bar/fleuron.eps" type="URL" alignment="centered"/> <white-space type="vertical" amount="24"/> <author font="Baskerville" size="18/22" style="italic">Vitam capias</author> </titlepage> C.3 是不是HTML有一个XML版本? 已经有好几个HTML的XML版本,但都只是在准备阶段,并未完成。 C.4 既然说XML是SGML的子集,我能不能用SGML的工具直接处理XML文件? 是的.而且非常简单。一个结构完整的XML文件和HTML文件非常相像。当然也有一些小的而且是重要的不同。在实际操作当中最大的不同就是XML文件必须摇遵守一定的法则。HTML的浏览器可以允许一些小的错误。而如果是XML就行不通了。 C.5 什么是DTD?我能在哪儿找到? DTD的全称是“Document Type Definition“(文件类型定义)。具体地说,DTD是一个或是一些用XML书写的文件。它包含了对一种文件的正式定义。它定义了文件中的元素能用什么名字,能放在什么位置,应该怎样组合。在这里举一个简单的例子。比如说你想要你的文件可以描述一组<List>,其中每个<List>由可以包含若干个<Item>。那么你的DTD中应该有以下语句:<!ELEMENT List (Item)+> <!ELEMENT Item (#PCDATA)> 这样一个框架定义了一个表(list),它可以包含若干个项(items)。每一个项只能包括文本的内容。当处理器处理XML文件时将自动检查DTD,以此确定文件中元素从哪而来,以及它们之间是什么关系。上面的框架允许你生成下面的一个表: <List><Item>Chocolate</Item><Item>Music</Item><Item>Surfing</Item></List> 而这样一个表在屏幕上是怎样一个表象,取决于你的样式表(Stylesheet)。在HTML中你要在文件中指定应是怎样的形式。使用DTD表明你能够确定一类文章的结构和格式。 要想找一个DTD看看吗?实际上,各个领域里的SGML DTD由成千上万。你可以参看SGML 的网页。 C.6 我总是听说DTD的替代者Schema,它到底是什么? 有许多XML的开发者并不满意XML的规范。原因有两点: 1.既然XML在说明结构信息是有很多好处,那么用来描述文件类型的结构的文件(这就是Schema)为什么不是也用XML书写的呢?这样做的好处不光是统一,而且便于用正规的文件工具编辑管理Schema。 2.过去的DTD对数据的限制不够。比如说你想要一个元素只取负值,或是必须有一个值,DTD很难做到。 C.7 我能用XML作算术运算吗? 只要你的文件类型提供算术类型,知识可以的。W3C已经有了一个MathML(Mathematical Markup Language数学标识语言)的计划。清参看W3C最新(1999年7月)发布的MathML规范。 C.8 在XML中,我能使用Java, ActiveX吗? 这取决于浏览器制造者运用的工具. XML是用来描述信息的; 描述性语言和用来描述内嵌函数功能的语言的目的是使得信息能在客户端被操作.. XML本身提供了一种定义标识的方法,而这些标识是描述性语言所必需的. XML是一个中立的标准.他不支持或是反对任何一种描述性语言.所以说它是一个开放的领域. 描述性语言是在”Extensible Style Language”XSL (可扩展类型语言).计划中提出的. C.9 我能用Java编写或是管理XML文件吗? 可以.我们可以用任何一种编程语言从任何一种XML格式的信息中提取数据. D.高级开发者和应用者(包括网络管理员和服务器操作人员) D.1哪儿可以找到XML的规范? 请参见: http://www.w3.org/TR/REC-xml D.2 "DTDless" ,"valid",和"well-formed"这些术语是什么意思? 在完整的SGML中,我们用DTD描述特定文件中的各种标识.但DTD的生成是一件极其复杂的工作.所以XML被设计成可以缺省DTD. DTDless表示您可以创造一个标识而不需正式的定义.当然这也要付出代价.您不能在其他的文件中对同样的形式采用自动的处理. DTDless的文件是以一种非正式的方式定义它的标识的.标识是在哪儿出现的就在哪儿定义它.但当一个比方说是浏览器的XML应用程序打开了一个DTDless的文件,它必须要有办法来理解文件的结构.但它又没有DTD,所以规则上有了一些改变. 举一个例子: HTML中的<img> 是被定义为”EMPTY”(空)的.它并不需要”end-tag”(结尾标签). DTD 的XML应用程序在打开一个缺省DTD. 的文件,读到<img>时不知道是否需要一个”end-tag”.所以”well-formed”(结构良好)的定义也变得重要了. ”well-formed”可以使得一般元素和”EMPTY”元素区分开来. D.2.1 ”well-formed”(结构良好的)文件 1.如果一个文件没有DTD,它必须在开头处有一个"Standalone Document Declaration"(独立文件声明): <?xml version="1.0" standalone="no" encoding="UTF-8"?> <foo> . <bar> ...<blort/>...</bar> </foo> 2.除了空素以外, 标记必须前后匹配. 3.所有的”attribute”值都要用引号括起来. 4. ”EMPTY”元素的tag要么用”/>”结尾,要么要补成”non-EMPTY”(非空)的元素. 比如说: <BR>要么写为<BR/> 或是<BR></BR> 5.文件中必须不能出现”markup-start “(标识开始符), 比如”<”或是“&”. 6.元素必须遵守SGML的规则,正确嵌套. D.2.2”Valid “(合法的)XML 合法的XML是指有DTD的文件.它必须是”well-formed”的. D.3 在DTD中,我什么时候用属性, 什么时候用元素? 这并没有唯一的答案.着取决于您设计文件的风格.以下是两个极端的例子,它们的功能是一样的: 1. <l n="184"><sp>Portia</sp><text>The quality of mercy is not strain’d,</text></l> 2. <line speaker="Portia" text="The quality of mercy is not strain’d">184</line> D.4 SGML 和XML之间还有什么区别? 主要的区别在于DTD的内容.为了简化语法和编写软件的过程, XML中对SGML做了很大缩减. D.5 现在有哪些XML的软件可以使用? 由于更新速度太快,我们建议您参看: http://www.oasis-open.org/cover/xml.html. D.6 要使用XML,我是否要改变服务器的软件? 要的,但改动不大.您只要编辑您的mime-types文件,加上以下一句: application/xml xml XML 经典问答 一.HTML已经这样流行了,为什么还要发展XML? xml应用实例 本文介绍3个XML的基本应用实例,旨在带领你快速步入XML编程世界。实例包括:在.NET中使用XML、读取XML文件,插入数据到XML文档中。 xml的应用是什么?xml到底能做什么? 首先说,xml的技术有两项的很显著的特点。 ok 是不是一目了然。 我谈一下我工作的xml经验 在中文上就写一个显示中文的xsl, 如果不用这种技术,将会很麻烦的。
2005-08-23 留言板原文链接:过去<-->现在<-->未来
大家试试我的新留言板,在第一行输入你的名字,然后在第二行输入你的留言,再点击“send”发送即可。如果写错了,那么你有一分钟的时间删除你的留言,只需点击你的留言下的“delete”即可。想查看以前的留言,请点击“Archive”。另外发现解决中文乱码的方法,即每输入两个字,按一下空格键,然后再输入就可以了,试试看吧!
您 是 第
位 访 客
源码如下:
<DIV>
<DIV style="LINE-HEIGHT: 14pt; LETTER-SPACING: 0.2em"> <DIV>大家试试我的新留言板,在<FONT color=#ff6600>第一行</FONT>输入你的名字,然后在<FONT color=#ff6600>第二行</FONT>输入你的留言,再点击“<FONT color=#ff6600>send</FONT>”发送即可。如果写错了,那么你有一分钟的时间删除你的留言,只需点击你的留言下的“<FONT color=#ff6600>delete</FONT>”即可。想查看以前的留言,请点击“<FONT color=#ff6600>Archive</FONT>”。另外发现解决中文乱码的方法,即每输入两个字,按一下空格键,然后再输入就可以了,试试看吧!</DIV> <DIV align=center><IFRAME style="WIDTH: 346px; HEIGHT: 321px" src="http://313666.myshoutbox.com/" width=345 height=321></IFRAME></DIV></DIV> <DIV> <DIV style="TABLE-LAYOUT: auto; DISPLAY: block; LEFT: 590px; LINE-HEIGHT: 14pt; LETTER-SPACING: 0.2em; TOP: 126px; BORDER-COLLAPSE: separate" align=right><FONT color=#ff9900>您 是 第 </FONT></DIV> <DIV style="TABLE-LAYOUT: auto; DISPLAY: block; LEFT: 640px; LINE-HEIGHT: 14pt; LETTER-SPACING: 0.2em; TOP: 126px; BORDER-COLLAPSE: separate" align=right><FONT color=#ff9900><A href="http://www.statcounter.com/" target=_blank><IMG height=17 alt="web hit counter" src="http://c2.statcounter.com/counter.php?sc_project=549622&java=0" width=77 align=center border=0></A></DIV> <DIV style="TABLE-LAYOUT: auto; DISPLAY: block; LEFT: 720px; LINE-HEIGHT: 14pt; LETTER-SPACING: 0.2em; TOP: 126px; BORDER-COLLAPSE: separate" align=right><FONT color=#ff9900>位 访 客</FONT></DIV></FONT></DIV></DIV> wattblue.css:
/* theme (C) SL
* wattblue.css * */ a:link{ color : #000000; text-decoration : underline; } a:visited{
color : #000000; text-decoration : underline; } a:hover{
color : #000000; text-decoration : underline; } a:active{
color : #C4E1FF; text-decoration : underline; } body{
background-color : #FFFFFF; font-family : Verdana, Arial, Helvetica, sans-serif; font-size : xx-small; scrollbar-base-color : #F2F9FF; scrollbar-arrow-color : #000000; scrollbar-track-color : #FFFFFF; } .SB_alert {
color : #FF0000; font-family : Verdana, Arial, Helvetica, sans-serif; font-size : xx-small; font-weight : bold; } .SB_button {
background : #F2F9FF; border : 1 solid #000000; color : #000000; font-family : Verdana, Arial, Helvetica, sans-serif; font-size : 9px; font-weight : bold; } .SB_input {
background : #FFFFFF; border : 1 solid #000000; color : #000000; font-family : Verdana, Arial, Helvetica, sans-serif; font-size : 10px; } .SB_formarea {
background-color : #FFFFFF; border-bottom-color : #C4E1FF; border-bottom-style : solid; border-bottom-width : 1; border-left-color : #C4E1FF; border-left-style : solid; border-left-width : 1px; border-right-color : #C4E1FF; border-right-style : solid; border-right-width : 1px; border-top-color : #FFFFFF; border-top-style : solid; border-top-width : 1px; color : #000000; font-size : 10px; } .SB_shoutbox {
color : #000000; font-family : Verdana, Arial, Helvetica, sans-serif; font-size : xx-small; text-align : left; } .SB_table0 {
background-color : #F2F9FF; border-bottom-color : #FF0000; border-bottom-style : solid; border-bottom-width : 0; border-left-color : #C4E1FF; border-left-style : solid; border-left-width : 1px; border-right-color : #C4E1FF; border-right-style : solid; border-right-width : 1px; border-top-color : #FF0000; border-top-style : solid; border-top-width : 0px; color : #000000; font-size : xx-small; } .SB_table1 {
background-color : #FFFFFF; border-bottom-color : #C4E1FF; border-bottom-style : solid; border-bottom-width : 1; border-left-color : #C4E1FF; border-left-style : solid; border-left-width : 1px; border-right-color : #C4E1FF; border-right-style : solid; border-right-width : 1px; border-top-color : #C4E1FF; border-top-style : solid; border-top-width : 1px; color : #000000; font-size : xx-small; } blink;
2005-08-22 正则表达式中的特殊字符字符/
意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释。 例如:/b/匹配字符’b’,通过在b 前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示 匹配一个单词的分界线。 或者: 对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释。 例如:*是一个特殊字符,匹配任意个字符(包括0个字符);例如:/a*/意味匹配0个或多个a。为了匹配字面上的*,在a前面加一个反斜杠;例如:/a*/匹配’a*’。 字符^ 意义:表示匹配的字符必须在最前边。 例如:/^A/不匹配"an A,"中的’A’,但匹配"An A."中最前面的’A’。 字符$ 意义:与^类似,匹配最末的字符。 例如:/t$/不匹配"eater"中的’t’,但匹配"eat"中的’t’。 字符* 意义:匹配*前面的字符0次或n次。 例如:/bo*/匹配"A ghost booooed"中的’boooo’或"A bird warbled"中的’b’,但不匹配"Agoat g runted"中的任何字符。 字符+ 意义:匹配+号前面的字符1次或n次。等价于{1,}。 例如:/a+/匹配"candy"中的’a’和"caaaaaaandy."中的所有’a’。 字符? 意义:匹配?前面的字符0次或1次。 例如:/e?le?/匹配"angel"中的’el’和"angle."中的’le’。 字符. 意义:(小数点)匹配除换行符外的所有单个的字符。 例如:/.n/匹配"nay, an apple is on the tree"中的’an’和’on’,但不匹配’nay’。 字符(x) 意义:匹配’x’并记录匹配的值。 例如:/(foo)/匹配和记录"foo bar."中的’foo’。匹配子串能被结果数组中的素[1], ...,[n] 返 回,或被RegExp对象的属性, ..., 返回。 字符x│y 意义:匹配’x’或者’y’。 例如:/green│red/匹配"green apple"中的’green’和"red apple."中的’red’。 字符{ n } 意义:这里的n是一个正整数。匹配前面的n个字符。 例如:/a{ 2 }/不匹配"candy,"中的’a’,但匹配"caandy," 中的所有’a’和"caaandy."中前面的两个’a’。 字符{ n, } 意义:这里的n是一个正整数。匹配至少n个前面的字符。 例如:/a{ 2, }不匹配"candy"中的’a’,但匹配"caandy"中的所有’a’和"caaaaaaandy."中的所有’a’ 字符{ n,m } 意义:这里的n和m都是正整数。匹配至少n个最多m个前面的字符。 例如:/a{ 1,3 }/不匹配"cndy"中的任何字符,但匹配 "candy,"中的’a’,"caandy," 中的前面两个 ’a’和"caaaaaaandy"中前面的三个’a’,注意:即使"caaaaaaandy" 中有很多个’a’,但只匹配前面的三 个’a’即"aaa"。 字符[xyz] 意义:一字符列表,匹配列出中的任一字符。你可以通过连字符-指出一个字符范围。 例如:[abcd]跟[a-c]一样。它们匹配"brisket"中的’b’和"ache"中的’c’。 字符[^xyz] 意义:一字符补集,也就是说,它匹配除了列出的字符外的所有东西。 你可以使用连字符-指出一 字符范围。 例如:[^abc]和[^a-c]等价,它们最早匹配"brisket"中的’r’和"chop."中的’h’。 字符 意义:匹配一个空格(不要与b混淆) 字符b 意义:匹配一个单词的分界线,比如一个空格(不要与混淆) 例如:/bnw/匹配"noonday"中的’no’,/wyb/匹配"possibly yesterday."中的’ly’。 字符B 意义:匹配一个单词的非分界线 例如:/wBn/匹配"noonday"中的’on’,/yBw/匹配"possibly yesterday."中的’ye’。 字符cX 意义:这里的X是一个控制字符。匹配一个字符串的控制字符。 例如:/cM/匹配一个字符串中的control-M。 字符d 意义:匹配一个数字,等价于[0-9]。 例如:/d/或/[0-9]/匹配"B2 is the suite number."中的’2’。 字符D 意义:匹配任何的非数字,等价于[^0-9]。 例如:/D/或/[^0-9]/匹配"B2 is the suite number."中的’B’。 字符f 意义:匹配一个表单符 字符n 意义:匹配一个换行符 字符r 意义:匹配一个回车符 字符s 意义:匹配一个单个white空格符,包括空格,tab,form feed,换行符,等价于[ fnrtv]。 例如:/sw*/匹配"foo bar."中的’ bar’。 字符S 意义:匹配除white空格符以外的一个单个的字符,等价于[^ fnrtv]。 例如:/S/w*匹配"foo bar."中的’foo’。 字符t 意义:匹配一个制表符 字符v 意义:匹配一个顶头制表符 字符w 意义:匹配所有的数字和字母以及下划线,等价于[A-Za-z0-9_]。 例如:/w/匹配"apple,"中的’a’,".28,"中的’5’和"3D."中的’3’。 字符W 意义:匹配除数字、字母外及下划线外的其它字符,等价于[^A-Za-z0-9_]。 例如:/W/或者/[^$A-Za-z0-9_]/匹配"50%."中的’%’。 字符n 意义:这里的n是一个正整数。匹配一个正则表达式的最后一个子串的n的值(计数左圆括号)。 例如:/apple(,)sorange1/匹配"apple, orange, cherry, peach."中的’apple, orange’,下面有一个更加完整的例子。 注意:如果左圆括号中的数字比n指定的数字还小,则n取下一行的八进制escape作为描述。 字符ooctal和xhex 意义:这里的ooctal是一个八进制的escape值,而xhex是一个十六进制的escape值,允许在一个正则表达式中嵌入ASCII码 附:下表是元字符及其在正则表达式上下文中的行为的一个完整列表: 字符 描述
2005-08-19 [转载]MSN SPACES 推出新的功能模块!原文链接:云清雾淡™
昨天浏览高手的空间,发现MSN SPACES 在8月添加了3个新的功能模块,这些功能都是极其实用的且大家都翘盼已久的功能哦.
1:Windows media player 播放模块:
有了这个模块,再不用为背景音乐置顶发愁了,支持wma,wav,mp3格式的音乐,wmv,avi,mpg,mpeg格式的视频。
2:可编辑的html模块:
模块内可以加入512字节以内的代码,而且代码的限制跟日志的限制是一样的.大家可以在此放入计数器等.计数器置顶的问题也迎刃而解.当然也可以放入置顶音乐,只是没有现在的Windows media player 播放模块方便且有控制条.总之这个模块是很有潜力的,只是可放入的代码长度太短.
3:自定义页面外观Tweak UI模块 :
这个功能太棒了,可以自定义首页页面的外观,包括背景色,背景图片等.这样大家可以让自己的BLOG变得更有个性.每个主题都有各自的优缺点,这下好了,你可以DIY自己的主题了!!即使用同一个主题,也有不同的风格!但要注意的是,起作用的仅仅是首页的外观风格,当你单独的进入一篇日志时,仍然是你所选主题的默认风格.
不过你如果要使用到上述功能,你会发现进入编辑状态后,在模块组里根本找不到这些功能模块.确实挺郁闷的,既然要给人用,还要遮遮掩掩的,呵呵,开玩笑,可能是出于什么考虑吧.
进入页面右侧顶部的"编辑您的共享空间",在浏览器地址栏的末尾接着打入相应的地址,注意是紧随原来的地址打入,然后回车浏览,进入"自定义"---"模块",你就会发现已经出现了相应的模块,你只需添加即可.
浏览器地址栏的末尾接着打入相应的地址分别为:
Windows media player 播放模块: &powertoy=musicvideo
可编辑的html模块: &powertoy=sandbox
自定义页面外观Tweak UI : &powertoy=tweakomatic
☞ More:如何使用?
|
|||||
|
|