Как объединить родительский тег с именем дочернего тега в XSLT

#xml #xslt

#xml #xslt

Вопрос:

Как объединить родительский тег с именем дочернего тега в XSLT

В настоящее время я могу получить значения родительского и дочернего узлов, но я не знаю, как объединить их в одно значение

 <xsl:value-of select="name()"/>  //gives child name
<xsl:value-of select="name(..)"/> //gives parent name
  

Я хочу сделать что-то вроде <xsl:value-of select="concat(name(..),name())"/>

таким образом, результатом будет Parent_Child

Ответ №1:

Существует несколько вариантов:

  • concat()
  • Несколько value-of , например

    <xsl:value-of select="name()"/>_<xsl:value-of select="name(..)"/>

Комментарии:

1. Спасибо. Как я могу получить родительский элемент следующего уровня, например name (…) ?. Но… не работает

2. Я не понимаю вопроса. Вы ищете ../.. ? Или ancestor-or-self::* ось?

3. concat() под вопросом функция. Чего не хватает в этом ответе, так это примера. Это было бы concat(name(..),'-',name()) .

Ответ №2:

Если вы хотите создать новое имя элемента на основе этого

 <xsl:element name="{concat(name(..),'_',name(.))}"/>