为WordPress创建固定链接并去除固定链接中的index.php并指定文件和目录不被重写

        利用Windows搭建WordPress网站的朋友应该会发现这样一个问题:在默认情况下,WordPress会将你的固定链接结构设置为类似http://www.tonitech.com/?p=1856的结构,这个结构无法受到搜索引擎的欢迎,很多博主为了给自己的博客带来更多的流量都会对此稍做加工。想要修改固定链接结构也非常简单,可以从您的管理面板 (设置 → 固定链接)来完成。

20130305015530

        在固定链接设置的页面中,如果使用的是非默认固定链接,会被强制加上一个index.php。为了网站的美观和SEO优化的效果,建议大家移除index.php,本文提供的方法是需要你的空间支持mod_rewrite的,方法如下:

如果你是Windows服务器+IIS的,你新建一个httpd.ini或者在原有的httpd.ini中加入:

[ISAPI_Rewrite]
RewriteRule ^/$ /index.php [L]
RewriteRule /(.*) /index.php/$1 [L]

保存后,上传至WordPress程序所在的根目录,如果不行,也许你的空间服务商需要手动加载httpd.ini将它转换成.htaccess格式的文件,请及时联系你的空间服务商。

或者,你创建一个.htaccess文件,加入以下代码:

RewriteEngine On
RewriteCompatibility2 On
RepeatLimit 32
RewriteBase 
#  3600 = 1 hour
# unsupported directive: CacheClockRate 3600
#  Protect httpd.ini and httpd.parse.errors files
#  from accessing through HTTP
#  Rules to ensure that normal content gets through
RewriteRule ^/sitemap.xml$ /sitemap.xml [L]
RewriteRule ^/favicon.ico$ /favicon.ico [L]
#  For file-based wordpress content (i.e. theme), admin, etc.
RewriteRule ^/wp-(.*)$ /wp-$1 [L]
#  For normal wordpress content, via index.php
RewriteRule ^/$ /index.php [L]
RewriteRule ^/(.*)$ /index.php/$1 [L]

接下来你就可以去设置你的固定链接了,设置→固定链接,选中“自定义结构”,我在输入框中输入的是:/%post_id%.html,这样原来http://www.tonitech.com/?p=1856的地址就会变成http://www.tonitech.com/1856.html,你也可以根据你的喜好自定义。

如果你使用了本文的.htaccess配置设置了固定链接,可能会遇到你的网站根目录下的图片或者目录无法访问的问题,那么你可以根据你的情况。例如一个叫做sitemap.html的文件被重写了找不到了,你就得在.htaccess中加一句:

RewriteRule ^/sitemap.html$ /sitemap.html [L]

如果你有一个叫做so的目录被重写了找不到了,你就得在.htaccess中加一句:

RewriteRule ^/so(.*)$ /so$1 [L]

这样可以保证so目录下所有的文件都不会被重写。

CSS兼容性总结

1.如何将元素垂直居中显示
position:absolute;
left:50%;
top:50%;
margin-top:-13px;
margin-left:-58px;
width:116px;
height:25px;
z-index:999999;
父级要定高
2.IE6里面居中问题
1.定位了,用left,margin-left
2.未在文件开头声明<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
3.有可能是后台语言传输数据到前端页面时出现编码问题,导致前端页面布局混乱。
body{
text-align:center;
}
解决
3.text-indent: -9999px; 测过ff和chrome下都正常,但是在ie下由于样式的综合作用,button元素会随着text-indent的值移走。
显示情的况有两种: 一种:整个button都不见了(display:inline-block;) 二种:button上的文字依然在(display:block;)
我们需要为ie这样写:
text-indent:-9999px; 
text-transform:capitalize;
这样就都兼容了。
另外一种方式
text-indent:0; 
line-height:0; 
font-size:0; 
overflow:hidden; 
...
4.如何解决Inline-Block元素的空白间距
更新:全兼容的样式解决方法
经过高人指点,使用纯CSS还是找到了兼容的方法,就是在父元素中设置font-size:0,用来兼容chrome,而使用letter-space:-N px来兼容safari:
.finally-solve { 
letter-spacing: -4px;
/*根据不同字体字号或许需要做一定的调整*/ 
word-spacing: -4px; 
font-size: 0; 
}

