我有一个带有节点名字的源模式(包含名字+''+中间名),我需要在目标模式中分离出中间名,以便将其发送给OtherNames。
我目前有以下xslt 模板:
<xsl:template name="StringSplit">
<xsl:param name="valFirstnames" />
<xsl:choose>
  <xsl:when test="contains($valFirstnames, ' ')">
      <xsl:call-template name="StringSplit">
        <xsl:with-param name="valFirstnames" select="substring-after($valFirstnames, ' ')" />
      </xsl:call-template>
  </xsl:when>
  <xsl:otherwise>
     <OtherFirstNames><xsl:value-of select="$valFirstnames" /></OtherFirstNames>
  </xsl:otherwise>
</xsl:choose>
</xsl:template>
此 xslt 模板的当前输出是两次而不是一次写出中间名:
<OtherFirstName>Middlename</OtherFirstName>
<OtherFirstName>Middlename</OtherFirstName>
预期的:
<OtherFirstName>Middlename</OtherFirstName>
样本输入
<Data>
  <SubjectName>
    <forenames>first middle</forenames>
  </SubjectName>
  <SubjectPartner>
    <forenames>first middle</forenames>
    <Otherforenames>first middle</Otherforenames>
  </SubjectPartner>
  <etc./>
</Data>
样本输出
<Data>
  <SubjectName>
    <firstname>first</firstname>
    <OtherFirstName>middle</OtherFirstname>
  </SubjectName>
  <SubjectPartner>
    <firstname>first</firstname>
    <OtherFirstName>middle</OtherFirstName>
    <OtherFirstName>middle</OtherFirstName>
  </SubjectPartner>
  <etc./>
</Data>
我正在考虑更正当前的 xslt 并更新以合并具有相同子元素名字的其他合作伙伴元素。