(XSLT 1.0.)给定一个名为Rows的变量,它包含以下(示例):
输入
<AllResults>
<Result>
<subject>can be filtered by filter 1</subject>
<type>can be filtered by filter 2</type>
<date>can be filtered by filter 3</date>
</Result>
<Result> ...
</Result>
</AllResults>
Run Code Online (Sandbox Code Playgroud)
我有3个过滤变量.对于每个过滤器,如果过滤器变量不为空,我想将过滤器应用于上面显示的输入.我想将过滤后的结果(与过滤器匹配的项)存储到一个新变量中.我尝试了以下内容,但是我收到一条关于它的错误消息(filterResult)是"结果树而不是节点集".Rows变量是一个节点集,正如我通过使用调试器确定的那样.
XSL的一部分
<xsl:variable name="filterResult">
<xsl:choose>
<xsl:when test="$filter1 != '' and $filter2 != '' and $filter3 != ''">
<xsl:copy-of select="$Rows[date=$filter1 and type=$filter2 and subject=$filter3]" />
</xsl:when>
<xsl:when test="$filter1 != '' and $filter2 != ''">
<xsl:copy-of select="$Rows[date=$filter1 and type=$filter2]" />
</xsl:when>
<xsl:when test="$filter1 != '' and $filter3 != ''">
<xsl:copy-of select="$Rows[date=$filter1 and subject=$filter3]" /> …Run Code Online (Sandbox Code Playgroud) 我有这样的结构:
<Info ID="1">
...
<Date>2009-04-21</Date>
</Info>
<Info ID="2">
...
<Date>2009-04-22</Date>
</Info>
<Info ID="3">
...
<Date>2009-04-20</Date>
</Info>
Run Code Online (Sandbox Code Playgroud)
我想使用XSLT获取最新日期(在此示例中为2009-04-22).