【发布时间】:2013-04-11 21:24:29
【问题描述】:
我几乎解决了这个问题,然后发现coverage-ref 是对应coverage element 中的一个关键属性。
Xpath 看起来像
/message/person-info/claim-list/claim/
<coverage-ref>4</coverage-ref>
/message/person-info/coverage-list/
<coverage key="4" id="23" >
...
</coverage>
当前 XSL 的 sn-p
<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。
提前致谢!
【问题讨论】: