Мне нужна помощь с шаблоном в xsl-fo для создания pdf-файла из XML-данных.Таблица xsl-fo для отображения данных xml для создания pdf
Моя проблема заключается в том, что мне нужно создать таблицу, которая получает только один элемент (узел) многих.
Для exaple я мог бы иметь XML, который выглядит, как этот
<CollectionOfItems>
<items>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
</items>
<items>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
</items>
</items>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
<title ID="someid" location="somelocation" price="someprice"/>
</items>
</CollectionOfItems>
Каждый «пункты» узлы должны находиться в отдельной таблице ... так что я сделал таблицу в XSL-FO таблицы, которая выглядит как это
<fo:table width="100%" border-style="outset" border-width="2pt" background-repeat="no-repeat">
<fo:table-column/>
<fo:table-column/>
<fo:table-column/>
<fo:table-body>
<xsl:for-each select="/Items/item/DataModification/Form/Tab/ModControl/Value/CompetenceConfig/Chapters/Chapter">
<xsl:variable name="Chapter" select="."/>
<fo:table-row>
<fo:table-cell border-style="inset" border-width="2pt" padding="2pt" background-repeat="repeat" display-align="center">
<fo:block>
<xsl:value-of select="@ID"/>
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="inset" border-width="2pt" padding="2pt" background-repeat="repeat" display-align="center">
<fo:block>
<xsl:value-of select="@location"/>
</fo:block>
</fo:table-cell>
<fo:table-cell border-style="inset" border-width="2pt" padding="2pt" background-repeat="repeat" display-align="center">
<fo:block>
<xsl:value-of select="@price"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
Это своего рода работает, но вместо того, чтобы, например, один «пункты» узел с деталями внутри каждую таблицу я получаю 3 таблицы с «пунктами» узлы, которые выглядят S- AME. Как я могу показать первый элемент «узлы» в первой таблице, второй узел «items» во второй таблице и так далее? Я бы очень признателен за любую помощь в этом. Я пытался решить это в течение нескольких дней, и я новичок в xsl-fo.
Большое спасибо!
Показаны нас это в вашем XSL: /товаров/пункт/DataModification/Форма/Tab/ModControl/Значение/CompetenceConfig/главы/Глава И затем предоставляя XML, который даже близко не к тому, что структура (ни шаблон выше него) бесполезен. Никто не может догадаться о том, в каком контексте вы работаете. –
Итак, чтобы вы объяснили дальше и основываясь на своем вводе ... вы говорите, что хотите шесть таблиц? Первый будет иметь 3 строки, а второй - три строки. третьи три строки, четвертый, пятый и шесть по одному ряду? Это то, что вы просите? –
Извините, Кевин, я хотел изменить это на/CollectionOfItems/items/title. – jcolon