使用XSLT解析XML属性

时间:2018-10-22 16:29:01

标签: xml xslt

我需要一些XSLT以基于源XML中的属性之一返回某种输出(实际上是任何东西)。此属性由许多名称/值对组成,因此我需要能够解析整个文本并提取某些值,然后对其进行比较。

例如,我可能有一些看起来像这样的XML:

<?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>

我想返回的只是说“时间”的值大于10花了太长时间,或者说如果“成功”的值是“ N”则不成功。

我使用“包含”功能设法达到的第二个方面:

{{1}}

但是我无法理解如何解析“ Time”值,然后比较该值以在值> 10时触发输出。

1 个答案:

答案 0 :(得分:1)

这样尝试吗?

<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>

请注意,这是假设Time值后总是有一个逗号。如果没有,请自行添加。