2008-03-07

XML学习笔记

XML

利用css控制XML的显示方式:<?xml-stylesheet type="text/css" href="simple.css"?>但是最好采用XSL控制XML的显示方式    <?xml-stylesheet type="text/xsl" href="simple.xsl"?>XML中转义符:

 

&lt;less than[小于]
&gt;greater than[大于]
&amp;&ampersand []
&apos;'apostrophe[省略号]
&quot;"quotation mark[引号]

 

被解析器忽略的片段<![CDATA[     CDATA片断不能包含字符串 "]]>",因此,嵌套CDATA片断是不允许]]>


 XSL

1.                模式查询语言通过相关的模式匹配规则表达式从XML中提取数据的特定语句,然后用XSL中的HTML把数据包围起来. Ø  选择模式:<xsl:for-each> <xsl:value-of>Ø  测试模式:<xsl:if> <xsl:choose> <xsl:otherwise> <xsl:when>Ø  匹配模式:<xsl:template> <xsl:apply-templates> 

a)      <xsl:for-each><xsl:for-each select=”条件” order-by=”+/-子标记列表”/>(+升序 逆序)Select: 表示满足select条件Order-by: 表示对由select选定的标记的子标记进行排序b)     <xsl:value-of><xsl:value-of select=”pattern”/>Select:用来与当前上下文匹配的XSL式样

c)      <X:IF><xsl:if expr=”script-expression” language=”language-name” test=”pattern”>Expr: 脚本语言表达式,若为真且通过test则输出中显示其中内容Language: expr属性中表达式的脚本语言类型,缺省JscriptTest: 设定条件的叙述表达式

d)     <xsl:choose>无属性值,表示一个多选测试的开始

e)     <xsl:when><xsl:when expr="script-expression" language="language-name" test="pattern" >Expr:脚本语言表达式,若结果为真且通过test则输出中显示其中内容(可省略)Language:exr的脚本语言Test:源数据测试条件

f)       <xsl:otherwise>无属性值,在多项选择中若不满足<xsl:when>规定的条件则执行此标记

g)      书写模板<xsl:template><xsl:template match=”node-context” language=”language-name”>Match:确定什么样的情况下执行此模板,Language:此模板中执行的脚本语言

h)     调用模板<xsl:apply-templates><xsl:apply-templates select=”pattern” order-by=”list”>select: 确定在此上下文环境中应执行什么模板order-by:”;”分隔排序标准

i)        <xsl:comment>在此元素中的内容xsl将它作为注释信息,并不显示在浏览器中j)        <xsl:copy>无属性.XML 文件中拷贝标记中的信息到输出的文件中. 利用这种模式可以将XML 文档中的非标记信息读取出来,利用该标记将其显示出来

k)      <xsl:attribute> <xsl:element>可以在标记中附加一个属性名称或新建一个标记,XSL不但可以引用HTML标记还可以建立新的属性和标记,然后结合XML一起显示出来.<xsl:attribute name=””>在标记中新增一个属性<xsl:element name=””>新建一个标记  


 XPath

2.                术语

节点7种不同的节点:元素,属性,文本,命名空间,处理指令,注释,文档(根目录)节点 

原子值    不包含子节点和父节点的节点 

条款(Items)    条款就是原子值或节点 

节点间的关系 父类元素 子类元素 同类元素    拥有相同父类元素的节点称为同类元素 

祖类元素 孙类元素 

3.                XPath语法

选取节点

 

表达式注释
nodename选取某节点中的所有子节点
/从根节点处选取
//选取文档中所有匹配的节点,不管该节点位于何处
.选取当前节点
..选取当前节点的父节点
@选取属性
[]指定条件
|选取多个路径

    例子:  /bookstore/book[last()]          

               /bookstore/book[position()<3]          

              //title[@lang='eng'] 

选取未知节点

 

通配符说明
*匹配任意的元素节点
@*匹配任意的属性节点
node()匹配所有类型的节点

    例子:  /bookstore/*          

             //book/title | //book/price          

             /bookstore/book/title |

             //price

 

4.                XPath 坐标值

坐标轴是用于定义当前节点相关的节点集

方法名称结果
ancestor选取当前节点的祖类元素(父类元素,父类元素的父类元素,以此类推)
ancestor-or-self选取当前节点和当前节点的祖类元素(父类元素,父类元素的父类元素,以此类推)
attribute选取当前节点的所有属性
child选取当前节点的所有子类元素
descendant选取当前节点的所有孙类元素(子类元素,子类元素的子类元素,以此类推)
descendant-or-self选取当前节点和当前节点的所有孙类(子类元素,子类元素的子类元素,以此类推)
following选取文档中位于当前节点结束标签之后的所有元素
following-sibling选取位于当前节点后的所有同类节点
namespace选取当前节点下的所有命名空间节点
parent选取当前节点的父类节点
preceding选取文档中所有位于当前节点的起始标签之前的元素
preceding-sibling选取位于当前节点之前的所有同类节点
self选取当前节点

 区域选择(语法:axisname::nodetest[predicate])   

区域选择表达式可以是绝对路径也可以是相对路径,绝对路径表达式以”/”开始,相对路径则不是,两种路径都包含一个或多个层次,”/”分隔.每个层次都对应当前节点中的一个节点值:    坐标轴(定义目标节点于当前节点的关系结构)   

节点测试(在坐标轴中确认某节点)   

零条件或多条件(进一步提取指定的节点集)    

例子:   child::node()à选取当前节点的所有book子节点          

Attribute::langà选取当前节点所有lang属性值          

Descendant::bookà选取当前节点下所有book节点的孙类节点          

Ancestor::bookà选取当前节点下所有book节点的祖类节点          

Ancestor-or-self::bookà当前节点下所有book节点的祖类节点和book本节点           Child::*/child::priceà当前节点下所有price节点的孙类节点

 

5.                XPath操作符

 

操作符说明案例返回值
|计算两个节点集//book | //cd返回所有book元素和cd元素的节点集
+6 + 410
-6 - 42
*6 * 424
div8 div 42
=等于price=9.80如结果为9.80,则返回true;如结果为9.90,则返回false
!=不等于price!=9.80如结果为9.90,则返回true;如结果为9.80,则返回false
小于price<9.80如结果为9.00,则返回true;如结果为<span style="font-size: 10pt; color: teal; font-family: 'Courier New'
评论
发表评论

您还没有登录,请登录后发表评论

allenBen
搜索本博客
博客分类
最新评论