2016-07-14 3 views
0

xsl-foテンプレート言語を使用してデータをフィルタリングするxmlファイルがあります。私のXML:単一のfo:table-cellにxsl-foreachデータを表示するには?

<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> 

私は名前と名前の値を取得し、XSL-FOテンプレートにいくつかのテーブルセルの上にそれを見せたかったです。

私のXSL-FOテンプレート:

<?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> 

私だけclosefriendsを取得し、名前の値を取得することができません - >名s。名前と同じテーブルの名前を取得する必要があります。

あなたは<xsl:value-of select="../name" />と親の名前を選択する必要が代わりに<xsl:value-of select="name" />で、任意のhelp..thanks

+0

'select =" ./ friend "ではなく、'。/ 'を削除して' select = "friend" 'を実行することができます。 '。/ closefriends'の場合も同様です。長い説明は、両方ともコンテキストノードに対して評価されますが、 '。/ friend'は' self :: node()/ child :: friend'の省略形であり、 'friend'は' child :: friend'の省略形です。特別な 'self :: node()'はここに何も追加しません。 –

答えて

1

まあのために感謝しています。

+0

ありがとうMartin ... !!! – Maniram

関連する問題