我正在使用 xslt 动态评估 (dyn:evaluate) 但我有一个问题,这个评估函数在一个循环内,我想在不同的上下文而不是循环上下文上进行评估,比如
<xsl:variable name="recId" select="dyn:evaluate($targetContext,$list[1])"/>
但是 dyn:evaluate 只有一个输入是一个变量,所以我不得不做这样的事情
<xsl:variable name="recId" select="dyn:evaluate($list[1])"/>
这也是我的模板
<xsl:template match="hl7:controlActEvent/hl7:subject">
<xsl:for-each select="java:org.apache.xalan.lib.ExsltStrings.tokenize($xpath, ';')">
<xsl:variable name="list" select="java:org.apache.xalan.lib.ExsltStrings.tokenize(., ',')"/>
here's the problem, evaluation inside loop
<xsl:variable name="recId" select="dyn:evaluate($list[1])"/>
<xsl:variable name="createDate" select="dyn:evaluate($list[2])"/>
<xsl:choose>
<xsl:when test="$createDate != '' ">
<xsl:variable name="detailNode" select="$postDomainDoc/record_detail[record_id = $recId]"/>
<xsl:choose>
<xsl:when test="$detailNode/consent_status = 'deny' ">
<hl7:subject typeCode="SUBJ" nullFlavor="MSK" xsi:nil="true"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="@*|node()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="$createDate = '' and $ehipDecision = 'deny'">
<hl7:subject typeCode="SUBJ" nullFlavor="MSK" xsi:nil="true"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="@*|node()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
任何建议。