gpt4 book ai didi

XSLT:从子元素复制属性

转载 作者:行者123 更新时间:2023-12-02 11:45:03 26 4
gpt4 key购买 nike

输入:

 <a q='r'>
<b x='1' y='2' z='3'/>
<!-- other a content -->
</a>

期望的输出:

 <A q='r' x='1' y='2' z='3'>
<!-- things derived from other a content, no b -->
</A>

有人可以给我一个食谱吗?

最佳答案

简单。

<xsl:template match="a">
<A>
<xsl:copy-of select="@*|b/@*" />
<xsl:apply-templates /><!-- optional -->
</A>
</xsl:template>

<xsl:apply-templates />如果您没有 <a> 的其他子项,则没有必要您想要处理。

注意

  • 使用<xsl:copy-of>将源节点不变地插入到输出中
  • 联合运算符的使用 |一次选择多个不相关的节点
  • 您可以将属性节点复制到新元素,只要这是您添加任何子元素之前所做的第一件事。
<小时/>

编辑:如果您需要缩小复制的属性以及保留的属性的范围,请使用此(或其变体):

<xsl:copy-of select="(@*|b/@*)[
name() = 'q' or name() = 'x' or name() = 'y' or name() = 'z'
]" />

甚至

<xsl:copy-of select="(@*|b/@*)[
contains('|q|x|y|z|', concat('|', name(), '|'))
]" />

注意括号如何使谓词应用于所有匹配的节点。

关于XSLT:从子元素复制属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5332266/

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