我需要一些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时触发输出。
答案 0 :(得分:1)
这样尝试吗?
<xsl:variable name="time" select="substring-before(substring-after(@Where, 'Time='), ',')" />
<xsl:if test="$time > 10">
<xsl:text>Too Long</xsl:text>
</xsl:if>
请注意,这是假设Time
值后总是有一个逗号。如果没有,请自行添加。