.finally-solve li { 
font-size: 16px; 
letter-spacing: normal; 
word-spacing: normal; 
display:inline-block; 
*display: inline; 
zoom:1; 
}
5.最终得到select的最佳设置的值:
select{
height:22px; 
line-height:18px; 
padding:2px 0;
font-size: 12px;
}
  • 取消chrome下input和textarea的聚焦边框:
input,button,select,textarea{
outline:none
}
  • 如何解决Inline-Block元素的空白间距

更新:全兼容的样式解决方法

经过高人指点,使用纯CSS还是找到了兼容的方法,就是在父元素中设置font-size:0,用来兼容chrome,而使用letter-space:-N px来兼容safari:

.finally-solve { 
letter-spacing: -4px;
/*根据不同字体字号或许需要做一定的调整*/ 
word-spacing: -4px; 
font-size: 0; 
}

.finally-solve li { 
font-size: 16px; 
letter-spacing: normal; 
word-spacing: normal; 
display:inline-block; 
*display: inline; 
zoom:1; 
}
  • table的圆角设置

如果你想给表格设置圆角效果,那么最好在你的表格中加上下面的样式

table { 
*border-collapse: collapse; 
/* IE7 and lower */ 
border-spacing: 0; 
border-radius: 5px; 
}
  • 表单Button的Outline问题
:focus {
outline:none;
} /*for IE*/ 

::-moz-focus-inner {
border-color: transparent;
} /*for mozilla*/
onfocus=this.blur()
  • 表单Button的行高问题
#button { 
border: 2px solid #06f; 
color: #06f; 
background-color: #6cf; 
font: bold 12px Arial, Helvetica, sans-serif; 
padding: 18px 6px; 
}

这种办法让文本处在button的中心位置,虽然不是很理想,但我们又无法使用line-height来让他在中心点位置,不知道您有没有更好的方法。

  • input 按钮在IE下兼容问题
input.form-submit { 
-webkit-border-radius: 3px; 
border-radius: 3px; 
border: 1px solid #469021; 
background: #64A246; 
color: #fff; 
font:bold 11px arial,sans-serif; 
padding: 0.25em 0.5em; 
text-transform: uppercase; 
height: 27px; 
line-height: 19px; 
margin: 0; 
overflow: visible; 
width: auto; 
*width: 1; 
}

也就是我在以前的基础上增加了以下几行代码

input.form-submit { 
height: 27px;
//设置行高是为了解决Safari和Chrome下的高度问题 
line-height: 19px;
//让文字居中显示 
margin: 0; 
overflow: visible;
//只有设置这个属性IE下padding才能生效 
width: auto;
//现代浏览器下识别 
*width: 1;
//IE7和IE6识别,设置值为1,我也不知道有何作用,但有些人此处设置值为0 
}

对于字居中的问题,不仅受行高影响,而且还受其字体,字号的影响

  • 所有浏览器下的CSS透明度

元素透明度时常是个恼人的问题,下面这种方式可以实现所有浏览器下的透明度设置:

.transparent { 
zoom: 1;
filter: alpha(opacity=50); 
opacity: 0.5; 
}

但是使用opacity会影响其后代元素的透明度,我们可以考虑使用:

.transparent { 
/* Fallback for web browsers that doesn't support RGBa */ 
background: rgb(0, 0, 0); 
/* RGBa with 0.6 opacity */ 
background: rgba(0, 0, 0, 0.6); 
/* For IE 5.5 - 7*/ 
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); 
/* For IE 8*/ 
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; 
}
  • ::selection

