首页  :: 新随笔  :: 联系 :: 管理

偶尔当我们使用xsl样式表来自定义xml数据的输出时,会发现如果被匹配查找的节点中含有命名空间的定义,这些节点用一般的查找方式是找不到的。

E.g

<?xml version="1.0" encoding="utf-8"?>
<articlexmlns="http://docbook.org/ns/docbook"version="5.0">
<title>I Am Title</title>
<para>I am content.</para>
</article>

如果采用 <xsl:apply-templates select="article"/>来匹配article是找不到这个节点的。必须要采用下面的方式才可以。
首先要在stylesheet 加入下面的命名空间别名:

<xsl:stylesheetversion="1.0"
  
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  
xmlns:a="http://docbook.org/ns/docbook"
  
exclude-result-prefixes="a"
  
>
然后采用下面的方式匹配article即可。

<xsl:apply-templatesselect="a:article"/>