2012-01-13 3 views
0

Je génère du code HTML en utilisant XSL à l'exécution. Ma tâche est d'imprimer la section de signature après que toutes les données sont imprimées. J'imprimer des données comme ceci:

données client 1
client 2 données
clients 3 Données
clients 4 Données
clients 5 données

clients 2 de Signature
Impression de contenu statique après tout le contenu

Chaque données client a id, nom, adresse, etc., jusqu'à 5 détails par client. À la fin de toutes les données client, je dois imprimer la section de signature du client 2. Actuellement, les données du client tournent jusqu'à 3 pages et la section propriétaire est imprimée sur la première page uniquement. Mais j'ai besoin du client 2 à la fin des 3 pages.

Jetez un oeil à l'exemple XML ..

<t> 
<customer/> 
<customer/> 
<customer/> 
<customer/> 
<customer/> 
</t> 


J'ai besoin d'une sortie comme celui-ci

Customer 1 data 

    Customer 2 data 

    Customer 3 data 

    Customer 4 data 

    Customer 5 data 

    Customer 2' Signature. 
+1

Il est toujours bon de fournir un document XML complet (mais de petite taille) et le résultat exact recherché. Sans cela, aucune réponse n'est juste une supposition. –

+0

^Édité la question. – sgowd

+0

Désolé: P Le code original est le code de production ... ne peux pas le poster ici et je dois résoudre le problème au début. Cela fonctionne maintenant. Merci beaucoup! – sgowd

Répondre

1

Cette transformation:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="/*"> 
    <xsl:apply-templates/> 

    <xsl:apply-templates mode="sign" select= 
    "customer[@id=2]/SignatureSection"/> 
</xsl:template> 

<xsl:template match="customer"> 
Customer <xsl:value-of select="position()"/> data 
</xsl:template> 

<xsl:template match="SignatureSection"/> 

</xsl:stylesheet> 

lorsqu'il est appliqué sur le document XML suivant (parce que le XML faux fourni par l'OP paresseux est inutile):

<t> 
    <customer id="1"> 
    Some Customer1 Data 

    <SignatureSection id="1"> 
     Signature of Customer1 
    </SignatureSection> 
    </customer> 
    <customer id="2"> 
    Some Customer2 Data 
    <SignatureSection id="2"> 
     Signature of Customer2 
    </SignatureSection> 
    </customer> 
    <customer id="3"> 
    Some Customer3 Data 
    <SignatureSection id="3"> 
     Signature of Customer1 
    </SignatureSection> 
    </customer> 
    <customer id="3"> 
    Some Customer4 Data 
    <SignatureSection id="4"> 
     Signature of Customer4 
    </SignatureSection> 
    </customer> 
    <customer id="5"> 
    Some Customer5 Data 
    <SignatureSection id="5"> 
     Signature of Customer5 
    </SignatureSection> 
    </customer> 
</t> 

produit ce que nous devinons pourrait être le résultat recherché:

Customer 1 data 

Customer 2 data 

Customer 3 data 

Customer 4 data 

Customer 5 data 

     Signature of Customer2 
+0

Cela prend la même page. Signature vient en première page où les données sont en cours d'exécution jusqu'à 4 pages. Résultant d'un chevauchement des données sur la première page. – sgowd

+0

@ sans481: Désolé, je ne comprends pas un seul mot de votre commentaire et comment il est lié à cette réponse. Si vous avez changé le problème (encore une fois), n'hésitez pas à poser une nouvelle question - cette fois, essayez de fournir au moins les données essentielles pour en faire une question qui ne nécessite pas de deviner. –