有很多朋友肯定不知道这个属性的作用。它可以改变选择的文本的背景色和前景色,突出你的浏览器中的选择文本效果:

::selection { 
color: #000000; 
background-color: #FF0000; 
} 

::-moz-selection { 
color: #000000; 
background: #FF0000; 
}
  • IE版本选择

gt(greate than):选择条件版本以上版本,不包含条件版本本身;

lt(less than):这个刚好与gt相反,表示的是选择条件版本以下的版本,不包含条件版本自身;

gte(greate than or equal):选择条件版本以上版本,并包含条件版本自身;

lte(less than or equal):选择条件版本以下的版本,并包含条件版本自身;

!:选择条件版本以外所有版本,无论高低

  • 关于Border的写法

如果您想定义div的四个边的颜色不同,而粗细和样式都一样,您可以这样写:

div.border2 { 
border:1px solid; 
border-color:color1 color2 color3 color4 
}

四种颜色依次是上,右,下,左的颜色

  • 兼容所有的浏览器都可以显示半透明效果的写法
.alpha50 {
filter: alpha(opacity=50); 
/* 支持 IE 浏览器 */
-moz-opacity: 0.5; 
/* 支持 FireFox 浏览器 */
opacity: 0.5; 
/* CSS标准.该属性支持firefox, Safari和 Opera */
}
  • 打印样式

使用media指令引入两种CSS:打印版本的css和屏幕显示的css

我们可以使用page-break-after,page-break-before控制打印时的分页

  • 100%的高度

为了让 < div id=”content” >< /div > 容器自动延伸到整个页面的高度,我们需要告诉和容器高度应为整个页面的高度。

html { 
min-height: 100%; 
_height:100%; 
}

body { 
margin: 0; 
padding: 0; 
min-height: 100%; 
_height:100%; 
}

#content { 
padding: 0 20px 0 20px; 
margin: auto; 
font: 1.5em arial, verdana; 
width: 960px; 
min-height: 100%; 
_height:100%; 
}
  • 跨浏览器的盒阴影效果实例页面
.shadow {
-moz-box-shadow: 3px 3px 4px #000;
-webkit-box-shadow: 3px 3px 4px #000;
box-shadow: 3px 3px 4px #000;
/* For IE 8 */
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000')";
/* For IE 5.5 - 7 */
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color='#000000');
}
  • 哀悼日网站灰化CSS代码
html{
filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
}
  • cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以
  • 文字打散
.p1{ 
word-break:break-all; 
width:150px;
}/*只对英文起作用,以字母作为换行依据*/

.p2{ 
word-wrap:break-word; 
width:150px;}/*--只对英文起作用,以单词作为换行依据*/

.p3{
white-space:pre-wrap; 
width:150px;
}/*只对中文起作用,强制换行*/

.p4{
white-space:nowrap; 
width:10px;
}/*强制不换行,都起作用*/

.p5{
white-space:nowrap; 
overflow:hidden; 
text-overflow:ellipsis; 
width:100px;
}/*不换行,超出部分隐藏且以省略号形式出现*/
word-break:break-all;只对英文起作用,以字母作为换行依
word-wrap:break-word; 只对英文起作用,以单词作为换行 white-space:pre-wrap; 只对中文起作用,强制换行
white-space:nowrap; 强制不换行,都起作用
white-space:nowrap; overflow:hidden; text-overflow:ellipsis;不换行,超出部分隐藏且以省略号形式出现
注意,一定要指定容器的宽度,不然的话是没有用的。
  • 浏览器的等宽空格
