XML指南-转义字符

[不指定 2007/06/25 17:27 | by ipaddr ]

解析数据
XML 解析器通常情况下会处理XML文档中的所有文本。

当XML元素被解析的时候,XML元素内部的文本也会被解析:

<message>This text is also parsed</message>


XML解析器这样做的原因是XML元素内部可能还包含了别的元素,象下面的例子,name元素内部包含了first和last两个元素:

<name><first>Bill</first><last>Gates</last></name>
 

解析器会认为上面的代码是这样的:

<name>
<first>Bill</first>
<last>Gates</last>
</name>

--------------------------------------------------------------------------------

转义字符
不合法的XML字符必须被替换为相应的实体。

如果在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该象下面那样书写代码:

<message>if salary < 1000 then</message>

为了避免出现这种情况,必须将字符"<" 转换成实体,象下面这样:

<message>if salary &lt; 1000 then</message>


下面是五个在XML文档中预定义好的实体:

&lt; < 小于号
&gt; > 大于号
&amp; & 和
&apos; ' 单引号
&quot; " 双引号

实体必须以符号"&"开头,以符号";"结尾。

注意: 只有"<" 字符和"&"字符对于XML来说是严格禁止使用的。剩下的都是合法的,为了减少出错,使用实体是一个好习惯。


--------------------------------------------------------------------------------

CDATA部件
在CDATA内部的所有内容都会被解析器忽略。

如果文本包含了很多的"<"字符和"&"字符——就象程序代码一样,那么最好把他们都放到CDATA部件中。

一个 CDATA 部件以"<![CDATA[" 标记开始,以"]]>"标记结束:

<script>
<![CDATA[
function matchwo(a,b)
{
if (a < b && a < 0)
then
 { return 1 }
else { return 0 } }
]]>
</script>

 


在前面的例子中,所有在CDATA部件之间的文本都会被解析器忽略。

CDATA注意事项:
CDATA部件之间不能再包含CDATA部件(不能嵌套)。如果CDATA部件包含了字符"]]>" 或者"<![CDATA[" ,将很有可能出错哦。

同样要注意在字符串"]]>"之间没有空格或者换行符。

在Windows 2000环境中安装PEAR

[不指定 2007/06/24 23:36 | by ipaddr ]
一、什么是PEAR

  PEAR是PHP Extension and Application Repository(PHP扩展与应用库)的缩写。PEAR为PHP用户提供了一套基本类库,在编写PHP程序时通过调用相关的PEAR类可以简化我们的工作量。举个很简单的例子,比如我在程序中想把数据库中的数据通过Web页面的条件设定,抽取相应的数据转存到Excel表格里。要完成这个任务,在以前可不是很容易办到的,还好现在有了PEAR,通过调用PEAR里面的Spreadsheet类,我们可以在很短的时间实现对Excel的写操作。长话短说,还是开始尽快我们的PEAR安装之旅吧。
64位Linux系统下,源码编译时,有时会无法链接libmysqlclient库:

/usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.so when searching for -lmysqlclient
/usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.a when searching for -lmysqlclient

请将Makefile里面的
-L/usr/lib/mysql
改为
-L/usr/lib64/mysql

---------------
或者:
----------------
# cd /usr/lib
# mv lib lib.bak
# ln -s /usr/lib64/mysql /usr/lib/mysql
# tar -jxvf httpd-2.2.3.tar.bz2
# cd httpd-2.2.3
# ./configure LDFLAGS="-L/usr/lib64 -L/lib64" --enable-so --enable-rewrite --enable-cgi
# vi ./srclib/apr-util/Makefile


APRUTIL_LIBS = -lsqlite3 /usr/lib/libexpat.la /root/tar/httpd-2.2.3/srclib/apr/libapr-1.la -luuid -lrt -lcrypt -lpthread -ldl
改为
APRUTIL_LIBS = -lsqlite3 /usr/lib64/libexpat.la /root/tar/httpd-2.2.3/srclib/apr/libapr-1.la -luuid -lrt -lcrypt -lpthread -ldl

# make
# make install
# cd /usr/local/apache2/
# ./bin/apachectl -k start

在浏览器中输入
http://127.0.0.1/
如果能够看到
It works!
则表示安装成功
如果是在64位Linux系统上,很多RPM包会有x86_64和i386两个,使用rpm -qa|grep ipaddrxxx类似的命令会查询出两个包:
rpm -qa|grep ipaddr

如果要删除,不可以直接使用:
rpm -e ipaddr

而必须使用:
rpm -e ipaddr.version.arch
[mysql]Table tblName is marked as crashed and should be repaired

Mysql提示tblName表格已损坏,需要修复:
进入到对应的数据库目录:
cd /var/lib/mysql/dbname
使用myisamchk修复:
shell> myisamchk -r tblName
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]