文档树

1) XML 可以转化文档树

2) XSLT 对XML 的转化过程

内建模板规则

|

根 |

调用xsl:apply-templates处理根节点的儿子。处理时,使用调用时相同的模式 | |

元素 |

调用xsl:apply-templates处理该节点的儿子。处理时,使用调用时相同的模式 | |

属性 |

拷贝属性值到结果树,结果作为文本而不是属性节点 | |

文本 |

拷贝文本到结果树 | |

注释 |

不做任何事 | |

处理指令 |

不做任何事 | |

命名空间 |

不做任何事 |

支持的五种数据类型

number 、boolean 、string 、node-set 、tree

相互之间的转化

|

从 |

boolean |

number |

string |

node-set |

tree | |

boolean |

/ |

false -> 0

true -> 1 |

false -> 'false'

true -> 'true' |

不允许 |

不允许 | |

number |

0 -> false

非0-> true |

/ |

转化为十进制数 |

不允许 |

不允许 | |

string |

null-> false

其他-> true |

解析为十进制 |

/ |

不允许 |

不允许 | |

node-set |

empty -> false

其他-> true |

通过string 转化 |

文档顺序中第一个节点的字符串值 |

/ |

不允许 | |

tree |

通过string 转化 |

通过string 转化 |

连接所有的文本节点 |

不允许 |

/ |

说明:

Tree 很少见,只有在xsl:variable 中才出现。xslt2.0 已经取消该类型。另外,转化为node-set ,标准xslt1.0 不提供,但是扩展接口通常都是提供的。比如微软提供了msxsl:node-set 。

绝对路径的写法

即XPath 中直接包含的,和当前节点等同。上下文节点可以通过"."得到。

position()可以得到上下文节点的当前值。

last()可以得到上下文节点的大小

可以修改上下文节点的xslt 标签

xsl:apply-templates xsl:for-each

xsl:for-each 一个常用的特色就是修改context node

参见P282

|

Axes |

Description | | |

The ancestors of the context node.

<span style="font-size: 10pt;"><font face="&#x9ED1;&#x4F53;">ancestor::</font></span> | | |

The context node and its ancestors.

<span style="font-size: 10pt;"><font face="&#x9ED1;&#x4F53;">ancestor-or-self::</font></span> | | |

The attributes of the context node. | | |

The children of the context node. | | |

The descendants of the context node.

<span style="font-size: 10pt;"><font face="&#x9ED1;&#x4F53;">descendant::</font></span> | | |

The context node and its descendants. | | |

All nodes that are after the context node in the tree, excluding any descendants, attribute nodes, and namespace nodes. | | |

All the following siblings of the context node.

<span style="font-size: 10pt;"><font face="&#x9ED1;&#x4F53;">following-sibling::</font></span>

<span style="font-size: 10pt;"><font face="&#x9ED1;&#x4F53;">following-sibling::</font></span> | | |

The namespace nodes of the context node. | | |

The parent of the context node, if there is one. | | |

All nodes that are before the context node in the tree, excluding any ancestors, attribute nodes, and namespace nodes. | | |

All the preceding siblings of the context node.

<span style="font-size: 10pt;"><font face="&#x9ED1;&#x4F53;">preceding-sibling::</font></span>

<span style="font-size: 10pt;"><font face="&#x9ED1;&#x4F53;">preceding-sibling::</font></span> | | |

Just the context node itself. |

| <span style="font-size: 10pt;"><font face="&#x9ED1;&#x4F53;">self::</font></span> |

. | | <span style="font-size: 10pt;"><font face="&#x9ED1;&#x4F53;">attribute::</font></span> |

@ | | <span style="font-size: 10pt;"><font face="&#x9ED1;&#x4F53;">parent::</font></span> |

.. | | <span style="font-size: 10pt;"><font face="&#x9ED1;&#x4F53;">child::</font></span> | | | <span style="font-size: 10pt;"><font face="&#x9ED1;&#x4F53;">/descendant-or-self::node()</font></span> |

// |

[] 里面的值是boolean 类型,如果不是(数值除外)就会发生强制类型转化成boolean 。

数值的特性

NameTest *

Union |