偶尔当我们使用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"/>