Каково различие между именем () и локальным именем ()?

Я действительно не понимаю различия между функциями XPath name и local-name.

Вы могли дать пример ситуации, где они отличались бы?

Править

Учитывая этот пример:



  

Я получаю тот же результат с этими двумя запросами: //*[local-name()="head"] и //*[name()="head"]. Почему это?

53
задан troelskn 17 March 2010 в 06:19
поделиться

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 () не имеет префикса, результат name () может включить префикс.

В вашем примере с объявлением пространства имен по умолчанию префикс отсутствует, поэтому name () и local-name () дают тот же результат.

74
ответ дан 7 November 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: