Biztalk/XSLT-映射所属的段而不进行任何关联



我有以下xml(HL7)消息。

`<OBR>One</OBR>`
`<ZCT>Two</ZCT>`
`<OBR>Three</OBR>`
`<ZCT>Four</ZCT>`

我需要将这些映射到另一个类似的XML:

`<Number>`
`<One>One</One>`
`<Two>Two</Two>`
`</Number>`
`<Number>`
`<One>Three</One>`
`<Two>Four</Two>`
`</Number>`

这些领域没有任何关联。我可以依赖字段的结构/顺序,但仅此而已。因此,在下一个OBR发生之前,我需要映射所有OBR字段,以及以下ZCT字段。

关于如何解决这个问题,有什么建议吗?

如果您可以将两个xml片段组合成一个,例如:

<?xml version="1.0" encoding="UTF-8"?>
<proces>
<hl7>
<OBR>One</OBR>
<ZCT>Two</ZCT>
<OBR>Three</OBR>
<ZCT>Four</ZCT>
</hl7>
<other>
<Number>
<One>One</One>
<Two>Two</Two>
</Number>
<Number>
<One>Three</One>
<Two>Four</Two>
</Number>
</other>
</proces>

然后使用以下xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">

<xsl:template match="/proces">
<result>
<xsl:variable name="hl7Props" select="hl7/*"/>
<xsl:for-each select="other/*/*">
<newProp>
<xsl:variable name="pos" select="position()"/>
<xsl:copy-of select="."/>
<xsl:copy-of select="$hl7Props[$pos]"/>
</newProp>
</xsl:for-each>
</result>
</xsl:template>

</xsl:stylesheet>

给出以下结果:

<?xml version="1.0" encoding="UTF-8"?>
<result>
<newProp>
<One>One</One>
<OBR>One</OBR>
</newProp>
<newProp>
<Two>Two</Two>
<ZCT>Two</ZCT>
</newProp>
<newProp>
<One>Three</One>
<OBR>Three</OBR>
</newProp>
<newProp>
<Two>Four</Two>
<ZCT>Four</ZCT>
</newProp>
</result>

相关内容

  • 没有找到相关文章

最新更新