gpt4 book ai didi

xslt - 选择属性不同的几个元素之一

转载 作者:行者123 更新时间:2023-12-04 21:49:52 26 4
gpt4 key购买 nike

我是一名经验丰富的程序员,但我是 XSLT 的新手,我发现它非常令人困惑。如果这是之前有人问过的问题,我深表歉意,但我对 XSLT 感到非常沮丧,我什至不知道要搜索什么......

我有一个问题,如果某个 XML 元素只出现一次,我想要它的内容输出,但如果它出现不止一次,我只想要那些具有特定属性的内容。

例如,假设我有一个 XML 文件(称为“文件 1”),其中包含

<food>
<snack>Chips</snack>
<snack type="nuts">Peanuts</snack>
</food>

和另一个 XML 文件(“文件 2”),其中包含
<food>
<snack>Cheese puffs</snack>
</food>

我需要一个 XSLT,它在处理文件 1 时只输出“花生”(而不是“薯条”),但仍然为文件 2 输出“奶酪泡芙”(即我不能只选择那些具有“类型”属性的元素, 那太简单了)。

这可能很简单,但我被卡住了......

最佳答案

本次改造 :

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>

<xsl:template match=
"*[snack/@type]/snack[not(@type)]"/>
</xsl:stylesheet>

在两种情况下都产生想要的结果 .

说明 :
  • 身份规则/模板“按原样”复制每个节点 .
  • 第二个模板覆盖身份模板 对于任何 snack没有 type 的元素具有同级的属性 snack具有 type 的元素属性。此模板具有空主体,可有效地从(复制到)输出中“删除”匹配的元素。
  • 关于xslt - 选择属性不同的几个元素之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6905869/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com