2012-01-23 2 views
0

У меня есть XML, как этотXSLT: Как динамически прокручивать и вызывать шаблоны и элементы отображения?

<info>list1</info> 
<count>24</count> 
<rtag>1111</rtag> 
<rtag>2222</rtag> ------upto 24 rtags 

Я хочу, чтобы отобразить содержимое, как показано ниже

list1 1111 2222 3333 ----------upto 10 items{next line} 
      1011 1022 1033-----------upto 10 times{next line} 
      1001 1002 1003--till remaining items 

здесь, в этом случае я получаю счет от backend.I хотите отобразить элементы, как показано выше динамически, используя значение count, вызвав template.can кто-нибудь, пожалуйста, помогите мне в получении этого?

+0

Так формат вывода должен быть простой текст? Пожалуйста, создайте образец XML и образец вывода, который на самом деле * соответствует * друг другу. Также: Сколько «списков» есть? Как они разделены? – Tomalak

+0

На странице будет 20 списков, и каждый список может содержать n номеров rtags. Все будет расположено в строках и coloumns. – VinayHere

+0

@ VinayHere, счетчик тегов содержит количество rtags? –

ответ

0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="text" encoding="Windows-1252" /> 
    <xsl:strip-space elements="*" /> 

    <xsl:variable name="padding1" select="'  '" /><!-- first col --> 
    <xsl:variable name="padding2" select="'  '" /> <!-- remaining cols --> 
    <xsl:variable name="per-row" select="10" />  <!-- column count --> 

    <xsl:template match="list"> 
    <xsl:value-of select="info" /> 
    <xsl:value-of select="substring($padding1, string-length(info) + 1)" /> 
    <xsl:apply-templates select="rtag" /> 
    </xsl:template> 

    <xsl:template match="rtag"> 
    <xsl:choose> 
     <xsl:when test="position() mod $per-row = 1 and position() &gt; 1"> 
     <xsl:value-of select="$padding1" /> 
     <xsl:call-template name="padded-value" /> 
     </xsl:when> 
     <xsl:otherwise> 
     <xsl:call-template name="padded-value" /> 
     <xsl:if test="position() mod $per-row = 0 or position = last()"> 
      <xsl:value-of select="'&#10;'" /> 
     </xsl:if> 
     </xsl:otherwise> 
    </xsl:choose> 
    </xsl:template> 

    <xsl:template name="padded-value"> 
    <xsl:value-of select="substring($padding2, string-length() + 1)" /> 
    <xsl:value-of select="." /> 
    </xsl:template> 
</xsl:stylesheet> 

применяется к

<list> 
    <info>list1</info> 
    <count>24</count> 
    <rtag>1111</rtag><rtag>1111</rtag><rtag>1111</rtag><rtag>1111</rtag><rtag>1111</rtag> 
    <rtag>1111</rtag><rtag>1111</rtag><rtag>1111</rtag><rtag>1111</rtag><rtag>1111</rtag> 
    <rtag>222</rtag><rtag>2222</rtag><rtag>2222</rtag><rtag>2222</rtag><rtag>2222</rtag> 
    <rtag>2222</rtag><rtag>2222</rtag><rtag>2222</rtag><rtag>2222</rtag><rtag>2222</rtag> 
    <rtag>333</rtag><rtag>3333</rtag><rtag>3333</rtag><rtag>3333</rtag> 
</list> 

производит

 
list1  1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 
      222 2222 2222 2222 2222 2222 2222 2222 2222 2222 
      333 3333 3333 3333 
Смежные вопросы