В чем разница между 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()даст тот же результат.