正在嘗試使用XSLT 1.0XSLT:我想基於使用XSLT 1.0
源XML扁平化基礎上的子元素名稱的XML元素的子元素的名字拼合XML元素:
<Contact>
<ContactPurpose>
<PurposeAsPlainText xmlns="cds_dt">Call</PurposeAsPlainText>
</ContactPurpose>
<ContactPurpose>
<PurposeAsEnum xmlns="cds_dt">Call</PurposeAsEnum>
</ContactPurpose>
</Contact>
應變換爲下面的XML:
<Contact>
<ContactPurpose>O</ContactPurpose>
<ContactPurpose>Call</ContactPurpose>
</Contact>
的邏輯是:
如果子元素名稱是「PurposeAsPlainText「目的地THEN 集‘O’爲其他
ELSEIF子元素名稱是‘PurposeAsEnum’THEN 源值複製到目標
編輯1:我可能會更清楚,因爲沒有任何解決方案將XML解壓縮,請參閱修訂的源和目標XML。
編輯2:這是我測試的XML。下面的兩個轉換解決方案實際上可以在我的原始xml上工作,但不是我使用.NET 4.0 XslCompiledTransform進行測試的修訂後的xml。或者我應該提出一個新問題?
<MyDS xmlns="cds" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<PatientRecord>
<Demographics>
<Contact>
<ContactPurpose>
<PurposeAsPlainText xmlns="cds_dt">Call</PurposeAsPlainText>
</ContactPurpose>
<ContactPurpose>
<PurposeAsEnum xmlns="cds_dt">Call</PurposeAsEnum>
</ContactPurpose>
</Contact>
</Demographics>
</PatientRecord>
</MyDS>
如果您在子元素爲「PurposeAsEnum」的情況下給出示例輸入和輸出將會很有幫助。 – LarsH 2012-03-05 20:43:16
請參閱修訂後的源和目標XML。所有解決方案都輸出相同的XML,但忘記了拼合並刪除子元素名稱。這個評論中的xml解決方案與我上面希望的輸出不一樣。 Call PurposeAsPlainText> ContactPurpose> –
user610064
2012-03-06 13:49:39
@ user610064:感謝您的編輯。您可能已經注意到,我的答案完全使用您在最新編輯中提供的XML文檔,並生成完全想要的結果。 – 2012-03-06 14:31:38