2017-06-10 1 views
2

INPUT: i ai élément non numéroté avec @type « PT » avec les frères et sœurs qui suit sans numéro @type « chapitre » je veux regrouper tous chapitre à l'intérieur partie .:Je veux regrouper les ensembles d'éléments?

<contents> 
    <unnumbered type="PT"> 
     <title>Title one</title> 
    </unnumbered> 
    <unnumbered type="chapter" manid="01"/> 
    <unnumbered type="chapter" manid="02"/> 
    <unnumbered type="chapter" manid="03"/> 
    <unnumbered type="PT"> 
     <title>Title Two</title> 
    </unnumbered> 
    <unnumbered type="chapter" manid="04"/> 
    <unnumbered type="chapter" manid="05"/> 
    <unnumbered type="chapter" manid="06"/> 
    <unnumbered type="PT"> 
     <title>Title Three</title> 
    </unnumbered> 
    <unnumbered type="chapter" manid="07"/> 
    <unnumbered type="chapter" manid="08"/> 
    <unnumbered type="chapter" manid="09"/> 
    <unnumbered type="chapter" manid="10"/> 
    <unnumbered type="PT"> 
     <title>Title Four</title> 
    </unnumbered> 
    <unnumbered type="chapter" manid="11"/> 
    <unnumbered type="chapter" manid="12"/> 
    <unnumbered type="chapter" manid="13"/> 
    <unnumbered type="chapter" manid="14"/> 
    <unnumbered type="chapter" manid="15"/> 
</contents> 

contenu sortie provenant répété dans chaque section:

<contents> 
    <unnumbered type="PT"> 
     <title>Title one</title> 
     <unnumbered> 
      <unnumbered type="chapter" manid="01"/> 
      <unnumbered type="chapter" manid="02"/> 
      <unnumbered type="chapter" manid="03"/> 
      <unnumbered type="chapter" manid="04"/> 
      <unnumbered type="chapter" manid="05"/> 
      <unnumbered type="chapter" manid="06"/> 
      <unnumbered type="chapter" manid="07"/> 
      <unnumbered type="chapter" manid="08"/> 
      <unnumbered type="chapter" manid="09"/> 
      <unnumbered type="chapter" manid="10"/> 
      <unnumbered type="chapter" manid="11"/> 
      <unnumbered type="chapter" manid="12"/> 
      <unnumbered type="chapter" manid="13"/> 
      <unnumbered type="chapter" manid="14"/> 
      <unnumbered type="chapter" manid="15"/> 
     </unnumbered> 
    </unnumbered> 
    <unnumbered type="PT"> 
     <title>Title Two</title> 
     <unnumbered> 
      <unnumbered type="chapter" manid="04"/> 
      <unnumbered type="chapter" manid="05"/> 
      <unnumbered type="chapter" manid="06"/> 
      <unnumbered type="chapter" manid="07"/> 
      <unnumbered type="chapter" manid="08"/> 
      <unnumbered type="chapter" manid="09"/> 
      <unnumbered type="chapter" manid="10"/> 
      <unnumbered type="chapter" manid="11"/> 
      <unnumbered type="chapter" manid="12"/> 
      <unnumbered type="chapter" manid="13"/> 
      <unnumbered type="chapter" manid="14"/> 
      <unnumbered type="chapter" manid="15"/> 
     </unnumbered> 
    </unnumbered> 
    <unnumbered type="PT"> 
     <title>Title Three</title> 
     <unnumbered> 
      <unnumbered type="chapter" manid="07"/> 
      <unnumbered type="chapter" manid="08"/> 
      <unnumbered type="chapter" manid="09"/> 
      <unnumbered type="chapter" manid="10"/> 
      <unnumbered type="chapter" manid="11"/> 
      <unnumbered type="chapter" manid="12"/> 
      <unnumbered type="chapter" manid="13"/> 
      <unnumbered type="chapter" manid="14"/> 
      <unnumbered type="chapter" manid="15"/> 
     </unnumbered> 
    </unnumbered> 
    <unnumbered type="PT"> 
     <title>Title Four</title> 
     <unnumbered> 
      <unnumbered type="chapter" manid="11"/> 
      <unnumbered type="chapter" manid="12"/> 
      <unnumbered type="chapter" manid="13"/> 
      <unnumbered type="chapter" manid="14"/> 
      <unnumbered type="chapter" manid="15"/> 
     </unnumbered> 
    </unnumbered> 
</contents> 

désiré SORTIE: je veux faire partie des informations d'emballage avec ses frères et soeurs qui suit avec l'attribut @type = chapitre:

<contents> 
    <unnumbered type="PT"> 
     <title>Title one</title> 
     <unnumbered type="chapter" manid="01"/> 
     <unnumbered type="chapter" manid="02"/> 
     <unnumbered type="chapter" manid="03"/> 
    </unnumbered> 
    <unnumbered type="PT"> 
     <title>Title Two</title> 
     <unnumbered type="chapter" manid="04"/> 
     <unnumbered type="chapter" manid="05"/> 
     <unnumbered type="chapter" manid="06"/> 
    </unnumbered> 
    <unnumbered type="PT"> 
     <title>Title Three</title> 
     <unnumbered type="chapter" manid="07"/> 
     <unnumbered type="chapter" manid="08"/> 
     <unnumbered type="chapter" manid="09"/> 
     <unnumbered type="chapter" manid="10"/> 
    </unnumbered> 
    <unnumbered type="PT"> 
     <title>Title Four</title> 
     <unnumbered type="chapter" manid="11"/> 
     <unnumbered type="chapter" manid="12"/> 
     <unnumbered type="chapter" manid="13"/> 
     <unnumbered type="chapter" manid="14"/> 
     <unnumbered type="chapter" manid="15"/> 
    </unnumbered> 
</contents> 

UTILISATION XSLT:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0"> 

    <xsl:template match="@* | node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@* | node()"/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="contents"> 
     <contents> 
      <xsl:for-each-group select="unnumbered" group-starting-with="unnumbered[@type='PT']"> 
       <unnumbered> 
        <xsl:apply-templates select="@*"/> 
        <xsl:apply-templates/> 
        <xsl:choose> 
         <xsl:when test="following-sibling::unnumbered[@type='chapter']"> 

           <unnumbered> 
            <xsl:apply-templates 
             select="following-sibling::unnumbered[@type='chapter']"/> 
           </unnumbered> 

         </xsl:when> 
         <xsl:otherwise> 
          <xsl:copy-of select="current-group()"/> 
         </xsl:otherwise> 
        </xsl:choose> 
       </unnumbered> 
      </xsl:for-each-group> 
     </contents> 
    </xsl:template> 


</xsl:stylesheet> 

Répondre

0

Vous avez le droit de regroupement dans l'approche de votre feuille de style mais vous faites à l'intérieur du for-each-group des choses trop compliquées, il suffit d'utiliser

<xsl:template match="contents"> 
    <contents> 
     <xsl:for-each-group select="unnumbered" group-starting-with="unnumbered[@type='PT']"> 
      <unnumbered> 
       <xsl:apply-templates select="@*, node(), current-group() except ."/> 
      </unnumbered> 
     </xsl:for-each-group> 
    </contents> 
</xsl:template> 
+0

Merci monsieur, je l'ai eu. –

+0

@gopikrishna, si le problème est résolu alors pensez à accepter la réponse. –