【问题标题】:Biztalk/XSLT - map belonging segments without any correlatingBiztalk/XSLT - 映射没有任何关联的所属段
【发布时间】: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 可以同时访问两者?即hl7 xml的内容其他xml的内容
  • 生成的 xml 看起来如何?

标签: xml xslt mapping biztalk biztalk-mapper


【解决方案1】:

如果您可以将两个 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>

【讨论】:

    猜你喜欢
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 2012-09-17
    • 1970-01-01
    相关资源
    最近更新 更多