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