其实做设计的真的是不容易的,要不断地满足客户的要求。有时候觉得这就是噩梦,有时觉得这是一个很好的锻炼。通过解决客户的问题提示自我价值,或许这是一种成长吧。今天我就遇到一个问题,要实现如下的布局。其实这是一个很简单的问题,加&nbsp 就ok了吧。加好后在IE下面一看,ok的,在其他浏览器下面看的时候就变样了。我很伤心,这让我如何是好啊?可以不加吗?于是就在百度搜索解决办法,网上说解决的办法主要有2种,我试了结果都是不行的。而且很奇怪,大家都是转载同一篇文章。百度没有结果。于是在群里咨询,可能是问题描述不清楚吧,还是没有得到好的解决的办法。于是请教了牛人大漠,“这号有点不一样吧 慢慢调 或者你使用inline-block 两端对齐 看看有没有效果 ”。inline-block,瞬间灵感来了。最初我用的方法是设置一个空的span width:2em,一直没有想要的结果,发现span 是行内元素,不能设置宽度,那用display:block呢,结果建材的材换行了,这是肯定的啊。郁闷。就是没有想到 inline-block,嗨。。。
<li att="jjyp">家居用品</li>
<li att="qchpj">汽摩配件</li>
<li att="jc">建<span style="width:2em; display:inline-block"></span>材</li>
  • IE6 支持min-height
.min_h{
min-height:100px; 
height:auto !important; 
/*现代浏览器内容超过100px的时候会自动获得高度*/ height:100px; 
/*ie6 会自动撑起*/ 
}

min_h{ 
min-height:100px; 
height:100px;}

html > body .min_h{
height:auto
}
  1. 绚丽、高亮的PSD,切成大的图片,必要时候position:absolute,如高校模拟炒股的登录页面
  2. 不要为了快速完成任务,一个新的项目而用别人不好维护的样式,这样带来后期的维护世界将更多,如高校模拟炒股5个步骤的页面
  3. 内容不确定的地方最好做成自适应 inline-block是比较好的选择,注意各大浏览器的间隙
  4. 当按钮很多的并且都是圆角,而且表现都是一样的时候,最好做成自适应和渐性增强,这样就没有必要切下每个按钮,效果可以模仿新浪,把一个按钮一分为2,在结合inline-block
  5. 当页面要用很多的小图标的时候,存成png24,png8的时候很有可能有锯齿,具体可以将图标拉入浏览器看下,如果真要png8的话,可以拼图的时候存成png8.最好的解决办法是ie6存成gif,其他浏览器用png24,同时备份拼好的png文件,命名方式(例如:icon_index20120712.png)
  6. 导航要竖直排列的时候,可以用<br />,如高校模拟炒股的学校管理的左侧导航就是惨痛的教训
  7. 用了width的block元素,不要给width加hack
  8. 真的当每个页面切下图标都很多时,又不想边做边拼图的,可以想对没有页面的图标进行分类,分别存在每个文件夹中
  9. common.css中的样式有涉及每个页面的布局时,最好最这个项目的所有的效果图进行分析,是不是真的可以用common
  10. css命名什么 mian_r mian_l 存在语义问题的慎用
  11. 每次切图的源文件要备份
  12. 切图的时候要多考虑一些状态,当该部分的内容不存在要显示什么,按钮点击是不是该弹出提示框什么的等等
  13. dom结构和css最好都是可以扩展的,要可以适应后期设计图的不断改动
  14. 当PD后期对页面有修改的时候,要让PD发邮件确认,以备后期责任找不到“证据”
  15. 每次做的项目都要备份源文件,并用结束时间+项目名称,(例如:20120722问股)命名并存入存放往来的项目文件中去
  16. 稍微大点或者前景长远的项目,要用css模块快去布局
  17. 做项目的时候,最好不定期给自己备份,最好是本地弄一个版本控制,防止误删造成不可弥补的遗憾
  18. 每做完一个项目要对项目中用到的新技术和一些问题的解决办法进行总结,如果有在网上查阅解决办法把这个网页存入到书签work/项目名称中,方便后期写总结和查阅。将心得写入Wiz笔记中去,讲解决办法写到WebProject\solutions中去,同时写好项目总结
  19. 形成一套属于自己的css命名体系,并写成文档
  20. 一个新的项目开始切图的时候要跟美工确认下字体,字体颜色,按钮的一些状态,页面的交互,方便模块化提取
  21. 拼图标的时候用PS的网格,方面后期的维护跟后期图标修改,小图标是padding写样式的话,竖直拼图;紧凑拼图的可以使用sina加 img用透明图片加样式的方法;圆角切图可以使用把按钮切成2个部分,此方法很多有名的网站都在使用,妙哉

