如何处理XSLT中的命名空间?

时间:2009-07-18 14:50:01

标签: xml xslt namespaces

如果我有这样的XML:

  <sample>
     <a:element1 xmlns:a="..." />
     <b:element2 xmlns:b="..." />
  </sample>

由于前缀<sample>a:,似乎XSL无法找到b:的两个子节点。

如果我删除了两个前缀以及名称空间声明,则会找到它们。

问题是我无法对原始XML文件做任何事情。那么如何找到<element1><element2>

1 个答案:

答案 0 :(得分:1)

这应该有效:

 <xsl:stylesheet
        xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
        xmlns:a="http://nsa"
        xmlns:b="http://nsb"
        version='1.0'
        >
<xsl:template match="sample">
  <xsl:value-of select="a:element1/@id"/>
   <xsl:value-of select="b:element2/@id"/>
</xsl:template>

</xsl:stylesheet>