??xml version="1.0" encoding="utf-8" standalone="yes"?>
2、删除驱动备份: %windows%\driver cache\i386目录下的driver.cab 档,通常q个档是70.3M?br />
3、删除\windows\ime下不用的输入法,8xM
4、如果你不看pȝ的帮助的?..删除%windows%\help?录下的所以文Ӟ36M?br />
5、关闭系l还原,叛_单击“我的计机”,选择“内容”,扑ֈ“系l还原”,选择“在所有驱动器上关?pȝq原”?br />
6、如果你的系l区I间实在紧张Q可以考虑把IE览器的临时文g夹移动到其它分区Q方法:点击IEQ工兗Internet 选项》Internet临时文g》设定》移动活夹 O.K?
7、如果空间再紧张的话Q启用NTFS的压~功能,不用!
8、卸?不常用的lgQWIN2K3和以前的WINDOWS版本不同Q安装全部由pȝ自己负责Q用h法选择安装需要的lg。执行“添?删除E序”,删除 掉游戏,壁纸{不用的附g。还有记住删除Internet Explorer 增强的安全配|,要不览|页时M弹出警告Q还可以用记事本修改\% windows%\inf\sysoc.infQ用查找/替换功能Q在查找框中输入,hideQ全部替换ؓI?注意,q行中的,hide不能替换?"netfx=netfxocm.dll,UrtOcmProc,netfxocm.inf,hide,7")。这P把所有的,hide都去掉了Q存盘退出,执行“添?删除E序”,׃?见“添?删除 Windows lg”中多出不少选项,但和XP下不?改完后虽焉藏的都出来了,但只?Windows自动更新一可以删?其它的是 不允许删除滴~~
==============================================
1.删除C:\WINDOWS\PCHEALTH\ERRORREP\UserDumps中所有文?400多M,q些文g是pȝ出错时自动生的一U记录出错时pȝ状态的日志文g?
2.删除所有C:\WINDOWS\$*$文g,都是些系l升U备份文?800多M.
3.C:\WINDOWS\SoftwareDistribution\Download所有文件打包后删除,Ud其他大的分区的备份目录下?q个文g夹的东东可以用来以后装系l的时候直接复制到新系l的该目?pȝ升时不用重C微Y下补丁了.节省500多M.
4.C:\WINDOWS\ServicePackFiles文gҎ有文件移动到Ud其他大的分区的备份目录下? 修改注册表的键?这个键值定义到修改的\?HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\ ServicePackSourcePath.q个目录的所有文件是用来q原Service Pack?586M
5.删除C:\WINDOWS\Driver Cache\i386,q些文g都是Windows操作pȝ自带的已知硬仉动文?
6.删除C:\Documents and Settings\huangxianglong\Local Settings\Temp 400多M
7.关闭OUTLOOK2003,其数据文g转移到大分区,然后重启OUTLOOK2003,其数据和本文文件夹指向新\径即?节省了我C?G的空?
8.My Document的\径指向大分区某个文g?
]]>
]]>
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
安装完后再安?bin/Orca.msi
然后用orca打开rose.msiQ删?VersionNT AND (NOT RSWINXPHOME))OR (DISABLE_PLATFORM_BLOCKS = 1)卛_?br />
另外错误Q?br />应用rational rose 后退出时报错Q?MEM_BAD_POINTER"
解决办法Q?br />1) extract shw32.dll from the attached zip file.
2) locate the copy of shw32.dll that the affected program (the one
that's giving the MEM_BAD_POINTER error) is using. Rename this file,
or move it to some other directory for safe keeping. Note: this step
is not strictly necessary, BUT if you experience problems with our
new DLL, the first thing we're going to suggest is that you revert to
your old one.
3) with your old shw32.dll renamed or moved for safe keeping, install
the new shw32.dll where the old one used to be. Now run your app as
usual and verify that the error no longer appears.
4) if after step 3 you still see the MEM_BAD_POINTER error, search
your hard drives for any other occurrences of shw32.dll and replace
those (using the above procedures), one at a time, until the error no
longer appears.
下蝲补丁
W?:对照IBM的装单核对包装内物品
1、机器一?/P>
2、电池一?注意:按行货的装相ҎQ电池和机器是分开的,因ؓ香港人拿到机器要先验屏有无坏点, 所以电池就装在机器上了?/P>
3、适配器一?头ؓ英制Q香港货和新加坡货都是这U?头ؓ制Q美国货是这L?/P>
4、电话线一根,接猫上网的,现在很少人用了?/P>
5、说明书一套。多数均为T40版的Q猜是IBMZ节约成本Q所以T40QT41QT42QT43都用同一套说明书?/P>
6、小U帽两个。ؓ来原配的脏了更换的?/P>
7、固定螺丝一颗用来固定互换光区的Q防止别人插拔?BR>
W?:查外观、验证SN?/B>
接下来就要看外观了,有没有划伤,毕竟外观也是很重要的Q要查外观有无硬商如果有及时更换。特别要注意qx不太注意的细节,比如机器底部?A class=keyword target=_blank>键盘q有屏幕?
开BIOSQ先查看机器大概的配|,主频Q?A class=keyword target=_blank>内存Q还有关键的两个LQSN号和UUIDL。SNh机器唯一的序列号Q没有重复的Q从BIOS里查到的SN可和包装箱的,机器背面的,q有用测试Y件测出来的都对上Q才完整?/P>
UUIDL?A class=keyword target=_blank>L序列受只昄在BIOS里和包装׃Q这两处也要对上。另外要和用试软g出的UUID号也对上。如果机?A class=keyword target=_blank>L被动q,那UUIDh会改变的?BR>
W?:查屏q、电池和保修
开始进入系l,试屏幕Q可以用专业的测试YӞ|上有很多像Nokia的Y件等{,主要查坏点和亮点?
查看甉|充电ơ数Q一般来_不超q两ơ。如果是旧电池的Q这一步是逃不q去的,而且以目前的技术,q没有哪个高手可以刷新充甉|?/P>
一定要上网查询保修期限和核寚w件的~号
具体|址Q?A >http://www-3.ibm.com/pc/support/site.wss/warranty/warranty.vm
在TYPE一栏中输入机器型号Q如2373在Serial#一栏中输入机器SNP然后点ContinueQ或者点d会出C修信息?/P>
有本机器的保修期限和销售地?/P>
特别说明Q因关是机器和包装分开q的Q然后到深圳再一对一的装,隑օ适配器和电话U装错,有可能造成q两个部件的L和网站显C号码难以对上。除此之外,机器?A class=keyword target=_blank>盘~号Q电池编L{都是能对上的。另外次~号是IBMq配g所做的出厂~号Q很多测试Y件是不出来的。最后一Ҏ查是否带有COA??BR>
表一、运符与特D字W?/P>
q算W?/FONT> | 描述 | |
/ |
选择子元素,q回左侧元素的直接子元素Q如?/"位于最左侧表示选择根结点的直接子元?/TD> | |
// |
递归下降Q不论深度,搜烦指定的元素;如果位于最左侧表示从根l点出发递归下降搜烦指定元素 | |
. |
表示当前元素 | |
* |
通配W,选择L元素Q不考虑名字 | |
@ |
取得属性|作ؓ属性名的前~ | |
@* |
通配W,选择L属性,不考虑名字 | |
: |
名字作用范围分隔W,名字作用范围前~与元素或属性名分隔开?/TD> | |
!* |
在相兌点上应用指定Ҏ | |
()* |
分组Q明指定优先顺?/TD> | |
[] |
应用qo样式 | |
[]* |
下标q算W,用于在集合中指示元素 |
表二、逻辑q算W?/P>
可选方?/FONT> | 描述 | |
and $and$ ?&& |
逻辑?/TD> | |
or $or$ ?|| |
逻辑?/TD> | |
not() $not$ |
逻辑?/TD> |
表三、关p运符
可选方?/FONT> | 描述 | |
= ?$eq$ |
相等 | |
= ?$ieq$ |
相等Q不区分大小写) | |
!= ?$ne$ |
不等 | |
$ine$ |
不等Q不区分大小写) | |
< ?$lt$ |
于 | |
$ilt$ |
于Q不区分大小写) | |
<= ?$le$ |
于{于 | |
$ile$ |
于{于Q不区分大小写) | |
> ?$gt$ |
大于 | |
$igt$ |
大于Q不区分大小写) | |
>= ?$ge$ |
大于{于 | |
$ige$ |
大于{于Q不区分大小写) | |
$all$ |
集合q算W,如果集合中所有项目均满条g则返?? | |
$any$ |
集合q算W,如果集合中Q意项目满x件则q回"? | |
| |
集合q算W,q回两个集合的联?/TD> |
<xsl:eval>含义Q计脚本表辑ּQ输Z个文本字W串?BR>语法Q?BR><xsl:eval language="language-name">
属性:
language ── 规定所用脚本语a的名字,可用的属性有"JavaScript"?JScript"?VBScript"?VBS"{,~省?JScript"?/P>
<xsl:script>含义Q声明全局变量或定义函数?BR> 语法Q?BR><xsl:script language="language-name">
属性:?lt;xsl:eval>
例如Q?BR><TR><TD>计</TD>
<TD><xsl:eval>total(this,"q1")</xsl:eval></TD>
<TD><xsl:eval>total(this,"q2")</xsl:eval></TD>
<TD><xsl:eval>total(this,"q3")</xsl:eval></TD>
<TD><xsl:eval>total(this,"q4")</xsl:eval></TD>
</TR>
</TABLE>
<xsl:script> 6、value() CZQ寻找所有元素resumeQ其最后一个结点的名字?skill"Q?BR> resume[node()[end()]!nodeName()='skill'] 11、textnode() 12、text() 14、ancestorChildNumber 15、attributes 16、baseName 17、childNumber 18、dataType 19、depth 20、firstChild、lastChild 21、formatIndex 22、formatNumber 23、hasChildNodes 24、namespaceURI、prefix 25、nextSibling、previousSibling、parentNode 26、nodeType、NodeTypeString 27、nodeTypedValue 28、nodeValue 29、ownerDocument 30、selectNodes 31、selectSingleNode 32、text 33、xml formatTime(varTime, bstrFormat,varDestLocale)
function total(node,q)
{
temp=0;
mark='/document/report/'+q;
v=node.selectNodes(mark);
for(t=v.nextNode();t;t=v.nextNode())
{
temp+=Number(t.text);
}
return temp; //计?BR>}
</xsl:script>
selectNodes() ── 是XMLDOMObject的一个方法,q回文档中所有满x件的l点的集合,条g?lt; xsl:for-each >和select属性的取值采用同L写法Q可以加{选、下标等限制?/P>
三、XSL函数
1、end()
含义Q返回集合中最后一个元素?BR>
2、index()
含义Q返回该元素在集合中的位|,q回值是一整数Q其中第一个元素返??BR>
3、nodeName()
含义Q返回元素的名字Q即标记名?BR> CZQ选择L元素Q假如其名字Q即标记名){于"name"Q?BR> *[nodeName()='name'] ?*[name]
4、number()
含义Q将D{换ؓ数值Ş式,如果不是数值则q回I,要求参数?BR> CZQ年?age)于30岁的人的?resume)Q?BR> resume[number(age)$lt$30] ?resume[age$lt$30]
5、nodeType()
含义Q返回结点类型,l果为是数倹{以下是q回值列表:
l点cd
l点cd?/FONT>
l点的字WŞ式描q?/FONT>
Element
1
'element'
Element Attribute
2
'attribute'
Markup-Delimited Region of Text
3
'text'
Processing Instruction
7
'processing_instruction'
Comment
8
'comment'
Document Entity
9
'document'
含义Q返回元素或属性的倹{?BR> CZQvalue()是元素或属性的~省ҎQ以下表C是{hQ?BR> name!value()="NAME" ?name="NAME"
@attr="attribute_value" ?@attr="attribute_value"
注:@是属性前~Q@attr表示是属性attr
7、attribute()
含义Q返回所有属性结点的集合Q等价于"@*"?BR> CZQ寻找所有的resume元素Q满x件至有一个属性的gؓ"ABC"Q?BR> resume[$any$attribute()='ABC'] ?resume[$any$@*='ABC']
L所有的resume元素Q满x件至有一个子元素有一个属性的gؓ"ABC"Q?
resume[$any$*/attribute()='ABC'] ?resume[$any$*/@*='ABC']
8、comment()
含义Q返回所有注释结炏V?BR> CZQ?BR> resume[$any$comment()='希初的?]
表示L含有注释语句Q?lt;!--希初的?->?lt;resume>元素?BR>
9、cdata()
含义Q返回所有CDATAcd的结点的集合?BR> CZQresume[$any$cdata()='希初的?]
表示L含有下述语句Q必L直接子结点)<![CDATA[希初的历]]>?lt;resume>?nbsp; 素?BR>
10、node()
含义Q返回当前上下文环境中除根结点和属性结点以外的所有结点的集合Q等价于Q?BR> "*|pi()|comment()|text()"
L所有resume元素的第一个结点:resume/node()[0]?/P>
含义Q返回所有文本类型的l点的集合?BR> CZQ寻找每一个p元素的第二个文本l点Qp/textnode(1) ?p!textnode(1)
含义Q返回所有表C文本字W串的结点的集合Q等价于"cdata()|textnode()"?BR>
13、absoluteChildNumber
含义Q返回结点相对于它所有的兄弟Q不论名字是否相同)的序受?BR> 语法QabsoluteChildNumber(node)
参数Qnode ── 对象Q欲q回~号的结炏V?BR> CZQ?BR> 1、假定文档结构ؓQ?lt;document><head/><body/></document>Q其中document为顶层结点,下述表达式将输出Q?BR> <xsl:eval>
absoluteChildNumber(this.selectNodes('/document/body').item(0))
</xsl:eval>
2、确定当前结点相对于其所有兄弟的序号Q?BR> <xsl:eval>
absoluteChildNumber(this)
</xsl:eval>
含义Q从l定l点出发Ҏl定先l点名返回最q的先l点的序P相对于同名结点)。如果找不祖先,则返??BR> 语法QancestorChildNumber(bstrNodeName, pNode)
参数Q?BR> bstrNodeName ── 字符丌Ӏ被搜烦的祖先结点的名字?BR> pNode ── 对象。搜索开始位|的l点?BR> CZ查找当前l点最q的名ؓreport先l点Q?BR> ancestorChildNumber('report',this)
含义Q返回结点属性的集合?BR> 语法Qobject.attributes
参数Qobject ── l点对象?BR> CZQ当前结点属性的个数
this.attributes.length
当前l点W三个属性的值this.attributs.item(2).value或this.attributes.item(2).text或this.attributes(2).text
注意Q如果给定的下标大于属性d?出错,W一个属性的下标??/P>
含义Q返回有名字I间限制的基本名Q即不包括名字前~?BR> 语法Qobject.baseName
参数Qobject ── l点对象
CZQ当前结点的基本名:this.baseName
含义Q返回结点相对于同名同胞的序受?BR> 语法QchildNumber(object)
参数Qobject ── l点对象
CZQ假定XML文档l构如下Q?lt;x><y><z></z></y></x>
如果当前l点是zQ则childNumber(this)q回1Q而absoluteChildNumber(this)q回3?
含义Q设定或dl点的数据类型?BR> 语法Q设定结点的数据cd object.dataType=objValue
dl点的数据类?objValue=object.dataType
参数Qobject ── l点对象?BR> CZQ读取当前结点的数据cdQdtType=this.dataType
含义Q指定结点出现在文档树上的深度,卌l点位于文档W几层,层l点位于W一层,根结点(即用"/"表示的结点)位于W?层?BR> 语法Qdepth(pNode)
参数QpNode ── l点对象
CZQ当前结点的深度Qdepth(this)
含义Q返回结点的W一个子l点Q或最后一个子l点Q?BR> 语法QpNode.firstChild
pNode.lastChild
参数QpNode ── l点对象
CZQ当前结点的W一个结点的名字Qthis.firstChild.nodeName
含义Q用指定的计数系l格式化提供的整数?BR> 语法QformatIndex(lIndex, bstrFormat)
参数Q?BR> lIndex ── 整型数值或变量
bstrFormat ── 数据格式Q可选值有a、A、i、I??1Q以0打头的数值Ş式,如果要求固定长度的编号如0001?002则非常有用)?BR> CZQ当前结点的大写|马数字~号QformatIndex(childNumber(this),'I')
含义Q以指定格式输出数倹{?BR> 语法QformatNumber(dblNumber, bstrFormat)
参数Q说明同formatNumberQ不同之处在于格式化的可以是数?BR> CZQ对变量a的值格式化Z位小敎ͼformatNumber(a,'#.00')Q?/P>
含义Q如果结Ҏ子结点则q回trueQ?1Q,否则为falseQ?Q?BR> 语法QpNode.hasChildNodes()
注意Q与此前介绍的函C同,此函数后必须带一个空括号?BR> CZQ判断当前结Ҏ否有子结点:this.hasChildNodes
含义Q返回结点名字空间的全局资源标识W(或前~Q?BR> 语法QpNode.namespaceURI pNode.prifix
含义Q返回结点的下一个兄弟(或前一个兄弟、或l点的父l点Q?BR> 语法QpNode.nextSibling pNode.previousSibling pNode.parentNode
注意Q对根结点(?/"Q应用parentNodeҎ、对W一个孩子结点应用previousSiblingҎ、对最后一个孩子结点应用nextSiblingҎ均会D错误Q可通过此过关系q算W?=Q等于)?=Q不{于Q来判断一个结Ҏ否某一指定l点Q格式ؓpNode1 = pNode2或pNode2 != pNode2?BR> 十四、nodeName
含义Q返回元素、属性、入口的名字或其他类型结点的一个特定字W串?BR> 语法QpNode.nodeName
CZQ当前结点的名字Qthis.nodeName
含义Q返回结点的cd的数值Ş式(或字W串形式Q?BR> 语法QpNode.nodeType ?pNode.nodeTypeString
q回|
l点cd l点cd?nbsp; l点的字WŞ式描q?
Element 1 'element'
Element Attribute 2 'attribute'
Markup-Delimited 3
Region of Text 'text'
Processing Instruction 7 'processing_instruction'
Comment 8 'comment'
Document Entity 9 'document'
含义Q以l点预定义的数据cdq回l点的倹{?BR> 语法QpNode.nodeTypedValue
CZQ假定当前结点的数据cd是fixed.14.4Q下例将以数D回结点的|而不是文本一个字W串Q?BR> this.nodeTypedValue
含义Q返回结点的文本?BR> 语法QpNode.nodeValue
注意Q该Ҏ不用于元素类l点Q可用于属性、CDATA、注释、文本等l点?BR> CZQ当前元素第一个属性的|this.attributes(0).nodeValue
当前元素内的文本Q假定该元素内只有文本,无其它元素,?lt;mark>text</mark>Q徏议多几ơ掌握其切的用法)?BR> this.firstChild.nodeValue
含义Q返回包含该l点的文档的栏V?BR> 语法QpNode.ownerDocument
注意Q该Ҏ用于文档的根l点出错?/P>
含义Q给定的样式匚w应用于当前结点ƈq回匚w的结炚w合?BR> 语法QpNode.selectNodes('pattern')
提示Qpattern的编写与<xsl:for-each>的select属性的值类|其中?/"开头表CZ文档的根出发搜烦Q以"http://"开头表遍历文档的所有结点;?.."开头表CZ当前l点的父l点开始;如果Ʋ从当前l点向下搜烦则不能有以上Ҏ字符打头?BR> CZQ与当前l点同名的元素在其父元素内的个数Q?BR> childNumber(this.selectNodes("../"+this.nodeName+"[end()]").item(0))
当前元素内名字ؓ"skill"的元素的个数Q?BR> childNumber(this.selectNodes("skill[end()]").item(0))
含义Q与selectNodescMQ不同的只返回匹配的W一个结炏V而不是结炚w合?BR> 语法QpNode.selectSingleNode('pattern')
CZQ与当前l点同名的元素在其父元素内的个数Q?BR> childNumber(this.selectSingleNode("../"+this.nodeName+"[end()]"))
当前元素内名字ؓ"skill"的元素的个数Q?BR> childNumber(this.selectSingleNode("skill[end()]"))
含义Q返回结点与它的子树内的文字内容?BR> 语法QpNode.text
CZQ整个文档内的文字内容:this.ownerDocument.text
当前元素及其子树的文字内容:this.text
含义Q返回结点及其后代的XML表示?BR> 语法QpNode.xml
CZQ当前文档的XML内容Qthis.ownerDocument.xml
另有几个函数不作介绍Q列于其下以供参考,如感兴趣Q请讉Khttp://msdn.microsoft.com获取详细说明?/P>
formatDate(varDate, bstrFormat,varDestLocale)
apendChild(newChild)
definition
CloneNode
insertBefore(newChild, refChild)
parsed
removeChild(oldChild)
replaceChild(newChild, oldChild)
specified
transformNode(stylesheet)
transformNodeToObject(stylesheet,outputObject)
uniqueID(pNode)
XSL 之于 XML 像 CSS 之于 HTML。它是指可扩展样式表语言 (EXtensible Stylesheet Language)。这是一U用于以可读格式呈现 XML 数据的语a。XSL 实际上包含两个部分:
XSLT 是指 XSL 转换 (XSL Transformation)Q它?XSL 最重要的部分?
XSLT 可以?XML 文档转换为其?XML 文档、XHTML 输出或简单的文本。这通常是通过每?XML 元素转换?HTML 元素来完成的。由?XML 标签是用户定义的Q浏览器不知道如何解释或呈现每个标签Q因此必M?XSL。XML 标签的意义是Z方便用户Q而不是计机Q理解?/P>
XSLT q可以对 XML 树进行下列操作:
既是又不是。说是,是因为它们遵循相同的语法规则Q只有少许差异,下面我将会讲刎ͼ。说不是Q是因ؓ它们的用途不同:XML 用于承蝲数据Q?XSL 则用于设|数据的格式。XSL 声明?XML 声明的不同之处在于,XML 声明只写一行,而且没有l束标签Q?XSL 声明必须包含l束标签?BR>
XSL 在设计时有几个目标用途,q些用途它成为某些开发情况下的完解x案,而对另一些开发情况则毫无用处?/P>
服务器端转换工作程如下图所C:
客户?XSL 转换的工作流E:
XSL 使用 XPath 来标?XML 树中需要处理的各个元素?/P>
XPath 规范基本上遵循与文gpȝd相同的规则:
//employee
会查?XML 文档中的所有员工节炏V?
/company/department/*
选择一个部门的所有子节点Q即该部门的所有员工?
../employee
?
@
字符。例如,/company/department/employee[@retired]
选择指定?retired
属性的所有员工?使用 <xsl:for-each>
构造,您还可以Ҏ条gqo输出。假设您只想昄雇员中的E序员?/P>
<xsl:template match="/"> <table border="1"> <tr> <th>Name</th> <th>Job</th> <th>Salary</th> </tr> <xsl:for-each select="company/department/employee[job='Programmer']"> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="job"/></td> <td><xsl:value-of select="salary"/></td> </tr> </xsl:for-each> </table> </xsl:template>
要定?XML 节点的条Ӟ可以使用下列Mq算W:
可以项目按字母序排列。只需使用 <xsl:sort />
构造,q指定按哪个节点q行排序?CODE><xsl:sort /> 元素必须嵌套?<xsl:for-each>
元素中,以确保应用程序可以@环通过所有的目。用下面的代码可以按字母顺序显C员工:
<xsl:template match="/"> <table border="1"> <tr> <th>Name</th> <th>Job</th> <th>Salary</th> </tr> <xsl:for-each select="company/department/employee"> <xsl:sort select="name" /> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="job"/></td> <td><xsl:value-of select="salary"/></td> </tr> </xsl:for-each> </table> </xsl:template>
当然Q您只需?<xsl:sort />
元素中额外添加一个属性,卛_方便地在升序和降序排列顺序之间切换:
<xsl:sort select="/name" order="descending"/>
在大多数语言中,XSL q能够根据条件显C内宏V?/P>
单一条g是用下面的语法定义的:
<xsl:if test="表达?> </xsl:if>
要对多个目q行条g试Q以便只昄满该条件的目Q需要将 xsl:if
构造嵌套在 xsl:for-each
元素中。下面的CZ昄了如何只列出薪金高于 2700 元的员工Q?/P>
<xsl:template match="/"> <table border="1"> <tr> <th>Name</th> <th>Job</th> <th>Salary</th> </tr> <xsl:for-each select="company/department/employee"> <xsl:if test="salary > 2700"> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="job"/></td> <td><xsl:value-of select="salary"/></td> </tr> </xsl:if> </xsl:for-each> </table> </xsl:template>
h意,于 (<) 和大?(>) W号由它们相应的 HTML 转义序列Q?amp;lt ?>Q代ѝ否则,它们很容易与标签的开头和l尾h?nbsp;
在测试表辑ּ中可以用常用的条gq算W:
如果需要将某个g某个字符串进行比较,则要字W串攑֜单引号中Q例?<xsl:if test="job = 'Software Analyst'">
Q?BR>
象大多数~程语言中的 IF-ELSE 构造一P您还可以定义更复杂的条g。所使用的语法一看就能明白:
<xsl:choose> <xsl:when test="表达?/EM>"> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose>
Z在多?XML 节点上测试条Ӟ<xsl:choose>
构造必d套在 <xsl:for-each>
循环中?/P>
假设您要以绿色高亮显C金低?2700 元的所有员工,以蓝色高亮显C金高?2700 元的所有员工:
<xsl:template match="/"> <table border="1"> <tr> <th>Name</th> <th>Job</th> <th>Salary</th> </tr> <xsl:for-each select="company/department/employee"> <xsl:choose> <xsl:when test="salary > 2700"> <tr bgcolor="#66CCFF"> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="job"/></td> <td><xsl:value-of select="salary"/></td> </tr> </xsl:when> <xsl:otherwise> <tr bgcolor="#00CC99"> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="job"/></td> <td><xsl:value-of select="salary"/></td> </tr> </xsl:otherwise> </xsl:choose> </xsl:for-each> </table> </xsl:template>
<xsl:otherwise>
元素指定的是?XML 节点不满_始测试条件时默认应用的规则?/P>