2016-04-05 1 views
0

Вот пример моего входа XML:Подсчет количества конкретного тега между 2 другими определенными тегами

<div type="chapter"> 
     <head>« <hi rend="i">Ad formam ########## te levavi</hi> » (<hi rend="i" 
      >Gilbert</hi>, chap. XL) ########</head> 
     <head> 
      <name type="author">Gilbert C<hi rend="smallcaps">ooker</hi> 
      </name> 
      <name type="location">#####College, Oxford</name> 
     </head> 
     <pb n="15" xml:id="p15"/> 
     <p>Tous les lecteurs de <hi rend="i">Gilbert</hi>, des ####### passés maîtres aux 
      amateurs friands de #############, connaissent et apprécient la repartie concernant le visage 
      ############<note xml:id="N2" place="bottom"> Gilbert, <hi 
        rend="i">#######</hi>, éd. Mireille Huchon, Paris, #########, <hi rend="i">Gargantua</hi>, chap. XXXVII, p. 78. </note> , dont 
      les compagnons ################# : « Pourquoy, dist Gargantua, est ce, que frere 
      Jean a si beau nez ? »<note xml:id="N3" place="bottom"> 
       <hi rend="i">Gargantua</hi>, chap. XL, p. 112. </note> Si Gilbert y voit une 
      manifestation de la volonté de #####, Valérie estime « qu'il feut des premiers à la ##################### 
      des nez. Il print des plus beaulx et plus grands »<note xml:id="N4" place="bottom"> 
       <hi rend="i">Ibid.</hi> 
      </note> . ############################################### 
      « tetins moletz de sa nourrice », qui avaient donné libre cours à la croissance de son nez, 
      alors que « les durs tetins de nourrices font les enfans camuz ». La question de la dureté 
      ############# également Marot, qui dans une épigramme, <hi rend="i">Du tetin de 
       Catin</hi>, réfléchit ainsi :</p> 
     <quote> 
      <p>Il est tel, et si profitable/Que si du nez hurtoit quelqu'un,/Contre iceluy (sans 
       nulle fable)/Il ne se feroit mal aucun<note xml:id="N5" place="bottom"> Clément Marot, 
         <hi rend="i">Œuvres poétiques complètes</hi>, éd. Gérard Defaux, Paris, Bordas, 
        1993, t. II, p. 329, v. 5-8. </note> .</p> 
     </quote> 
     <p>Et Gilbert d'achever #################### et allusif : <hi rend="i">Ad formam 
       #################</hi>. La première partie est à la fois une allusion à la 
      physiognomonie – #################################### 
      où le Christ parle du figuier : <hi rend="i">A fructibus eorum cognoscetis eos</hi> (Mt 7, 
      16 et 20). La deuxième partie est le début du Psaume 123 (122), <hi rend="i">Ad te levavi 
       oculos meos</hi>, avec allusion grivoise à l'érection et à la corrélation populaire 
      ###############################.</p> 
     <pb n="16" xml:id="p16"/> 
     <p>Devant le fait que Frère Jean n'est pas le seul des personnages de la geste à avoir un grand 
      ####################### « avoit le nez un peu aquillin faict à manche de 
       rasouer »<note xml:id="N6" place="bottom"> Gilbert, <hi rend="i">Pantagruel</hi>, 
       chap. XVI, p. 272. </note>  –, ##################### conclusion concernant 
      Gilbert que</p> 
    </div> 

мне нужно подсчитать нотные тег между УБОМ тегами 2, чтобы получить записку тег, как это, например:

<note xml:id="N2-1" place="bottom">...</note> 
<note xml:id="N3-2" place="bottom">...</note> 

число после тире будет указывать на позицию нотного тега между тегами П.Б. 2 (как в <pb n="15" xml:id="p15"/>)

проблема заключается в том s ometimes теги pb не всегда имеют одно и то же место внутри xml. Они могут быть предыдущим элементом или предыдущими братьями или сестрами ...

метки для заметок всегда находятся между двумя значками pb (например, в <pb n="15" xml:id="p15"/>. Мне нужно указать положение каждого тега примечания между этими тегами 2 pb , независимо от того, что является местом тега pb до и после.

Надеюсь, вам будет ясно, что вы мне помогли. Я пробовал много дней, используя xsl: number, но не могу добиться успеха ... Это немного сложный, поскольку мой xml-файл действительно большой. Большое спасибо, Flo

+0

Посмотрите инструкцию 'xsl: number' и ее атрибут' from'. –

ответ

0

Следующее предложение от @ michael.hor257k, я думаю, y ou может сделать это с помощью

<xsl:template match="note"> 
    <xsl:variable name="N"> 
    <xsl:number level="any" from="pb"/> 
    </xsl:variable> 
    <note xml:id="{@xml:id}-{$N}"> 
    <xsl:value-of select="."/> 
    </note> 
</xsl:template> 
+0

Спасибо вам обоим. Оно работает !! Я просто не могу поверить, что все было так просто. Я думал, что это будет более сложная трансформация xsl ... :-) Я действительно счастлив. :-) Спасибо вам за вашу помощь. – FloD