使用XSLT解析XML属性

使用XSLT解析XML属性,xml,xslt,Xml,Xslt,我需要一些XSLT根据源XML中的一个属性返回某种输出(任何真正的输出)。这个属性由许多名称-值对组成,因此我需要能够解析整个文本并提取某些值,然后对它们进行比较 例如,我可能有一些XML如下所示: <Element Where="Time=3,Successful=N"></Element> 我想返回的是,如果“Time”的值大于10,则表示花费的时间太长;如果“Successful”的值为“N”,则表示未成功 我使用“contains”函数成功实现的第二个方面:

我需要一些XSLT根据源XML中的一个属性返回某种输出(任何真正的输出)。这个属性由许多名称-值对组成,因此我需要能够解析整个文本并提取某些值,然后对它们进行比较

例如,我可能有一些XML如下所示:

<Element Where="Time=3,Successful=N"></Element>

我想返回的是,如果“Time”的值大于10,则表示花费的时间太长;如果“Successful”的值为“N”,则表示未成功

我使用“contains”函数成功实现的第二个方面:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/Element">
        <xsl:if test="contains(@Where, 'Successful=N')">
            Message Failed
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

消息失败
但是我不知道如何解析出“Time”值,然后在值大于10时比较它以触发输出。

这样试试

<xsl:variable name="time" select="substring-before(substring-after(@Where, 'Time='), ',')" />
<xsl:if test="$time &gt; 10">
    <xsl:text>Too Long</xsl:text>
</xsl:if>

太久
请注意,这假定
时间
值后始终有一个逗号。如果没有,请自己添加