2013-08-19 4 views
2

Я редактирую файл XSL и не могу получить имя элемента.Как получить имя элемента в XSLT

Все здесь работает, за исключением ../../name(). Что мне пытается сделать, чтобы получить имя элемента. Все под ним успешно получает атрибуты того же элемента, поэтому, надеюсь, что работа ../../@name (и т. Д.) Должна четко показать, что я пытаюсь сделать с ../../name().

<tr> 
<td><xsl:value-of select="../../name()" /></td> 
<td><xsl:value-of select="../../@name"/></td> 
<td><xsl:value-of select="../../@alias"/></td> 
<td><xsl:value-of select="../../@comment"/><xsl:text>...</xsl:text></td> 
<td><xsl:value-of select="../../dxl:wassignedby" /></td> 
<td><xsl:apply-templates select="."/></td> 
</tr> 

Кусок XML (в случае, если это поможет вам визуализировать то, что я говорю о) является:

<form name="Extended Content" alias="CONTENT" hide="notes" nocompose="true" noquery="true" publicaccess="false" designerversion="8"> 

я успешно получаю (например) "Extended Content" с ../../@name, но не получая «форму» с ../../name().

+0

Вы не получаете форму «...» _ - что вы получаете? Пожалуйста, покажите фактический результат для шаблона. –

+0

С тем, что у меня есть, я получаю сообщение об ошибке. – iconoclast

ответ

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

Работает только в XPath 2.0, где:

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

работает и в XPath 1.0 и 2.0. Поэтому я предполагаю, что вы используете XPath 1.0, и вы должны использовать последнюю.

+1

Адрес XPath не может заканчиваться на «/», поэтому, когда у вас есть имя (../../) 'вам нужно имя (../ ..)'. –

+0

@ G.KenHolman Thx за советом, должен был потратить второй, чтобы подумать после копирования и вставки;) – hek2mgl

+0

Awesome. Это полностью проясняет ситуацию. – iconoclast

2

Необходимо указать параметр для имени(). Параметр для перехода к названию будет

name(.) 

период означает текущий узел. Вот ссылка, которая объясняет это лучше. Is there an XSLT name-of element?

+0

Спасибо за помощь. Я знал о существовании 'name()', но я не мог заставить его работать. Так что это не дубликат. – iconoclast

+0

@iconoclast ok Я удалил его. –

+0

@JackThor Я чувствовал, что включение ссылки на другой вопрос было действительно хорошим, потому что оно также упоминало «локальное имя», которое при чтении ответов на этот вопрос обычно является лучшим способом получить имя элемента. Поэтому я хотел бы либо включить информацию об этом, либо добавить ссылку обратно. –

Смежные вопросы