我几乎解决了这个问题,然后发现coverage-ref 是对应coverage element 中的一个关键属性。
Xpath 看起来像
/消息/人员信息/声明列表/声明/
<coverage-ref>4</coverage-ref>
/message/person-info/coverage-list/
<coverage key="4" id="23" >
...
</coverage>
当前 XSL 的片段
<xsl:template match="claim" mode="fact">
<ClaimFact>
<coverage>
<xsl:choose>
<xsl:when test="./coverage-ref">
<!--
COVERAGE-<xsl:value-of select="util:ifNull(./coverage-ref, '0')"/>
-->
<xsl:call-template name="coverage-ref">
<xsl:with-param name="coverage-ref" select="./coverage-ref" />
</xsl:call-template>
</xsl:when>
<xsl:when test="./../../../coverage/@id">COVERAGE-<xsl:value-of select="./../../../coverage/@id"/></xsl:when>
<xsl:otherwise><xsl:text>UNKNOWNCOVERAGE</xsl:text></xsl:otherwise>
</xsl:choose>
</coverage>
</ClaimFact>
</xsl:template>
<xsl:template match="coverage|coverage-ref" >
<xsl:param name="coverage-ref" />
<xsl:variable name="coverage"
select="/person-info/coverage-list/coverage[@key = $coverage-ref]" />
<CoverageDimension>
<mycoverageref><xsl:value-of select="$coverage" /></mycoverageref>
...
</CoverageDimension>
</xsl:template>
我得到的错误
Error at xsl:call-template on line 1845 column 51 of personinfo.xsl:
XTSE0650: No template exists named coverage-ref
现有的注释掉会将coverage-ref放入mycoverageref。
我试图对 xsl:call-template、xsl:param 和 xsl:variable 执行的操作是 1) 将 mycoverageref 设置为元素的 @id 而不是 @key。
2) 最好将值 4 替换为 23,然后现有的应用模板应该在 CoverageDimension 上工作。
提前致谢!