PHP编码规范(建议)

命名规则

函数命名

函数采用驼峰命名规则。一般采用

actionDescribeTarget

的形式。

例如:

getInternalName

getName

getValue

 

动作的名称使用匹配的方法规则。以下是常用的配对

get/set

from/to

init/uninit

add/remove

避免采用value(),name()这类语义不清的函数名。

 

对于缩写,推荐仅首字母大写。例如

parseXmlText

而不采用

parseXMLText.

 

对于类中的protected以及private函数,加前导线’_’例如

protected function _intertnalInit(){}

 

类命名

一般命名规则为class MyClassName,即所有首字母大写。

 

类库命名

采用以下命名规则:

类库名_Abstract_名称_类型_Interface

例如:

Zend_Session_Adapter_Interface

Zend_Session_Namespace

 

文件的目录则为

Zend/Session/Adapter/Interface.php

一般的功能类,不使用下划线分割。

 

文件命名

文件命名和类命名相似。

例如:

MyFileName.php

 

变量命名

局部变量

建议采用驼峰命名法。

例如:

$errCode

也可以采用简单的

$error

 

类的内部变量

采用前导下划线声明,采用驼峰命名法。例如

class A

{

static private $_instance;

}

 

书写规则

脚本声明

Php代码使用<?php的头声明,不得使用<?头声明。

对于非嵌入网页的脚本,不得使用?>尾部声明。防止另外追加的空格或者回车影响输出。

文件编码

除非有特殊原因,所有文件都应该使用utf-8编码,并且尽量避免中英文混排。

缩进

代码缩进采用4个字符空格的tab键

大括号规则

对于类、函数声明采用以下格式,首大括号另起一行。

class A

{
}

 

function B()

{
}

 

对于if/else/switch/while等判断条件语句,首大括号不另起一行。

if (){

}

else{

}

while(){

}

switch(){

case 0:

break;

default:

break;

}

的方式。

 

判断

是/非判断:

不能使用

if (true == judge()){

}

这样的判断,而应该使用

if (judge()){
}

同样

if (false == judge()){

}

也是不能使用的方法。应该写作:

if (!judge()){

}

除非必须判断强等于时,例如

if (false === judge()){
}

则可以使用。

注释

文件、函数、类应该有完整注释。

 

文件注释:

文件注释用于描述文件的信息。一般包括以下内容:

文件名       可以包含完整路径

作者         作者名字,email地址

创建时间      发布文件的时间

文件说明

修改历史      文件修改的历史记录

 

/**

* index.php

* author:  张三<zhangsan@qq.com>

* create:  2009-2-27

* note:

*    采用XXX的方法,可以完成YYY的效果。

* history:

*     2002-02-28 修订了认证失败信息错误的Bug

*/

 

函数注释

/**

* 函数描述,功能性描述

*

* @param  类型 参数名称 描述

* @return 类型

*/

 

例如:

/**

* 计算传入参数的和

*

* @param  number $a

* @param number  $b

* @return number

*/

function add($a, $b)

{
}

注:Zend Studio可以自动生成这个形式的注释。

 

类注释

当前类的一些功能。所属的包。等其他说明信息。

一般一个文件一个类。文件的注释和类的注释有相重的地方。

 

Tonitech版权所有 | 转载请注明出处: http://www.tonitech.com/?p=1167

C++处理XML文件

选择一:市面上的XML lib还是有几个的,最有名的当然是libXML。

选择二:MS的MSXML,可以查看下MSDN文档。

选择三:使用开源类CMarkup,今天主要讲这个。

