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

如何使用XSLT根据属性值获取XML数据并处理多语言description节点

XSLT实现优先获取威尔士语描述的逻辑

没问题,我来帮你搞定这个需求!核心逻辑就是优先选用带language='W'且非空的威尔士语描述,如果这个不存在或者是空内容,再 fallback 到无属性的英文描述。下面是具体的实现代码和说明:

完整XSLT代码

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>

    <!-- 匹配你需要处理的父节点(这里以根节点下的item为例,可根据实际结构调整) -->
    <xsl:template match="/root/item">
        <processed-item>
            <preferred-description>
                <xsl:call-template name="get-preferred-description"/>
            </preferred-description>
        </processed-item>
    </xsl:template>

    <!-- 核心逻辑模板:获取优先描述 -->
    <xsl:template name="get-preferred-description">
        <!-- 先筛选出有效威尔士语描述:带language='W'且内容非空(排除纯空格的空节点) -->
        <xsl:variable name="valid-welsh-desc" select="description[@language='W' and normalize-space(.) != '']"/>
        
        <xsl:choose>
            <!-- 如果有有效威尔士语描述,就输出它 -->
            <xsl:when test="$valid-welsh-desc">
                <xsl:value-of select="$valid-welsh-desc"/>
            </xsl:when>
            <!-- 否则输出无属性的英文描述 -->
            <xsl:otherwise>
                <xsl:value-of select="description[not(@language)]"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
</xsl:stylesheet>

代码说明

  1. 精准筛选:用$valid-welsh-desc变量筛选出真正有效的威尔士语描述,normalize-space(.) != ''能排除那些只有空格的空节点,避免无效内容被选中。
  2. 优先级分支:通过xsl:choose实现明确的优先级判断,优先处理威尔士语描述,再 fallback 到英文描述。
  3. 复用性强:把核心逻辑封装成命名模板get-preferred-description,你可以在多个需要获取描述的地方直接调用,让代码更整洁。

测试示例

假设你有这样的源XML:

<root>
    <!-- 场景1:威尔士语描述有效 -->
    <item>
        <description language="W">Dyma ddisgrifiad Cymraeg</description>
        <description>This is the English fallback</description>
    </item>
    <!-- 场景2:威尔士语描述为空(纯空格) -->
    <item>
        <description language="W">   </description>
        <description>English description when Welsh is empty</description>
    </item>
    <!-- 场景3:没有威尔士语描述 -->
    <item>
        <description>Only English available here</description>
    </item>
</root>

处理后会得到符合预期的结果:

<processed-item>
    <preferred-description>Dyma ddisgrifiad Cymraeg</preferred-description>
</processed-item>
<processed-item>
    <preferred-description>English description when Welsh is empty</preferred-description>
</processed-item>
<processed-item>
    <preferred-description>Only English available here</preferred-description>
</processed-item>

完全贴合你的需求逻辑~

内容的提问来源于stack exchange,提问作者jesal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:45:21