我已經有了一個新問題。 我必須通過xsl合併列表,問題在於查找列表中的鍵必須由2個值聯合。 這些列表可能相對較大,數千甚至數萬甚至更多的條目在這兩個列表中。在此列表的大尺寸之前,我必須關注性能和內存。這可能會在稍後在Web服務客戶端中實現,因此它必須快速且節省資源。XSL for-each filter來自其他主節點的子上下文
合併List1和List2中的現有元素已完成並且不復雜,但現在我必須檢查其他列表中非現有元素的兩個列表。 我試圖否定for-each select語句,但是失敗了,它可能是錯誤的。
InputXML,例如
<ROOT>
<getObjectListResponse>
<item>
<Key>1111111:aaaa</Key>
<someOhterData>Text</someOhterData>
</item>
<item>
<Key>2222222:bbbb</Key>
<someOhterData>Text</someOhterData>
</item>
<item>
<Key>3333333:aaaa</Key>
<someOhterData>Text</someOhterData>
</item>
</getObjectListResponse>
<LookupList>
<DATA>
<KeyPart1>1111111</KeyPart1>
<KeyPart2>aaaa</KeyPart2>
<someOhterData>Text</someOhterData>
</DATA>
<DATA>
<KeyPart1>1111111</KeyPart1>
<KeyPart2>bbbb</KeyPart2>
<someOhterData>Text</someOhterData>
</DATA>
<DATA>
<KeyPart1>2222222</KeyPart1>
<KeyPart2>aaaa</KeyPart2>
<someOhterData>Text</someOhterData>
</DATA>
<DATA>
<KeyPart1>2222222</KeyPart1>
<KeyPart2>bbbb</KeyPart2>
<someOhterData>Text</someOhterData>
</DATA>
<DATA>
<KeyPart1>3333333</KeyPart1>
<KeyPart2>aaaa</KeyPart2>
<someOhterData>Text</someOhterData>
</DATA>
<DATA>
<KeyPart1>3333333</KeyPart1>
<KeyPart2>bbbb</KeyPart2>
<someOhterData>Text</someOhterData>
</DATA>
</LookupList>
</ROOT>
第一部分,找到兩個列表中現有的部分已經完成。 第二部分是在列表1到列表2中找到不存在的部分,並將列表2列出到列表1中。 我希望在for-each中這樣做,因此您只能從List1中獲取不存在的條目,該條目不存在在List2中。 我的問題是要從LookupList中的所有數據中查找帶有concatinated關鍵字的每個上下文。
<xsl:for-each select="/*/getObjectListResponse/item[Key/text() != /*/LookupList/DATA/*[concat(KeyPart1,'/',KeyPart2)]]">
<xsl:copy-of select="."/>
</xsl:for-each>
<xsl:for-each select="/*/getObjectListResponse/item[Key/text() != /*/LookupList/DATA/[concat(KeyPart1,'/',KeyPart2)]]">
<xsl:copy-of select="."/>
</xsl:for-each>
但我試過的一切都失敗了,沒有結果或錯誤的結果。
這怎麼辦?
我試過這個和其他一些,但沒有任何工作。
預先感謝
試過,效果很好,非常感謝。 –