Biztalk/XSLT - 映射没有任何关联的所属段
Posted
技术标签:
【中文标题】Biztalk/XSLT - 映射没有任何关联的所属段【英文标题】:Biztalk/XSLT - map belonging segments without any correlating 【发布时间】:2021-08-13 15:42:58 【问题描述】:我有以下 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 字段。
关于如何解决这个问题的任何建议?
【问题讨论】:
这是完整的 HL7 消息吗?或者这只是这样的序列的一部分?您能否将一个带有两个 xml 片段的 xml 合二为一,以便 xslt 可以同时访问两者?即如果您可以将两个 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>
【讨论】:
以上是关于Biztalk/XSLT - 映射没有任何关联的所属段的主要内容,如果未能解决你的问题,请参考以下文章