我有一个带有节点名字的源模式(包含名字+''+中间名),我需要在目标模式中分离出中间名,以便将其发送给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 并更新以合并具有相同子元素名字的其他合作伙伴元素。