我有兩個用於轉換的輸入。使用XSLT 1.0合併源xml和變量的值
一個是源XML source.xml
和看起來像這樣:
<ROOT>
<row>
<id>1</id>
<value>FooBar</value>
</row>
<row>
<id>2</id>
<value>Bar</value>
</row>
<row>
<id>3</id>
<value>FooFoo</value>
</row>
</ROOT>
另一種是通過參數(<xsl:param name="input" />
)轉換成變換供給。結構與上面的XML相同。但包含不同數量的行和不同的值。
<ROOT>
<row>
<id>1</id>
<value>Foo</value>
</row>
<row>
<id>2</id>
<value>Bar</value>
</row>
</ROOT>
現在我需要合併這些輸入。我想遍歷source.xml
,併爲每一行的id決定是否有相同的id在變量和更新。如果變量$input
中不存在相同的ID,我想創建新的行。 換句話說:source.xml
代表新數據,而輸入參數代表已有的數據。我希望他們合併。我想你明白了。
我嘗試了很多方法來解決這個問題,但我總是在比較創建不必要的行時比較id。這些限制是:
- XSLT 1.0限制。
- 用於比較的輸入只能通過使用XSLT參數導入。
輸出應該是這樣的:
<ROOT>
<row>
<id>1</id>
<value>FooBar</value>
</row>
<row>
<id>2</id>
<value>Bar</value>
</row>
<row>
<id>3</id>
<value>FooFoo</value>
</row>
</ROOT>
好你的參數有什麼類型?一個節點集,一個結果樹片段,一個帶有XML標記的字符串?只顯示''不會告訴我們你的參數的類型。 –
嗯,這很難說,因爲參數是從引擎自動提供的,我無法控制它。我認爲這是節點集或帶有XML標記的字符串。我知道我可以通過它調用模板並運行XPath表達式。我希望它有幫助 – Allwe
如果你可以使用XPath,那麼它是一個節點集。爲何輸出具有' 更新
'和'不 富
'如果'source.xml'表示新的數據? –