2017-04-27 9 views
2

Das ist mein xml:XSLT-FO für-jeden

<OrdersSchedulePDFView> 
<OrdersSchedulePDFViewRow> 
    <Locations> 
    <LocName>Text1</LocName> 
    <LocName>Text2</LocName>   
    </Locations> 
</OrdersSchedulePDFViewRow>  
</OrdersSchedulePDFView> 

Und das ist Fragment von meinem xslt-fo-Datei:

<xsl:template match="OrdersSchedulePDFView"> 
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">   
     <xsl:for-each select="./OrdersSchedulePDFViewRow">   
     <fo:page-sequence master-reference="all">    
      <fo:flow flow-name="xsl-region-body">      
        <xsl:for-each select="Locations">     
        <xsl:apply-templates select="."/>     
        </xsl:for-each>        
      </fo:flow> 
     </fo:page-sequence> 
     </xsl:for-each> 
    </fo:root> 
</xsl:template> 
<xsl:template match="Locations"> 
    <fo:block text-align="left" font-family="Arial"> 
     <fo:inline font-weight="bold"><xsl:value-of select="LocName"/></fo:inline> 
    </fo:block> 
</xsl:template> 
</xsl:stylesheet> 

Aber in PDF Ich habe nur eine LocName. Wie kann ich alle LocName-Elemente erhalten?

+0

'' erhält den Wert nur des ersten 'LocName' (in XSLT 1.0). Um sie alle zu erhalten, müssen Sie '' verwenden. Oder wenden Sie Vorlagen auf sie an und fügen Sie eine entsprechende Vorlage hinzu. --- BTW, du brauchst ** nicht ** 'zu verwenden, um die Vorlage mit' Locations' zu übernehmen. Sag einfach ''. –

+0

Endlich habe ich das herausgefunden. \t \t \t

Antwort

2

Basierend auf Ihrer Update: da anscheinend Sie keinen Code haben für ein Locations Element hinzuzufügen, können Sie Ihren Code durch Änderung verkürzen könnte:

<xsl:apply-templates select="Locations"/> 

zu:

<xsl:apply-templates select="Locations/LocName"/> 

und dann tun:

<xsl:template match="LocName"> 
    <fo:block text-align="left" font-family="Arial"> 
     <fo:inline font-weight="bold"> 
      <xsl:value-of select="."/> 
     </fo:inline> 
    </fo:block> 
</xsl:template> 
1

Der richtige Code für mich:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="fo"> 
<xsl:template match="OrdersSchedulePDFView"> 
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">   
     <xsl:for-each select="./OrdersSchedulePDFViewRow">   
     <fo:page-sequence master-reference="all">    
      <fo:flow flow-name="xsl-region-body"> 
        <fo:block font-weight="bold" background-color="black" color="white" padding="2pt" font-family="Arial">Stores</fo:block> 
        <fo:block text-align="left" font-family="Arial"> 
     <fo:inline font-weight="bold"><xsl:apply-templates select="Locations"/></fo:inline> 
    </fo:block>        
      </fo:flow> 
     </fo:page-sequence> 
     </xsl:for-each> 
    </fo:root> 
</xsl:template> 
<xsl:template match="Locations"> 
    <xsl:for-each select="./LocName"> 
    <fo:block text-align="left" font-family="Arial"> 
     <fo:inline font-weight="bold"><xsl:value-of select="."/></fo:inline> 
    </fo:block> 
    </xsl:for-each> 
</xsl:template> 
+0

diesen Code nicht Arbeit für Sie. Ich versuche etwas Ähnliches zu erreichen, aber es funktioniert einfach nicht für mich. Wie genau ist Ihre Datenstruktur? –

Verwandte Themen