В чем разница между name() и local-name()?
Я действительно не понимаю разницу между функциями XPath name
и local-name
.
не могли бы вы привести пример ситуации, где они будут отличаться?
Edit
приводил такой пример:
<?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"]
. Почему?
1 ответ:
С 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()
даст тот же результат.