2010-03-19 46 views
0

實施例1:XSLT:對於每個節點變換,如果A = 2及A = 1均被發現這樣做別的做

<time> 
    <timestamp>01:00</timestamp> 
    <event>arrived<event> 
</time> 
<time> 
    <timestamp>02:00</timestamp> 
    <event>left<event> 
</time> 

實施例2:

<time> 
    <timestamp>02:00</timestamp> 
    <event>left<event> 
</time> 

的XSLT需要這樣做:

  • 爲每個節點DO:
  • IF事件=已到達然後設置事件類型= atdestination
  • IF事件=左側是發現和事件=抵達被找到,那麼設置新的節點類型= leftdestination ELSE設置類型=左

XSLT施加到實施例1:

<event> 
    <time>01:00</time> 
    <type>atdestination</type> 
<event> 
<event> 
    <time>02:00</time> 
    <type>leftdestination</type> 
<event> 

XSLT應用於例如2:

<event> 
    <time>02:00</time> 
    <type>left</type> 
<event> 
+0

你能解釋= 1和A = 2?也許你的轉變的結構?更多的上下文會有所幫助。 – justkt 2010-03-19 15:08:20

+0

如何改變? – Larry 2010-03-19 15:30:11

+0

你不能清楚地制定一個問題...... :( 這是文本中的任何地方都沒有「A」 - 只在標題中,這是絕對令人困惑 這隻能表明你唯一的問題是你不知道問題出在哪裏 通常情況下,那些不能表達問題的人通常不會自己想出問題所在,因此,不要浪費SO讀者的時間if你沒有至少有一個令人滿意的問題的定義 失敗! – 2010-03-19 16:19:10

回答

2
<xsl:template match="time"> 
    <event> 
    <xsl:apply-templates select="*" /> 
    </event> 
</xsl:template> 

<xsl:template match="timestamp"> 
    <time><xsl:value-of select="." /></time> 
</xsl:template> 

<xsl:template match="type"> 
    <type> 
    <xsl:choose> 
     <xsl:when test=".='arrived'"> 
     <xsl:text>atdestination</xsl:text> 
     </xsl:when> 
     <xsl:when test=".='left' and ../../event[type='arrived']"> 
     <xsl:text>leftdestination</xsl:text> 
     </xsl:when> 
     <xsl:when test=".='left' and not(../../event[type='arrived'])"> 
     <xsl:text>left</xsl:text> 
     </xsl:when> 
     <xsl:otherwise> 
     <xsl:text>undefined</xsl:text> 
     </xsl:otherwise> 
    </xsl:choose> 
    </type> 
</xsl:template> 
+0

@Tomalak,你能解釋一下你認爲這個人想要什麼嗎?它沒有任何意義。 – 2010-03-19 16:20:41

+0

@Dimitre:據我瞭解,最終的''應該是''atdestination''(當只有'time [event ='arrive']'存在),'atdestination''''''leftdestination 「'(時間[事件='到達']和'時間[事件='離開']'存在)或''左目的地''(只有'時間[事件='離開']存在時)。 – Tomalak 2010-03-19 16:46:04

+0

感謝Tomalak,你的回答對我有用。花了一段時間才能回到這個問題,但我只是實現了它,它的工作原理。 顯然你清楚地理解了我的問題。再次感謝! – Larry 2010-04-12 17:02:12

相關問題