gpt4 book ai didi

xml - 如何计算具有相同属性值的元素

转载 作者:数据小太阳 更新时间:2023-10-29 01:55:40 26 4
gpt4 key购买 nike

我相信这很容易,但我不想只见树木不见森林。

我有一个看起来像这样的 XML:

   <root>
<profil>
<e1 a="2">1</e1>
<m1 a="3">1</m1>
<e2 a="4">1</e2>
<m2 a="5">1</m2>
</profil>
<profil>
<e1 a="5">1</e1>
<m1 a="3">1</m1>
<e2 a="4">1</e2>
<m2 a="4">1</m2>
</profil>
<profil>
<e1 a="7">1</e1>
<m1 a="7">1</m1>
<e2 a="4">1</e2>
<m2 a="2">1</m2>
</profil>
</root>

现在我想知道每个/profil 有多少/m*/@a 等于 e*/@a。所以我想到了以下 XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="*">
<xsl:element name="root">
<xsl:for-each select="/root/profil">
<xsl:element name="count">
<xsl:value-of select="count(*[contains(name(), 'm') and ./@a = //*[contains(name(),'e')]/@a])"/>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>

但是结果是错误的:

<root>
<count>1</count>
<count>1</count>
<count>2</count>
</root>

应该是

<root>
<count>0</count>
<count>1</count>
<count>1</count>
</root>

有没有人建议我做错了什么?

最佳答案

将 XPath 替换为正确的,即:

<xsl:value-of select="count(*[substring(name(),1,1)='m' 
and ./@a = ../*[substring(name(),1,1)='e']/@a])"/>

我使用 substring 来匹配第一个属性字符,而不是 contains 来匹配字符串中的任何字符。

关于xml - 如何计算具有相同属性值的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6397347/

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