我正在尝试使用 XSLT 1.0 基于子元素名称展平 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”,则在目标中为“Other”设置“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>