XML学习笔记
XML
利用css控制XML的显示方式:<?xml-stylesheet type="text/css" href="simple.css"?>但是最好采用XSL控制XML的显示方式 <?xml-stylesheet type="text/xsl" href="simple.xsl"?>XML中转义符:
| < | < | less than[小于] |
| > | > | greater than[大于] |
| & | & | ampersand [和] |
| ' | ' | apostrophe[省略号] |
| " | " | 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 + 4 | 10 |
| - | 减 | 6 - 4 | 2 |
| * | 乘 | 6 * 4 | 24 |
| div | 除 | 8 div 4 | 2 |
| = | 等于 | 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' |
发表评论
- 浏览: 1272 次
- 性别:

- 来自: 重庆

- 详细资料
搜索本博客
最新评论
-
Java 处理 XML 方法比较
牛,比较得比较好
-- by anlongstar -
又大了一岁
是时候在夜深人静,夜黑风高的夜晚好好思考这个问题了
-- by kenan161621 -
又大了一岁
哈哈 你么俩差不多,可以享用同等待遇萨
-- by simplechen -
又大了一岁
你娃过生都不说一声哟,再怎么说也要让我们敲诈一顿萨:)
-- by numenzq






评论排行榜