name()和local-name()之间有什么区别?

我真的不明白XPath函数namelocal-name之间的区别。

你能举一个他们会有所不同的例子吗?

编辑

鉴于这个例子:

 <?xml version="1.0" ?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head></head> </html> 

我得到了与这两个查询相同的结果: //*[local-name()="head"]//*[name()="head"] 。 这是为什么?

随着XML的

 <x:html xmlns:x="http://www.w3.org/1999/xhtml"/> 

样式表

 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output indent="yes"/> <xsl:template match="*"> <local-name><xsl:value-of select="local-name()"/></local-name> <name><xsl:value-of select="name()"/></name> </xsl:template> </xsl:stylesheet> 

输出

 <local-name>html</local-name> <name>x:html</name> 

所以local-name()结果没有任何前缀, the name()结果可能包含一个前缀。

在你的示例中,默认名称空间声明不存在前缀,因此name()local-name()给出相同的结果。