您好我需要XSL-FO Schema的帮助。我使用三个for-each循环彼此嵌套。但对于每一个" DVD"列出了所有"电影"和每个人"电影"列出了所有"字符"。我需要建议如何输入一个条件,只显示该DVD上的电影和电影中的人物。
xml文件:
<databaza>
<dvd>
<id>01</id>
<typ_DVD>DVD-R</typ_DVD>
<nazov_DVD>Filmy-1994</nazov_DVD>
<datum_vytvorenia>20.3.2015</datum_vytvorenia>
<volne_miesto>249 MB</volne_miesto>
<prepisovatelne>NIE</prepisovatelne>
<pocet_filmov>2</pocet_filmov>
<movie>
<film_id>1</film_id>
<nazov_filmu>Vykoupení z věznice Shawshank </nazov_filmu>
<popis>Strhující příběh o přátelství, naději a moudrosti s velmi výraznými hereckými i charakterovými osobnostmi.</popis>
<dlzka>142 min</dlzka>
<jazyk>CZK</jazyk>
<titulky>NIE</titulky>
<jazyk_titulky>Bez tituliek</jazyk_titulky>
<pocet_postav>2</pocet_postav>
<character>
<postava_id>1</postava_id>
<nazov_postava>Andy Dufresne</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Tim Robbins</hral>
</character>
<character>
<postava_id>1</postava_id>
<nazov_postava>Rede</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Morgan Freeman</hral>
</character>
</movie>
<movie>
<film_id>2</film_id>
<nazov_filmu>Forrest Gump</nazov_filmu>
<popis>Forrest Gump, typický obyčejný muž,
který od dětství dělal, co se mu řeklo.</popis>
<dlzka>142 min</dlzka>
<jazyk>CZK</jazyk>
<titulky>NIE</titulky>
<jazyk_titulky>Bez tituliek</jazyk_titulky>
<pocet_postav>4</pocet_postav>
<character>
<postava_id>2</postava_id>
<nazov_postava>Forrest Gump</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Tom Hanks</hral>
</character>
<character>
<postava_id>2</postava_id>
<nazov_postava>Jenny Curran</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Robin Wright</hral>
</character>
<character>
<postava_id>2</postava_id>
<nazov_postava>Bubba</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Mykelti Williamson</hral>
</character>
<character>
<postava_id>2</postava_id>
<nazov_postava>Dan Taylor</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Gary Sinise</hral>
</character>
</movie>
</dvd>
<dvd>
<id>02</id>
<typ_DVD>DVD-RW</typ_DVD>
<nazov_DVD>Filmy-1999</nazov_DVD>
<datum_vytvorenia>12.8.2015</datum_vytvorenia>
<volne_miesto>24 MB</volne_miesto>
<prepisovatelne>ANO</prepisovatelne>
<pocet_filmov>3</pocet_filmov>
<movie>
<film_id>3</film_id>
<nazov_filmu>Zelená míle</nazov_filmu>
<popis>Paul pracuje jako dozorce ve vězení pro těžké zločince,
kteří jsou odsud posíláni na smrt.</popis>
<dlzka>188 min</dlzka>
<jazyk>ENG</jazyk>
<titulky>ÁNO</titulky>
<jazyk_titulky>CZK</jazyk_titulky>
<pocet_postav>3</pocet_postav>
<character>
<postava_id>3</postava_id>
<nazov_postava>Paul Edgecomb</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Tom Hanks</hral>
</character>
<character>
<postava_id>3</postava_id>
<nazov_postava>John Coffey</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Michael Clarke Duncan</hral>
</character>
<character>
<postava_id>3</postava_id>
<nazov_postava>Brutus „Brutal“ Howell</nazov_postava>
<hlavna_postava>NIE</hlavna_postava>
<hral>David Morse</hral>
</character>
</movie>
<movie>
<film_id>4</film_id>
<nazov_filmu>Matrix</nazov_filmu>
<popis>Film popisuje svět v Matrixu, rozsáhlém počítačovém systému,
na který jsou připojeni lidé žijící v něm svůj virtuální život.</popis>
<dlzka>131 min</dlzka>
<jazyk>ENG</jazyk>
<titulky>ÁNO</titulky>
<jazyk_titulky>CZK</jazyk_titulky>
<pocet_postav>3</pocet_postav>
<character>
<postava_id>4</postava_id>
<nazov_postava>Neo</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Keanu Reeves</hral>
</character>
<character>
<postava_id>4</postava_id>
<nazov_postava>Morpheus</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Laurence Fishburne</hral>
</character>
<character>
<postava_id>4</postava_id>
<nazov_postava>Trinity</nazov_postava>
<hlavna_postava>NIE</hlavna_postava>
<hral>Carrie-Anne Moss</hral>
</character>
</movie>
<movie>
<film_id>5</film_id>
<nazov_filmu>Pelíšky</nazov_filmu>
<popis>Príjemný film zaľudnený osobitými postavami,
s humorom a nadsázkou o rodinách, rodičoch, deťoch,
rodinných trapasoch, bolestiach a bremenách, ale aj o dobe,
v ktorej sa neroztápali len umelohmotné lyžičky v káve...</popis>
<dlzka>115 min</dlzka>
<jazyk>CZK</jazyk>
<titulky>NIE</titulky>
<jazyk_titulky>Bez tituliek</jazyk_titulky>
<pocet_postav>3</pocet_postav>
<character>
<postava_id>5</postava_id>
<nazov_postava>Šebek</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Miroslav Donutil</hral>
</character>
<character>
<postava_id>5</postava_id>
<nazov_postava>Michal Šebek</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Michal Beran</hral>
</character>
<character>
<postava_id>5</postava_id>
<nazov_postava>Babička Šebková</nazov_postava>
<hlavna_postava>NIE</hlavna_postava>
<hral>Stella Zázvorková</hral>
</character>
</movie>
</dvd>
<dvd>
<id>03</id>
<typ_DVD>DVD-R</typ_DVD>
<nazov_DVD>Rozprávky</nazov_DVD>
<datum_vytvorenia>21.2.2015</datum_vytvorenia>
<volne_miesto>322 MB</volne_miesto>
<prepisovatelne>NIE</prepisovatelne>
<pocet_filmov>2</pocet_filmov>
<movie>
<film_id>6</film_id>
<nazov_filmu>Sněhurka a sedm trpaslíků</nazov_filmu>
<popis>Příběh, ve kterém se mísí pohádkové kouzlo,
dechberoucí napětí a neobyčejná odvaha, začíná
jak jinak u kouzelného zrcadla.</popis>
<dlzka>83 min</dlzka>
<jazyk>CZK</jazyk>
<titulky>NIE</titulky>
<jazyk_titulky>Bez tituliek</jazyk_titulky>
<pocet_postav>3</pocet_postav>
<character>
<postava_id>6</postava_id>
<nazov_postava>Sněhurka</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Kreslená postava</hral>
</character>
<character>
<postava_id>6</postava_id>
<nazov_postava>Princ</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Kreslená postava</hral>
</character>
<character>
<postava_id>6</postava_id>
<nazov_postava>Královna</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Kreslená postava</hral>
</character>
</movie>
<movie>
<film_id>7</film_id>
<nazov_filmu>Shrek </nazov_filmu>
<popis>Shrek, zelený obr s tykadly mimozemšťanů,
žije sice docela sám, ale šťastně ve svém domku
na samotě u lesa až do chvíle, kdy je doslova
přepaden nekonečným zástupem známých i méně známých
pohádkových postaviček.</popis>
<dlzka>90 min</dlzka>
<jazyk>CZK</jazyk>
<titulky>NIE</titulky>
<jazyk_titulky>Bez tituliek</jazyk_titulky>
<pocet_postav>4</pocet_postav>
<character>
<postava_id>7</postava_id>
<nazov_postava>Shrek</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Kreslená postava</hral>
</character>
<character>
<postava_id>7</postava_id>
<nazov_postava>Princezna Fiona</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Kreslená postava</hral>
</character>
<character>
<postava_id>7</postava_id>
<nazov_postava>Oslík</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Kreslená postava</hral>
</character>
<character>
<postava_id>7</postava_id>
<nazov_postava>Kocour v botách</nazov_postava>
<hlavna_postava>ANO</hlavna_postava>
<hral>Kreslená postava</hral>
</character>
</movie>
</dvd>
</databaza>
现在我的xsl-fo:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master master-name="my-page" page-height="297mm" page-width="210mm"
margin="1in">
<fo:region-body margin-bottom="15mm" margin-top="15mm"/>
<fo:region-after extent="5mm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="my-page">
<fo:static-content flow-name="xsl-region-after">
<fo:block text-align="center">
<xsl:text>Page </xsl:text>
<fo:page-number/>
<xsl:text> from </xsl:text>
<fo:page-number-citation ref-id="last_page"/>
</fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body" font-family="Arial,Helvetica,sans-serif"
font-size="12pt">
<xsl:apply-templates select="databaza"/>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:attribute-set name="bunka.datum">
<xsl:attribute name="padding">2pt</xsl:attribute>
<xsl:attribute name="text-align">center</xsl:attribute>
<xsl:attribute name="border-style">solid</xsl:attribute>
<xsl:attribute name="border-width">1pt</xsl:attribute>
</xsl:attribute-set>
<xsl:template match="databaza">
<fo:table width="100%" border-width="1pt" border-after-width="0pt"
border-collapse="collapse">
<fo:table-column column-width="50%"/>
<fo:table-column column-width="50%"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell padding="4pt" font-size="150%" font-weight="bold"
text-align="center" number-columns-spanned="2">
<fo:block>Osobné údaje:</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<fo:block>Vlastník:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<xsl:apply-templates select="vlastnik"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<fo:block>Adresa:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<xsl:apply-templates select="adresa"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<fo:block>Telefónne číslo:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<xsl:apply-templates select="telefon"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell number-columns-spanned="2">
<fo:block text-align-last="justify" space-after="0pt"
keep-with-next="always" clear="both" color="red">
<fo:leader leader-pattern="rule"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
<fo:block>
<fo:leader/>
</fo:block>
<fo:block font-size="150%" font-weight="bold" text-align="center">Zoznam DVD:</fo:block>
<fo:block>
<fo:leader/>
</fo:block>
<xsl:for-each-group select="/databaza/dvd" group-by="id">
<fo:block keep-together.within-column="always">
<fo:table width="100%" border-width="1pt" border-after-width="0pt"
border-collapse="collapse">
<fo:table-column column-width="50%"/>
<fo:table-column column-width="50%"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell padding="4pt" font-size="150%" font-weight="bold"
text-align="center" number-columns-spanned="2">
<fo:block>DVD:</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<fo:block>Typ DVD:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<xsl:apply-templates select="typ_DVD"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<fo:block>Dátum vytvorenia:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<xsl:apply-templates select="datum_vytvorenia"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<fo:block>Voľné miesto:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<xsl:apply-templates select="volne_miesto"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<fo:block>Prepisovateľné:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<xsl:apply-templates select="prepisovatelne"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<fo:block>Počet filmov:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid" border-width="1pt">
<xsl:apply-templates select="pocet_filmov"/>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
<xsl:for-each select="/databaza/dvd/movie">
<fo:block keep-together.within-column="always">
<fo:table width="100%" border-width="1pt" border-after-width="0pt"
border-collapse="collapse">
<fo:table-column column-width="50%"/>
<fo:table-column column-width="50%"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell padding="4pt" font-size="150%" font-weight="bold"
text-align="center" number-columns-spanned="2">
<fo:block>Movie:</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<fo:block>Názov filmu:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<xsl:apply-templates select="nazov_filmu"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<fo:block>Popis:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<xsl:apply-templates select="popis"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<fo:block>Dĺžka:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<xsl:apply-templates select="dlzka"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<fo:block>Jazyk:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<xsl:apply-templates select="jazyk"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<fo:block>Titulky:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<xsl:apply-templates select="titulky"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<fo:block>Jazyk Tituliek:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<xsl:apply-templates select="jazyk_titulky"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<fo:block>Počet postáv:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<xsl:apply-templates select="pocet_postav"/>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
<xsl:for-each select="/databaza/dvd/movie/character">
<fo:block keep-together.within-column="always">
<fo:table width="100%" border-width="1pt" border-after-width="0pt"
border-collapse="collapse">
<fo:table-column column-width="50%"/>
<fo:table-column column-width="50%"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell padding="4pt" font-size="150%"
font-weight="bold" text-align="center"
number-columns-spanned="2">
<fo:block>Character:</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<fo:block>Názov postavy:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<xsl:apply-templates select="nazov_postava"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<fo:block>Hlavná postava:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<xsl:apply-templates select="hlavna_postava"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<fo:block>Hral:</fo:block>
</fo:table-cell>
<fo:table-cell padding="4pt" border-style="solid"
border-width="1pt">
<xsl:apply-templates select="hral"/>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell number-columns-spanned="2">
<fo:block text-align-last="justify" space-after="0pt"
keep-with-next="always" clear="both" color="red">
<fo:leader leader-pattern="rule"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each-group>
<fo:block id="last_page"/>
</xsl:template>
<xsl:template match="vlastnik">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="adresa">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="telefon">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="typ_DVD">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="nazov_DVD">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="datum_vytvorenia">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="volne_miesto">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="prepisovatelne">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="pocet_filmov">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="film_id">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="nazov_filmu">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="popis">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="dlzka">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="jazyk">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="titulky">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="jazyk_titulky">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="pocet_postav">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="postava_id">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="nazov_postava">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="hlavna_postava">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="hral">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
</xsl:stylesheet>
我更改了主要部分的名称,其他部分则用捷克语编写。 你能帮我解决这个问题吗?
答案 0 :(得分:2)
由于元素是嵌套的,您可以简单地将<xsl:for-each select="/databaza/dvd/movie">
替换为<xsl:for-each select="movie">
,或者在使用分组时,您希望<xsl:for-each select="current-group()/movie">
然后在<xsl:for-each select="character">
内。