如何创建条件语句来对这些数据进行排序并在找到数据时应用模板?
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 > 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 > 0]">
并保留之前建议中的match="park"
,而不是切换到match="iceskating"
。
【讨论】:
以上是关于如何创建条件语句来对这些数据进行排序并在找到数据时应用模板?的主要内容,如果未能解决你的问题,请参考以下文章