gpt4 book ai didi

xml - 查找xml文档中价数最高的元素

转载 作者:数据小太阳 更新时间:2023-10-29 02:34:08 26 4
gpt4 key购买 nike

我有一个像这样的 XML 结构:

<TR>
<Zeile status="done">
<Typ>FUNCTION</Typ>
<Name>PressKey</Name>
</Zeile>
<Zeile status="failed">
<Typ>FUNCTION</Typ>
<Name>PressKey</Name>
</Zeile>
<Zeile status="warn">
<Typ>FUNCTION</Typ>
<Name>PressKey</Name>
</Zeile>
<Zeile status="done">
<Typ>FUNCTION</Typ>
<Name>PressKey</Name>
</Zeile>
</TR>

现在我想获取具有最差状态的元素。

status 值从最好到最差的顺序:

done
ignoreFailed
ignoreExpected
passed
unknown
warn
failed

我该如何处理?最后,我希望最差的 status 在名为 worst_status 的变量中作为 Integer,在变量 worst_status_string

中作为 String

这是我尝试过的(但由于禁止覆盖变量而失败):

<xsl:variable name="statusMapping">
<statusMap>
<status key="done" value="1"/>
<status key="ignoreFailed" value="2"/>
<status key="ignoreExpected" value="3"/>
<status key="passed" value="4"/>
<status key="unknown" value="5"/>
<status key="warn" value="6"/>
<status key="failed" value="7"/>
</statusMap>
</xsl:variable>




<xsl:template match="//TR">
<xsl:variable name="worst_status" select="1"/>

<xsl:for-each select="Zeile">
<xsl:variable name="current_status" select="@status"/>
<xsl:for-each select="exslt:node-set($statusMapping)/statusMap/status">
<xsl:if test="@key = $current_status">
<xsl:if test="@value > $worst_status">
<xsl:variable name="worst_status" select="@value"/>
</xsl:if>
</xsl:if>
</xsl:for-each>

WorstStatus: <xsl:value-of select="$worst_status"/>
</xsl:for-each>
</xsl:template>

最佳答案

降序排序取第一个:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:exsl="http://exslt.org/common"
exclude-result-prefixes="exsl">

<xsl:variable name="statusMapping-rtf">
<status key="done" value="1"/>
<status key="ignoreFailed" value="2"/>
<status key="ignoreExpected" value="3"/>
<status key="passed" value="4"/>
<status key="unknown" value="5"/>
<status key="warn" value="6"/>
<status key="failed" value="7"/>
</xsl:variable>

<xsl:variable name="statusMapping" select="exsl:node-set($statusMapping-rtf)"/>




<xsl:template match="TR">
<xsl:variable name="worst_status">
<xsl:for-each select="Zeile">
<xsl:sort select="$statusMapping/status[@key = current()/@status]/@value" data-type="number" order="descending"/>
<xsl:if test="position() = 1">
<xsl:value-of select="$statusMapping/status[@key = current()/@status]/@value"/>
</xsl:if>
</xsl:for-each>
</xsl:variable>

<xsl:variable name="worst_status_string" select="$statusMapping/status[@value = $worst_status]/@key"/>

<xsl:value-of select="concat($worst_status_string, ': ', $worst_status)"/>
</xsl:template>

</xsl:transform>

如果你真的需要一个变量是一个数值那么添加<xsl:variable name="worst_status_number" select="number($worst_status)"/> .

关于xml - 查找xml文档中价数最高的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36499003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com