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

如何在XSLT中访问<Any>元素?附场景与尝试代码

解决方案

你之前的XSLT模板匹配语法存在错误,match属性需要指定节点路径或匹配模式,不能直接写入条件表达式。结合你的需求以及XSD中xsd:any允许扩展元素的特性,以下是两种可行的实现方案:

方案一:根节点模板内判断输出

直接匹配文档根节点,通过xsl:if判断lastName的值是否为"Musk",满足条件时输出"Tesla":

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:if test="Person/Name/lastName = 'Musk'">
      <text>Tesla</text>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>

方案二:匹配符合条件的节点输出

先匹配根节点并触发子节点处理逻辑,再专门匹配值为"Musk"的lastName节点来输出内容:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:apply-templates select="Person/Name/lastName[. = 'Musk']"/>
  </xsl:template>

  <xsl:template match="lastName[. = 'Musk']">
    <text>Tesla</text>
  </xsl:template>
</xsl:stylesheet>

补充说明

XSD中的<Any>(即xsd:any)允许在Person节点下添加未预定义的扩展元素(比如你XML中的Name),XSLT处理这类扩展元素时,直接使用常规的节点路径即可访问,无需特殊配置,只要路径正确就能定位到lastName节点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:20:30