XSLT: spostamento di un gruppo di elementi html in livelli di sezione

Sto cercando di scrivere un XSLT che organizza un file HTML in diversi livelli di sezione a seconda del livello di intestazione. Ecco il mio contributo:

     

HEADER 1 CONTENT

Level 1 para

Level 1 para

Level 1 para

Level 1 para

Header 2 CONTENT

Level 2 para

Level 2 para

Level 2 para

Level 2 para

Al momento sto lavorando con una struttura abbastanza semplice, quindi questo modello sarà costante per il momento. Ho bisogno di un risultato come questo …

  
Header 1 CONTENT

Level 1 para

Level 1 para

Level 1 para

Level 1 para

Header 2 CONTENT

Level 2 para

Level 2 para

Level 2 para

Level 2 para

Ho lavorato con questo esempio: Stackoverflow Answer

Tuttavia, non riesco a farlo fare esattamente ciò di cui ho bisogno.

Sto usando Saxon 9 per eseguire xslt in Oxygen per dev. Userò un file cmd / bat in produzione. Still Saxon 9. Mi piacerebbe gestire fino a 4 livelli di sezione nidificati, se ansible.

Ogni aiuto è molto apprezzato!

Ho bisogno di aggiungere questo perché ho incontrato un’altra clausola. Probabilmente avrei dovuto pensarci prima.

Sto incontrando il seguente codice di esempio

      

Level 1 para

Level 1 para

Level 1 para

Level 1 para

Header 2 CONTENT

Level 2 para

Level 2 para

Level 2 para

Level 2 para

Come puoi vedere,

è figlio di mentre nel mio primo frammento di codice,

era sempre un bambino con un livello di intestazione. Il mio risultato desiderato è lo stesso di sopra tranne che quando incontro

come figlio di , dovrebbe essere racchiuso in

.

  

Level 1 para

Level 1 para

Level 1 para

Level 1 para

Header 2 CONTENT

Level 2 para

Level 2 para

Level 2 para

Level 2 para

Ecco un foglio di stile XSLT 2.0:

         

Dovrebbe fare ciò che hai chiesto, anche se non si ferma a quattro livelli annidati, ma piuttosto a gruppi fintanto che trova h[n] elementi.

Una soluzione XSLT 1.0 (essenzialmente presa in prestito da Jenni Tennison):

                  

quando questa trasformazione viene applicata al seguente documento XML :

   

1

1

1.1

2

1.1.1

3

1.2

4

2

5

2.1

6

il risultato desiderato è prodotto :

  
1

1

1.1

2

1.1.1

3

1.2

4

2

5

2.1

6

Un raggruppamento più generale in XSLT 1.0

               

Produzione:

  
HEADER 1 CONTENT

Level 1 para

Level 1 para

Level 1 para

Level 1 para

Header 2 CONTENT

Level 2 para

Level 2 para

Level 2 para

Level 2 para

E con un campione di input più complesso come:

  

1

1

1.1

2

1.1.1

3

1.2

4

2

5

2.1

6

Produzione:

  
1

1

1.1

2

1.1.1

3

1.2

4

2

5

2.1

6

Sono stato in grado di ottenere qualcosa di lavoro per il mio addendum sopra. Ho aggiunto la logica nel modello del corpo per testare i tag di intestazione. Potrebbe non funzionare per ogni situazione, ma sta andando bene per il mio compito.