我正在嘗試將類似的記錄(同一個UniqueID)與XSL結合起來。將類似的XML記錄/字段與XSL結合使用
這裏是我的XML:
<ExportXML xmlns="http://www.taleo.com/ws/integration/toolkit/2005/07">
<record>
<field name="UniqueID">1234</field>
<field name="Location">Michigan</field>
<field name="Category">Math</field>
</record>
<record>
<field name="UniqueID">1234</field>
<field name="Location">Texas</field>
<field name="Category">Science</field>
</record>
<record>
<field name="UniqueID">1234</field>
<field name="Location"></field>
<field name="Category">History</field>
</record>
<record>
<field name="UniqueID">2345</field>
<field name="Location">Ohio</field>
<field name="Category"></field>
</record>
</ExportXML>
這裏是想我的輸出看起來像:我的頭在旋轉
<ExportXML>
<record>
<field name="UniqueID">1234</field>
<field name="Location">Michigan, Texas</field>
<field name="Category">Math, Science, History</field>
</record>
<record>
<field name="UniqueID">2345</field>
<field name="Location">Ohio</field>
<field name="Category"></field>
</record>
</ExportXML>
我已經嘗試了很多不同的東西。我仍然對此感到陌生,而且我發現很難學習。
我很可能離開,但這是我到目前爲止。要開始我只是想合併的字段(類別)之一,但它只是重複的所有記錄,而不試圖合併...
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:t="http://www.taleo.com/ws/integration/toolkit/2005/07"
exclude-result-prefixes="t">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:key name="distinctRecord" match="t:record" use="t:field[@name='UniqueID']" />
<xsl:template match="/">
<xsl:for-each select="//t:record[generate-id(.) = generate-id(key('distinctRecord', t:field[@name='UniqueID'])[1])]">
<xsl:variable name="UniqueID" select="t:field[@name='UniqueID']" />
<record>
<UniqueID><xsl:value-of select="$UniqueID" /></UniqueID>
<Category>
<xsl:for-each select="key('distinctRecord', $UniqueID)">
<xsl:if test="position() != 1">, </xsl:if>
<xsl:value-of select="t:field[@name='Category']"/>
</xsl:for-each>
</Category>
</record>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
任何幫助將不勝感激!
謝謝。
你的輸入XML不能很好地形成的;你介意解決這個問題嗎?另外,你的XSLT樣式表使用了一個不存在於你的輸入XML文件中的名字空間。 – 2013-02-20 13:37:47