如何创建条件语句来对这些数据进行排序并在找到数据时应用模板?

Posted

技术标签:

【中文标题】如何创建条件语句来对这些数据进行排序并在找到数据时应用模板?【英文标题】:How do I create a conditional statement to sort through this data and apply a template if the data is found? 【发布时间】:2021-12-30 23:54:23 【问题描述】:

我想创建一个 xsl:if 语句,如果满足某些条件,它将应用模板。

这是我的 XML 文件。我想找到可以滑冰的公园并按字母顺序排序:

<?xml version="1.0"?>
    <parks>
        <park>
            <park_name>MCGUANE (JOHN)</park_name>
            <acres>10.3</acres>
            <iceskating>0</iceskating>
        </park>
        <park>
            <park_name>ARMOUR (PHILIP) SQUARE</park_name>
            <acres>9.05</acres>
            <iceskating>0</iceskating>
        </park>
        <park>
            <park_name>FULLER (MELVILLE)</park_name>
            <acres>11.31</acres>
            <iceskating>1</iceskating>
        </park>
        <park>
            <park_name>CORNELL (PAUL) SQUARE</park_name>
            <acres>8.8</acres>
            <iceskating>1</iceskating>
        </park>
        <park>
            <park_name>RUSSELL (MARTIN) SQUARE</park_name>
            <acres>10.05</acres>
            <iceskating>2</iceskating>
        </park>
</parks>

这是我的 XSL 文件。如果子元素“iceskating”包含大于 0 的值,我希望它应用模板:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />

    <xsl:template match="/">
        <xsl:element name="results">
            <xsl:element name="iceskating_parks">
                <xsl:apply-templates select="parks/park">
                    <xsl:sort select="park_name" order="ascending" />
                </xsl:apply-templates>
            </xsl:element>
        </xsl:element>
    </xsl:template>

    <xsl:template match="iceskating" >
        <xsl:if test="iceskating &gt; 0">
            <park name="park_name" acres="acres" />
        </xsl:if>
    </xsl:template>

我希望转换后的 XML 文件格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<results>
    <iceskating_parks>
        <park name="PARK NAME" acres="99.99"/>
        <park name="PARK NAME" acres="99.99"/>
        <park name="PARK NAME" acres="99.99"/>
    </iceskating_parks>
</results>

【问题讨论】:

【参考方案1】:

将条件放入应用模板中,例如

<xsl:apply-templates select="parks/park[iceskating &gt; 0]">

并保留之前建议中的match="park",而不是切换到match="iceskating"

【讨论】:

以上是关于如何创建条件语句来对这些数据进行排序并在找到数据时应用模板?的主要内容,如果未能解决你的问题,请参考以下文章

根据ggplot中的两个条件对条形图进行排序

应该使用啥相似性度量来对这些序列进行分类?

Oracle SQL 语句中的条件顺序是不是重要?

如何创建启动器来对我的 Jumplists 进行分组

用SQL语句设置某个字段的排序方式

如果输入一条查询一张表的sql语句,但数据库执行缓慢,如何并采取啥样的方法对数据库进行优化?