XSLT - вложенный цикл - PullRequest
       2

XSLT - вложенный цикл

2 голосов
/ 01 июля 2010

У меня проблемы с XSLT, чтобы перебрать все строки, а затем все столбцы в каждом элементе строки.

Так что, если у меня есть этот XML:

<root>
<subelement>
<rows>
<row title="Row1">
  <column title="A" />
  <column title="B" />
</row>
<row title="Row2">
  <column title="C" />
  <column title="D" />
</row>
</rows>
</subelement>
</root>

Я хотел бы вывод, как это:

<h1>Row1</h1>
<ul>
  <li>A</li>
  <li>B</li>
</ul>
<h1>Row2</h1>
<ul>
  <li>C</li>
  <li>D</li>
</ul>

С уважением

Петр

Ответы [ 2 ]

2 голосов
/ 01 июля 2010

Это преобразование:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>

 <xsl:template match="row">
     <h1><xsl:value-of select="@title"/></h1>
     <ul>
       <xsl:apply-templates/>
     </ul>
 </xsl:template>

 <xsl:template match="column">
   <li><xsl:value-of select="@title"/></li>
 </xsl:template>
</xsl:stylesheet>

при применении к предоставленному документу XML:

<root>
    <subelement>
        <rows>
            <row title="Row1">
                <column title="A" />
                <column title="B" />
            </row>
            <row title="Row2">
                <column title="C" />
                <column title="D" />
            </row>
        </rows>
    </subelement>
</root>

создает искомыйвывод:

<h1>Row1</h1>
<ul>
   <li>A</li>
   <li>B</li>
</ul>
<h1>Row2</h1>
<ul>
   <li>C</li>
   <li>D</li>
</ul>
0 голосов
/ 01 июля 2010

Это книга, которую я могу рекомендовать для изучения XSLT:

XSLT: Справочник программиста, 2-е издание, Майкл Кей

Кроме того, этот веб-сайт очень удобен, на нем даже есть XSLT онлайнтестер: http://www.w3schools.com/xsl/default.asp

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