2015-10-14 65 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