正在尝试使用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