2015-01-08 87 views
-4

我是新來的XSLT和嘗試的過程如下XML使用XSLT:XSLT聚集XML標籤值和存儲的新標籤

<xml> 
<characters> 
<char a="a1" b="b1" y="y1" z="z1" weight="100">F</char> 
<char a="a2" b="b2" y="y2" z="z2" weight="80">r</char> 
<char a="a3" b="b3" y="y3" z="z3" weight="80">o</char> 
<char a="a4" b="b4" y="y4" z="z4" weight="100">m</char> 
</characters> 
</xml> 

產生輸出XML:

<word> 
<value>From</value> 
<coordinates>a1 b1 y4 z4</coordinates> 
<avgWeight>90</avgWeight> 
</word> 

其中座標形成第一個和最後一個字符的座標和avgWeight彙總權重標記的值。

由於XSLT變量是不可變的,我無法執行下面的操作。幫助我找到解決方案。

+1

**你嘗試過什麼** –

+0

我有你的問題回滾到其原來的形式?請發佈有關您的新問題的新問題。確保指示您是否使用XSLT 1.0或2.0。 –

回答

0

由於XSLT變量是不可變的,我無法執行下面的操作。

我沒有看到哪些變量是不可改變的,與它無關。這僅僅是簡單的XSLT:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/> 

<xsl:template match="/xml"> 
    <xsl:for-each select="characters"> 
     <word> 
      <value> 
       <xsl:for-each select="char"> 
        <xsl:value-of select="."/> 
       </xsl:for-each> 
      </value> 
      <coordinates> 
       <xsl:value-of select="char[1]/@a"/> 
       <xsl:text> </xsl:text> 
       <xsl:value-of select="char[1]/@b"/> 
       <xsl:text> </xsl:text> 
       <xsl:value-of select="char[last()]/@y"/> 
       <xsl:text> </xsl:text> 
       <xsl:value-of select="char[last()]/@z"/> 
      </coordinates> 
      <avgWeight> 
       <xsl:value-of select="sum(characters/char/@weight) div count(characters/char) "/> 
      </avgWeight> 
     </word> 
    </xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 
+0

感謝您的解決方案。請檢查更新後的查詢,對於哪些變量應該使用。你能指導我嗎 – Rams

+1

如果你知道應該使用變量,那麼你知道的比我多。無論如何,這是一個非常不同的問題。發佈一個新問題。 –