使用XSLT1将文档动态指定为变量



我在这里看到了答案,但是它们不起作用。

我可以使用以下任意一种:

  • <xsl:variable name="AssignHistory" select="document('AssignHistory.xml')"/>
  • <xsl:variable name="AssignHistory" select="document('ForeignAssignHistory.xml')"/>

但是我现在需要使它动态。所以我尝试了这个,但是它不喜欢它:

<xsl:variable name="AssignHistory">
<xsl:choose>
<xsl:when test="//Settings/ForeignGroupMode=1">
<xsl:value-of select="document('ForeignAssignHistory.xml')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="document('AssignHistory.xml')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>

就是行不通。它说:

对变量或参数'AssignHistory'的引用必须求值为节点列表。


给出一些上下文。这是我现在的文件:

<td class="cellComments" colspan="4">
<xsl:variable name="AssignHistory" select="document('AssignHistory.xml')"/>
<xsl:variable name="week" select="Date/@NextWeek"/>
<xsl:variable name="NextReviewQuestion" select="$AssignHistory/AssignmentHistory/*[name()=$week]/ReviewQuestion"/>
<xsl:if test="normalize-space($NextReviewQuestion) != ''">
<xsl:if test="normalize-space(ReviewQuestion) != ''">
<span class="textReviewQuestionLabel">
<xsl:value-of select="//Labels/NextReviewQuestion"/>&#160;
</span>
<span class="textReviewQuestion">
<xsl:value-of select="$NextReviewQuestion"/>
</span>
<br />
</xsl:if>
</xsl:if>
<br />
<br />
<br />
</td>

我想引入选择逻辑来选择正确的文档。

或许可以试试:

<xsl:variable name="AssignHistoryPath">
<xsl:choose>
<xsl:when test="//Settings/ForeignGroupMode=1">ForeignAssignHistory.xml</xsl:when>
<xsl:otherwise>AssignHistory.xml</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="AssignHistory" select="document($AssignHistoryPath)"/>

未测试,因为因为没有提供测试代码。

最新更新