网上有Cmarkup的源代码,你可以下载后在里面include你的头文件,然后创建一个Cmarkup的对象,然后就可以调用里面的成员函数对你所希望操作的XML文件进行操作了。

下面是CMarkup的类成员函数使用方法。这些函数的设计都是基于源EDOM的。

创建一个XML文档

对于创建一个XML文档,需要实例化一个CMarkup对象,并调用AddElem创建根元素。.在这个位置,如果你调用AddElem(“ORDER”) ,你的文档会简单的装一个空ORDER元素. 然后调用AddChildElem 在根元素的下面创建元素 (例如:“进入”根元素内部,层次表示).下面的示例代码创建一个XML文档并返回它(的内容)到一个字符串中。

CMarkup xml;
xml.AddElem( "ORDER" );
xml.AddChildElem( "ITEM" );
xml.IntoElem();
xml.AddChildElem( "SN", "132487A-J" );
xml.AddChildElem( "NAME", "crank casing" );
xml.AddChildElem( "QTY", "1" );
CString csXML = xml.GetDoc();

这些代码产生了下面的XML,这个根结点是ORDER元素;注意它的开始标签 在开头,结束标签在结尾。当一个元素是在一个父下面(深入或被包含),这个父元素的开始标签要在它之前,结束标签要在它之后。ORDER元素包含一个ITEM元素,而ITEM元素包含了三个字子元素:SN、NAME和QTY;

132487A-J

crank casing

1

如例子中所显示的,你也能够在一个子元素下创建新元素,这需要调用IntoElem 移动你的当前主位置到当前子元素位置,然后你就可以在这下面增加一个子元素了。CMarkup在索引中保持了一个当前位置指针,以保证你的源码更加短和更简单,当导航文件时,相同的逻辑位置也会被使用。

导航XML文档

上面的例子所创建的XML字符串,用SetDoc方法加入到CMarkup对象中能够被解析,你也可以引导它正确的进入被创建的同一个CMarkup对象中,如果你要设置当前位置到文档的开始时,需要调用ResetPos.

在下面的例子中,从csXML字符串生成CMarkup对象后,我们循环ORDER元素下的所有ITEM元素,并得到每个项目的序号和数量。

CMarkup xml;
xml.SetDoc( csXML );
while ( xml.FindChildElem("ITEM") )
{
    xml.IntoElem();
    xml.FindChildElem( "SN" );
    CString csSN = xml.GetChildData();
    xml.FindChildElem( "QTY" );
    int nQty = atoi( xml.GetChildData() );
    xml.OutOfElem();
}

对于我们发现的每个元素,在查询它了子元素之前要调用IntoElem,查询完之后再调用OutOfElem ,当你习惯于这种导航类型时,你将知道,检查你的循环时,要确定每个IntoElem 调用都有一个与之对应的OutOfElem 调用 。

增加元素和属性

上面创建文档的例子中仅创建了一个ITEM元素,现在这个例子是创建多个项目,从前一个内容加裁后,再增加数据源,加上SHIPMENT信息元素中有一个属性,这段代码也演示了你能调用调用IntoElem和AddElem来代替AddChildElem,函数调用。虽然这意味着更多的调用,但许多人认为这样更直观。

