Цикл по XML-тегам с XSLT - PullRequest
       2

Цикл по XML-тегам с XSLT

1 голос
/ 30 марта 2011

У меня есть XML, который имеет следующее содержимое:

<ruletypes>
 <ruletype>Local</ruletype>
 <ruletype>Global</ruletype>
 ...
</ruletypes>

Мне нужен список типов правил, я попробовал следующее:

<xsl:for-each select="//ruletypes/ruletype">
 <li><xsl:value-of select="ruletype"/></li>
</xsl:for-each>

, но он не работает

Ответы [ 2 ]

3 голосов
/ 30 марта 2011

Eschew for-each и пусть процессор XSLT выполняет большую часть работы:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="ruletype">
        <li><xsl:apply-templates/></li>
    </xsl:template>
</xsl:stylesheet>

Применительно к этому документу:

<ruletypes>
   <ruletype>Local</ruletype>
   <ruletype>Global</ruletype>
</ruletypes>

Создает следующий вывод:

<li>Local</li>
<li>Global</li>

Обратите внимание, что здесь используется встроенный шаблон XSLT для элементов, который поддерживает обработку, пока не встретится "интересный" узел, и встроенный шаблон для текстовых узлов,который копирует текст.

3 голосов
/ 30 марта 2011

изменить выбор следующим образом:

<xsl:template match="/">
<xsl:for-each select="//ruletypes/ruletype">
      <li><xsl:value-of select="."/></li>
</xsl:for-each>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...