Извинения заранее - общий новичок здесь и борется после прочтения почти каждой темы XSLT здесь. Поэтому я отчаянно нуждаюсь в нескольких аспиринах и вашем руководстве!XSLT - петля, счет, позиция() с переменными
У меня есть три входных параметра/переменные, которые необходимо обработать с помощью xslt версии 1.0.
<!-- Variables in the XSL -->
<xsl:variable name="tw">125</xsl:variable>
<xsl:variable name="rows">4</xsl:variable>
<xsl:variable name="cols">6</xsl:variable>
Я хочу, чтобы в конечном итоге с расчетными значениями (пиксели) в «фона позиции» в HTML, как показано ниже: -
<div style="background-position:-0px -0px;"><img src="images/thumbs/1.jpg" alt="one" /></div>
<div style="background-position:-125px -0px;"><img src="images/thumbs/2.jpg" alt="two" /></div>
<div style="background-position:-250px -0px;"><img src="images/thumbs/3.jpg" alt="three" /></div>
<div style="background-position:-375px -0px;"><img src="images/thumbs/4.jpg" alt="four" /></div>
<div style="background-position:-500px -0px;"><img src="images/thumbs/5.jpg" alt="five" /></div>
<div style="background-position:-625px -0px;"><img src="images/thumbs/6.jpg" alt="six" /></div>
<div style="background-position:-0px -125px;"><img src="images/thumbs/7.jpg" alt="seven" /></div>
<div style="background-position:-125px -125px;"><img src="images/thumbs/8.jpg" alt="eight" /></div>
<div style="background-position:-250px -125px;"><img src="images/thumbs/9.jpg" alt="nine" /></div>
<div style="background-position:-375px -125px;"><img src="images/thumbs/10.jpg" alt="ten" /></div>
<div style="background-position:-500px -125px;"><img src="images/thumbs/11.jpg" alt="11" /></div>
<div style="background-position:-625px -125px;"><img src="MIB/images/thumbs/12.jpg" alt="12" /></div>
<div style="background-position:-0px -250px;"><img src="images/thumbs/13.jpg" alt="13" /></div>
<div style="background-position:-125px -250px;"><img src="/mages/thumbs/14.jpg" alt="14" /></div>
<div style="background-position:-250px -250px;"><img src="images/thumbs/15.jpg" alt="15" /></div>
<div style="background-position:-375px -250px;"><img src="images/thumbs/16.jpg" alt="16" /></div>
<div style="background-position:-500px -250px;"><img src="images/thumbs/17.jpg" alt="17" /></div>
<div style="background-position:-625px -250px;"><img src="images/thumbs/18.jpg" alt="18" /></div>
<div style="background-position:-0px -375px;"><img src="images/thumbs/19.jpg" alt="19" /></div>
<div style="background-position:-125px -375px;"><img src="images/thumbs/20.jpg" alt="20" /></div>
<div style="background-position:-250px -375px;"><img src="images/thumbs/21.jpg" alt="21" /></div>
<div style="background-position:-375px -375px;"><img src="images/thumbs/22.jpg" alt="22" /></div>
<div style="background-position:-500px -375px;"><img src="images/thumbs/23.jpg" alt="23" /></div>
<div style="background-position:-625px -375px;"><img src="images/thumbs/24.jpg" alt="24" /></div>
Я понимаю, что нужно как-то зациклиться и сохранить счет (как-то), и увидев многочисленные примеры циклов и подсчета, я ожидал, что процесс будет прямым, но затем я прочитал около position()
и number
и так много других вещей, которые моя голова вращается. Я не знаю, как или где позиционировать цикл подсчета в операторе for-each
или даже если оптимальным решением является for-each
. Ни одна из моих слабых попыток не создала хорошо сформированный XSL, поэтому вы можете видеть, что я не получаю быстрых результатов.
Так вот, надеясь, что один из гуру здесь может помочь мне начать процесс и помочь в моем понимании xslt.
Данные изображения приходит из файла XML, и я могу обрабатывать IMG SRC и альт без проблем, так что это только расчеты пикселов, зацикливание, подсчитывая и т.д., что является проблемой
<xsl:for-each select="DATASET/ITEM">
<div style="background-position:-{rowpos}px -{colpos}px;"><img src="{thumbnailimage}" alt="{imagealttext}" /></div>
</xsl:for-each>
<!-- rowpos and colpos are the calculated values that are generated from whatever loop and count process is used -->
Так для уточнения:
Расчет. Существует 3 переменных, которые будут давать 6 вычисленных значений. TW = 125. Ширина используется для положений фона, поэтому в зависимости от строки/столбца вычисленные значения приведены в примере - например. tw-tw, tw, tw * 2, tw * 3, tw * 4 и tw * 5 (всего 6 расчетов). Количество строк и количество столбцов определяет, как и где каждая эскиз помещается с использованием вычисленных значений пикселей, которые в приведенном выше случае равны 0px, -125px, -250px, -375px, -500px и -675px.
Дальнейшее расширение вычислений: - Положение строк и столбцов определяется шириной уменьшенного изображения. Позиция каждого эскиза определяется количеством строк и количеством столбцов. В сетке 3-х столбчатых столбцов с большими большими пальцами шириной 150 пикселей потребуются 9 эскизов, поэтому 9 наборов значений px, но потребуется только 2 уникальных вычисления, например. ТВт * 2 и ТВт * 3, как показано ниже: -
<div style="background-position: -0px -0px;" /><img src="image 1.jpg" alt="Alt text 1" /></div>
<div style="background-position: -125px -0px;" /><img src="image 2.jpg" alt="Alt text 2" /></div>
<div style="background-position: -250px -0px;" /><img src="image 3.jpg" alt="Alt text 3" /></div>
<div style="background-position: -375px -0px;" /><img src="image 4.jpg" alt="Alt text 4" /></div>
<div style="background-position: -500px -0px;" /><img src="image 5.jpg" alt="Alt text 5" /></div>
<div style="background-position: -0px -125px;" /><img src="image 6.jpg" alt="Alt text 6" /></div>
<div style="background-position: -125px -125px;" /><img src="image 7.jpg" alt="Alt text 7" /></div>
<div style="background-position: -250px -125px;" /><img src="image 8.jpg" alt="Alt text 8" /></div>
<div style="background-position: -375px -125px;" /><img src="image 9.jpg" alt="Alt text 9" /></div>
<div style="background-position: -500px -125px;" /><img src="image 10.jpg" alt="Alt text 10" /></div>
<div style="background-position: -0px -250px;" /><img src="image 11.jpg" alt="Alt text 11" /></div>
<div style="background-position: -125px -250px;" /><img src="image 12.jpg" alt="Alt text 12" /></div>
<div style="background-position: -250px -250px;" /><img src="image 13.jpg" alt="Alt text 13" /></div>
<div style="background-position: -375px -250px;" /><img src="image 14.jpg" alt="Alt text 14" /></div>
<div style="background-position: -500px -250px;" /><img src="image 15.jpg" alt="Alt text 15" /></div>
<div style="background-position: -0px -375px;" /><img src="image 16.jpg" alt="Alt text 16" /></div>
<div style="background-position: -125px -375px;" /><img src="image 17.jpg" alt="Alt text 17" /></div>
<div style="background-position: -250px -375px;" /><img src="image 18.jpg" alt="Alt text 18" /></div>
<div style="background-position: -375px -375px;" /><img src="image 19.jpg" alt="Alt text 19" /></div>
<div style="background-position: -500px -375px;" /><img src="image 20.jpg" alt="Alt text 20" /></div>
XML файл Изображение ЦСИ и альтернативный текст приходят из файла XML: -
<DATASET>
<ITEM>
<THUMBNAILIMAGE>image1.jpg</THUMBNAILIMAGE>
<IMAGEALTTEXT>Alt text 1</IMAGEALTTEXT>
</ITEM>
<ITEM>
<THUMBNAILIMAGE>image2.jpg</THUMBNAILIMAGE>
<IMAGEALTTEXT>Alt text 2</IMAGEALTTEXT>
</ITEM>
......
<ITEM>
<THUMBNAILIMAGE>image20.jpg</THUMBNAILIMAGE>
<IMAGEALTTEXT>Alt text 20</IMAGEALTTEXT>
</ITEM>
</DATASET>
Итак, в чем вопрос? Я его не вижу. Кроме того, где находится исходный XML-документ (насколько это возможно, пожалуйста)? В чем смысл переменных с именами криков (btw, их значения все установлены не лучшим образом)? Наконец, каковы требования к трансформации? Пожалуйста, отредактируйте вопрос и предоставьте всю эту важную недостающую информацию, чтобы дать ей смысл. –
@Dimitre: Я надеялся, что вы ответите ... но не таким образом :(Я думал, что вопрос ясен - как мне достичь расчетов через цикл и написать html в показанном примере. Мне нужно предоставить. Не существует XML-файла. XSLT будет передан три параметра - tw, cols, rows. Извините, я не понимаю вопрос о требованиях к трансформации. Все, что я хочу сделать, это разместить правильно рассчитанный пиксель значения ROWPOS и COLPOS с использованием правильно написанного xslt. – PBB
Вычислить * что *? Любые * правила * для расчета? Как должны генерироваться значения для позиций? Используя то, что * rules *? Как вы можете сказать, что «Нет XML-файла как таковой », когда ваш код содержит выражение XPath« DATASET/ITEM »??? Почему люди должны задавать эти вопросы или угадывать? Вся эта важная информация должна быть в вопросе, иначе вопрос не имеет смысла. –