2016-08-09 4 views
0

У меня есть данные для изображений, как это:XSLT Группировка для HTML

<data> 
    <image> 
     <type>preview</type> 
     <pageNr>1</pageNr> 
     <url>5981-211.png</url> 
    </image> 
    <image> 
     <type>thumbnail</type> 
     <pageNr>1</pageNr> 
     <url>5549a_aldj_thumb.png</url> 
    </image> 
    <image> 
     <type>big thumb</type> 
     <url>47697-4921.png</url> 
    </image> 
    <image> 
     <type>preview</type> 
     <pageNr>2</pageNr> 
     <url>491-d91.png</url> 
    </image> 
    <image> 
    <type>thumbnail</type> 
     <pageNr>2</pageNr> 
     <url>491-d91_thumb.png</url> 
    </image> 
</data> 

И я хочу, чтобы создать следующий вывод HTML:

<a href="5981-211.png" title="1"> 
    <img src="5549a_aldj_thumb.png" /> 
</a> 
<a href="491-d91.png" title="2"> 
    <img src="491-d91_thumb.png" /> 
</a> 

Для каждого preview есть thumbnail с тем же pageNr ,

Как сгруппировать данные и вложить <img> в тег <a>?

ответ

1

Это может быть достигнуто с использованием ключа для поиска на «Ленфильм» изображения

<xsl:key name="thumb" match="image[type='thumbnail']" use="pageNr" /> 

Вы бы начать с выбора «Предварительный просмотр» элементы

<xsl:apply-templates select="image[type='preview']"/> 

И в шаблоне что соответствует этому, вы должны создать тег a, а затем выбрать дочерние элементы «эскиза», используя ключ

<a href="{url}" title="{pageNr}"> 
    <xsl:apply-templates select="key('thumb', pageNr)" /> 
</a> 

И в шаблоне, который соответствует эскизов, вы бы создать img тег как так:

<img src="{url}" /> 

Тест XSLT

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="html" indent="yes" /> 

    <xsl:key name="thumb" match="image[type='thumbnail']" use="pageNr" /> 

    <xsl:template match="/data"> 
     <body> 
     <xsl:apply-templates select="image[type='preview']"/> 
     </body> 
    </xsl:template> 

    <xsl:template match="image[type='preview']"> 
     <a href="{url}" title="{pageNr}"> 
      <xsl:apply-templates select="key('thumb', pageNr)" /> 
     </a> 
    </xsl:template> 

    <xsl:template match="image[type='thumbnail']"> 
     <img src="{url}" /> 
    </xsl:template> 
</xsl:stylesheet> 
Смежные вопросы