You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSL match规则如何编写筛选country为Russia或Kaliningrad的OR条件

错误原因

你之前的写法不生效,是因为XPath 1.0中|是节点集合并运算符,不是字符串匹配的或逻辑,country='Russia|Kaliningrad'的含义是判断country节点的文本是否等于字符串Russia|Kaliningrad,自然匹配不到你要的结果。

正确语法

你只需要在筛选条件里用or运算符拼接两个等值判断即可,修改后的匹配规则如下:

<xsl:template match="marker[not(country='Russia' or country='Kaliningrad')]"/>

完整可用的XSL样式表

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">
  <xsl:output method="xml" indent="yes"/>
  <xsl:strip-space elements="*"/>
  <!-- 移除country既不是Russia也不是Kaliningrad的marker节点 -->
  <xsl:template match="marker[not(country='Russia' or country='Kaliningrad')]"/>
  <!-- 标识模板,其余节点原样复制 -->
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

输出结果

应用上述样式表后,得到的XML结果如下(注:原XML中存在两处name结束标签误写为nane的笔误,以下为修正后输出):

<bases>
  <marker>
    <name>whatever</name>
    <city>Svetly</city>
    <country>Kaliningrad</country>
  </marker>
  <marker>
    <name>whatever</name>
    <city>Moscow</city>
    <country>Russia</country>
  </marker>
</bases>

内容的提问来源于stack exchange,提问作者Ed S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:57:02