2015-10-14 66 views
0

有必要對我來說,處理文本和圖像序列以這樣的方式文本的管理序列和圖像

  • 圖片內部通知:如果我們發現DESCRIPTION \ IMG中,SRC的 值等於第一個ATTACHED_FILENAME。
  • 外部圖像注意到:在這種情況下,沒有第二實施方式/ IMG和第二ATTACHED_FILENAME獨自是。

在實踐中,我將每個IMG與相應的ATTACHED_FILENAME相關聯,但如果不存在相應的IMG,則ATTACHED_FILENAME在此情況下是警報的外部圖像。

這是我的XML:

<NTC_SD_NOTICE> 
<PUBLISH_NUMBER>2 caso</PUBLISH_NUMBER> 
<PUBLICATION_REF> 
    <PUBLICATION_SHORT_TITLE>Portolano P8</PUBLICATION_SHORT_TITLE> 
    <PUBLICATION_EDITION_YEAR>2013</PUBLICATION_EDITION_YEAR> 
    <PUBLICATION_PAGE>128</PUBLICATION_PAGE> 
</PUBLICATION_REF> 
<REGION>15-Mar Ligure - Francia (Corsica)</REGION> 
<VICINITY>Appartamento tuo</VICINITY> 
<SUBJECT>Fotografie</SUBJECT> 
<AUTHORITY>Compamare Arzachena</AUTHORITY> 
<PROJECT>230/8562</PROJECT> 
<INSTRUCTION_LIST> 
    <INSTRUCTION_LIST_ITEM> 
    <NTC_SD_INSTRUCT> 
     <ACTION>Inserire</ACTION> 
     <PLACEMENT>dopo la riga 1:</PLACEMENT> 
     <DESCRIPTION> 
     <P>Dietro al monte si vede una meda cardinale sud.</P> 
     <P> 
      <IMG border="0" hspace="0" alt="" align="baseline" src="C:\Users\l_sturla\Desktop\meda.JPG"/> <-- First image 
     </P> 
     </DESCRIPTION> 
     <ATTACHMENT_LIST> 
     <ATTACHMENT> 
      <ATTACHED_FILENAME>meda.JPG</ATTACHED_FILENAME> <-- Attribute first image 
     </ATTACHMENT> 
     <ATTACHMENT> 
      <ATTACHED_FILENAME>altro.JPG</ATTACHED_FILENAME> <-- In this case there are no second IMG, this is an external image. 
     </ATTACHMENT> 
     </ATTACHMENT_LIST> 
    </NTC_SD_INSTRUCT> 
    </INSTRUCTION_LIST_ITEM> 
    <INSTRUCTION_LIST_ITEM> 
     <NTC_SD_INSTRUCT> 
     <ACTION>Sostituire</ACTION> 
     <PLACEMENT>le righe 34 &#xF7; 50 con:</PLACEMENT> 
     <DESCRIPTION>Proseguire per il centro del canale e prestare attenzione al relitto sulla dritta.</DESCRIPTION> 
     <ATTACHMENT_LIST> 
      <ATTACHMENT> 
      <ATTACHED_FILENAME>relitto.JPG</ATTACHED_FILENAME> 
      </ATTACHMENT> 
     </ATTACHMENT_LIST> 
     </NTC_SD_INSTRUCT> 
    </INSTRUCTION_LIST_ITEM> 
    </INSTRUCTION_LIST> 
</NTC_SD_NOTICE> 

這是我的XSLT 1.0:

模板內部圖像:(它運行得非常好感謝馬丁Honnen)

<!-- TEMPLATE PER LE IMMAGINI INTERNE ALL'AVVISO --> 
<xsl:template match="//IMG"> 
    <span style="font-style:italic"> 
     <img src="{key('attachment-by-pos', concat(generate-id(ancestor::NTC_SD_INSTRUCT), '|', count(../preceding-sibling::*//IMG)))/ATTACHED_FILENAME}"/> 
    </span> 
</xsl:template> 

模板外部圖像:(不行 - 這是沒有關聯的IMG所有ATTACHED_FILENAME)

<xsl:template name="allegati"> 
    <center><xsl:text>Allegati:</xsl:text></center> 
    <xsl:for-each select="INSTRUCTION_LIST/INSTRUCTION_LIST_ITEM/NTC_SD_INSTRUCT/ATTACHMENT_LIST/ATTACHMENT/ATTACHED_FILENAME"> 
      <center> 
       <img src="{key('attachment-by-pos', concat(generate-id(ancestor::NTC_SD_INSTRUCT), '|', count(../preceding-sibling::*//IMG)))/ATTACHED_FILENAME}"/> 
      </center> 
    </xsl:for-each> 
</xsl:template> 

在這種情況下,輸出必須是:

別名選擇DOPO LA里加1:Dietro人蒙SI vede烏納梅達Cardinale的SUD。
-IMMAGINE MEDA.jpg-

Sostituire勒righe 34 ÷ 50 CON:Proseguire每IL炫酷德爾CANALEËprestare attenzione人relitto蘇拉dritta。

Allegati:
-IMMAGINE altro.jpg-

-IMMAGINE relitto.jpg -
這部分突出了大膽的文字不運行。

此致敬禮。

回答

0

在您之前的問題中,Martin Honnen給出的答案定義了以下關鍵字,通過它們在NTC_SD_INSTRUCT元素中的位置來查找ATTACHMENT元素。

我覺得你的新的要求:你在倒車的邏輯,所以你也可以在你的allegati定義鍵通過自己的位置查找IMG元素

<xsl:key name="img-by-pos" match="NTC_SD_INSTRUCT/DESCRIPTION/P/IMG" use="concat(generate-id(ancestor::NTC_SD_INSTRUCT), '|', count(../preceding-sibling::*//IMG))"/> 

然後,在xsl:for-each模板,您將使用此密鑰來檢查它們是否是關聯的IMG

請嘗試使用此模板代替

<xsl:template name="allegati"> 
    <center><xsl:text>Allegati:</xsl:text></center> 
    <xsl:for-each select="INSTRUCTION_LIST/INSTRUCTION_LIST_ITEM/NTC_SD_INSTRUCT/ATTACHMENT_LIST/ATTACHMENT 
          [not(key('img-by-pos', concat(generate-id(ancestor::NTC_SD_INSTRUCT), '|', count(preceding-sibling::ATTACHMENT))))]"> 
      <center> 
       <img src="{ATTACHED_FILENAME}"/> 
      </center> 
    </xsl:for-each> 
</xsl:template> 
+0

謝謝Tim的寶貴合作。 – Luisa