Получение имени узла неизвестного узла XML - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть таблица стилей XML с переменными дочерними узлами, что-то вроде этого:

<fooz>
 <foo>
  <bar id="11">
 </foo>
 <foo>
  <baz id="22">
 </foo>
 <foo>
  <biz id="33">
 </foo>
</fooz>

Так что я знаю, что могу получить идентификаторы без проблем, используя

<xsl:value-of select="foo/*/@id"/>

Но я немного растерялся, когда дело доходит до получения имени узла, такого как "bar", "baz" или "biz". Я пробовал такие вещи без каких-либо счастливых результатов:

<xsl:value-of select="foo/node()"/>

Есть ли простой способ сделать это?

1 Ответ

3 голосов
/ 15 февраля 2012

Я попробовал первый xsl-оператор с вашим xml-примером, но я не смог получить все атрибуты id с ним, только первый. Чтобы получить все сразу, мне нужно было использовать оператор for-each.

Чтобы вернуть имя узла, вы можете использовать:

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

или

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

Чтобы получить все имена в элементах foo, я придумал следующее:

<xsl:for-each select="/fooz/foo/*">
  <tr>
    <td><xsl:value-of select="local-name()"/></td>
    <td><xsl:value-of select="@id" /></td>
  </tr>
</xsl:for-each>
...