我真的不明白XPath函数
name
和
local-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()结果没有任何前缀,name()结果可能包含一个前缀。
在使用默认名称空间声明的示例中,不存在前缀,因此name()和local-name()给出相同的结果。