gpt4 book ai didi

xml - 子节点在Xpath中具有某些值的属性的节点的属性

转载 作者:行者123 更新时间:2023-12-03 17:10:45 28 4
gpt4 key购买 nike

我正在尝试获取一个节点的属性名称,该节点的子节点具有2个需要匹配的属性。当我写它的时候听起来很奇怪,但是我想它应该不难。

我正在使用XLST来解决此代码。

<xsl:template match="/">
<xsl:apply-templates select="/parent[child[@A>10 and B='something']]/@NAME"/>

</xsl:template>
<xsl:template match="//@NAME">
<p><xsl:value-of select="concat(., ' ')"/></p>
</xsl:template>
</xsl:stylesheet>


但不幸的是,我无法使其工作。对于这个问题,尝试不同的方法已经太久了。

XLS看起来像这样:

<parent NAME="a name">
<child A='999' B='something'>
</child>
</parent>

<parent NAME="a name2">
<child A='1' B='something'>
</child>
</parent>


谢谢!

最佳答案

实际上,您的第一个表达式并不遥远,但应该是这样。

 <xsl:apply-templates select="//parent[child[@A>10 and @B='something']]/@NAME"/>


当前表达式以 /parent开头,如果它是XML的根元素,则仅选择 parent。一个XML文档只能有一个根元素,并且您的XML代码段显示多个 parent,那么这表明它们有一个包含它们的父元素。

进行 //parent,尽管选择 parent元素在XML中的任何位置。

另外,您的表达式为元素选择了 B(对于元素)而不是 @B

因此,完整的XSLT看起来像这样

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/">
<xsl:apply-templates select="//parent[child[@A>10 and @B='something']]/@NAME"/>
</xsl:template>

<xsl:template match="@NAME">
<p><xsl:value-of select="concat(., ' ')"/></p>
</xsl:template>
</xsl:stylesheet>


请注意,无需在 //的模板匹配中使用 @NAME

关于xml - 子节点在Xpath中具有某些值的属性的节点的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41230759/

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