2016-07-14 20 views
0

Ich habe eine XML-Datei, um die Daten mit XSL-FO Templating Sprache zu filtern. Meine XML:Wie zeigen Sie die xsl-foreach-Daten auf einzelne fo: Tisch-Zelle?

<root> 
<name>shyam</name> 
<friend> 
    <name>Abc</name> 
    <phNo>90909090909</phNo> 
    <age>32</age> 
    <closefriends> 
     <names>test123</names> 
    </closefriends> 
</friend> 
<friend> 
    <name>Xyz</name> 
    <phNo>32323232323</phNo> 
    <age>44</age> 
    <closefriends> 
     <names>test345</names> 
    </closefriends> 
</friend> 
</root> 

Ich wollte den Namen und die Namen Werte holen und zeigen Sie es auf dem einige Tisch-Zelle in xsl-fo-Vorlage.

Meine XSL-FO-Vorlage:

<?xml version="1.0" encoding="iso-8859-1"?> 

<fo:page-sequence master-reference="my-page"> 
     <fo:flow flow-name="xsl-region-body"> 
     <fo:block>Hello, 
      <xsl:value-of select="name" />!</fo:block> 
     <fo:block> 
      <fo:table> 
      <fo:table-body> 
       <fo:table-row> 
       <fo:table-cell border="solid 1px black" text-align="center" font-weight="bold"> 
        <fo:block> 
        No. 
        </fo:block> 
       </fo:table-cell> 
       <fo:table-cell border="solid 1px black" text-align="center" font-weight="bold"> 
        <fo:block> 
        Name 
        </fo:block> 
       </fo:table-cell> 
       <fo:table-cell border="solid 1px black" text-align="center" font-weight="bold"> 
        <fo:block> 
        Phone Number 
        </fo:block> 
       </fo:table-cell> 
       </fo:table-row> 
       <xsl:for-each select="./friend"> 
       <xsl:for-each select="./closefriends"> 
        <fo:table-row> 
        <fo:table-cell border="solid 1px black" text-align="center"> 
         <fo:block> 
         <xsl:value-of select="position()" /> 
         </fo:block> 
        </fo:table-cell> 
        <fo:table-cell border="solid 1px black" text-align="center"> 
         <fo:block> 
         <xsl:value-of select="name" /> 
         <xsl:value-of select="names" /> 
         </fo:block> 
        </fo:table-cell> 
        <fo:table-cell border="solid 1px black" text-align="center"> 
         <fo:block> 
         <xsl:value-of select="phNo" /> 
         </fo:block> 
        </fo:table-cell> 
        </fo:table-row> 
       </xsl:for-each> 
       </xsl:for-each> 
      </fo:table-body> 
      </fo:table> 
     </fo:block> 
     </fo:flow> 
    </fo:page-sequence> 
    </fo:root> 
</xsl:template> 

vermag ich nicht den Namen Wert zu holen, nur closefriends bekommen -> Name s. Müssen Sie den Namen und Namen auf der gleichen Tabelle td bekommen.

für alles help..thanks Appreciate

+0

Anstelle von 'select =" ./ friend "' können Sie die '. /' Löschen und einfach 'select =" friend "' auswählen. Ähnliches für './Closefriends'. Die lange Erklärung ist, dass beide relativ zum Context-Knoten ausgewertet werden, aber './Friend' ist eine Abkürzung für' self :: node()/child :: friend' und 'friend' ist eine Abkürzung für' child :: friend'. Der zusätzliche 'self :: node()' fügt hier nichts hinzu. –

Antwort

1

Nun, statt <xsl:value-of select="name" /> Sie die Eltern Namen mit <xsl:value-of select="../name" /> auswählen müssen.

+0

Vielen Dank Martin ... !!! – Maniram