CMarkup xml;
xml.AddElem( "ORDER" );
xml.IntoElem(); // inside ORDER
for ( int nItem=0; nItem
{
    xml.AddElem( "ITEM" );
    xml.IntoElem(); // inside ITEM
    xml.AddElem( "SN", aItems[nItem].csSN );
    xml.AddElem( "NAME", aItems[nItem].csName );
    xml.AddElem( "QTY", aItems[nItem].nQty );
    xml.OutOfElem(); // back out to ITEM level
}
xml.AddElem( "SHIPMENT" );
xml.IntoElem(); // inside SHIPMENT
xml.AddElem( "POC" );
xml.SetAttrib( "type", csPOCType );
xml.IntoElem(); // inside POC
xml.AddElem( "NAME", csPOCName );
xml.AddElem( "TEL", csPOCTel );

这段代码产生了下面的XML,根元素ORDER包含两个ITEM元素和一个SHIPMENT元素,ITEM元素全都包含SN、NAME、和QTY元素,SHIPMENT元素包含一个带有属性类型的POC元素,和NAME及TEL子元素。

132487A-J

crank casing

1

4238764-A

bearing

15

John Smith

555-1234

查找元素

FindElem 和 FindChildElem方法用于到下一个兄弟元素。如果可选的标签名被指定,那么它们将到下一个与标签名相匹配的元素,被发现的元素是当前元素,并且下次调用Find将会到当前位置后的下一个兄弟或下一个匹配兄弟。

当你无法判断元素的索引时,在调用两个Find方法之间,一定要复位当前位置。看上面的例子中ITEM元素,如果是别的人创建的XML文件,你不能确定SN元素在QTY元素之前,那么在查找QTY元素之前就要调用ResetChildPos();

对于用一个特定的序号去查找元素,你需要完全循环ITEM元素,并比较SN元素的数据和你正在搜索的序号。这个例子不同于先前导航的例子,它调用IntoElem 进入到ORDER元素,并且用FindElem(“ITEM”)替换FindChildElem(“ITEM”);其实两种方式都挺好。需要注意的是,在Find方法中指定ITEM元素的标签名,我们会忽略所有其它的兄弟元素,例如SHIPMENT元素。

CMarkup xml;
xml.SetDoc( csXML );
xml.FindElem(); // ORDER element is root
xml.IntoElem(); // inside ORDER
while ( xml.FindElem("ITEM") )
{
    xml.FindChildElem( "SN" );
    if ( xml.GetChildData() == csFindSN )
        break; // found
}

编码

ASCII编码引用了我们所依靠的字符码128以下的字符,如用英语编程。如果你只使用ASCII码,很方便,UTF-8编程与你拉公共ASCII集相同。

如果你所使用的字符集不在Unicode编码集(UTF-8,UTF-16,UCS-2)中,那么出于交互性以及在IE中很好的显示,你真的需要在XML声明中进行描述。像ISO-8859-1(西欧)字符集指定字符值在一个比特且在128到255之间。以便每个字符仍然使用一个比特。Windows双字节字符集像GB2312,Shift_JIS和EUC-KR,每个字符都是用一个或两个字节,对于这些Windows字符集,在你的预处理中需要定义_MBCS ,并要确定用户的操作系统设置到合适的编码页。

关于用一个XML描述的XML文档前缀,像,需要通过用SetDoc或Cmarkup的构造函数来传递。在结尾要包括回车符,这样根结点会显示在下一行。

xml.SetDoc( "/r/n" );
xml.AddElem( "island", "Curaçao" );

Tonitech版权所有 | 转载请注明出处: http://www.tonitech.com/?p=948

在CSS样式中调用外部的CSS文件

        今天去面试,面试官问我如何在CSS样式中调用外部的CSS文件。我可是从来没有遇到过这个问题,我说:“没必要这样啊,你只要在页面文件中引入另一个CSS文件就行了啊。”不过,我真的不知道。我回来查阅了资料,发现使用:

@import url(slider.css);

这句话,写在原来的CSS中,就可以引入外部的CSS文件了。这个效果我个人感觉其实跟是一样的。网上很多的人也说这个import有弊端,例如:

1.加载的时候,link是在加载页面前把css加载完毕,而@import url则是读取完文件后在加载,所以会出现一开始没有css样式,闪烁一下出现样式后的页面(网速慢的情况下)。

2.当使用javascript控制dom去改变样式的时候,只能使用link标签,因为@import不是dom可以控制的。

以上两点就足够证明它的弱小了,所以建议不要使用@import url,而使用link,所以面试的时候面试官问的问题都是特别的欠骂啊。

Tonitech版权所有 | 转载请注明出处: http://www.tonitech.com/?p=98