gpt4 book ai didi

xml - XSL : finding a node based on the content of another node

转载 作者:行者123 更新时间:2023-12-04 05:54:42 27 4
gpt4 key购买 nike

我有一个如下所示的 XML 文件:

<container>
<bugs>
<bug id="b1">
<reporter>Tom</reporter>
...
</bug>
<bug id="b2">
<reporter>Jane</reporter>
...
</bug>
</bugs>
<users>
<user>
<userid>10</userid>
<username>Tom</username>
</user>
<user>
<userid>5</userid>
<username>Jane</username>
</user>
</users>
</container>

最终结果应该是:
<items>
<item>
<bugid>b1</bugid>
<author id="10">Tom</author>
</item>
<item>
<bugid>b2</bugid>
<author id="5">Jane</author>
</item>
</items>

问题:对于 id 查找,我无法得到正确的比较。

我以为它会是这样的:
<xsl:template match="bug">
....
<xsl:element name="author">
<xsl:attribute name="id">
<xsl:value-of select="//users/user[username=reporter]/userid"/>
</xsl:attribute>
</xsl:element>
....
</xsl:template>

但这会返回一个空 id ( id="")。
<xsl:value-of select="//users/user[username='Tom']/userid"/>

返回 10

<xsl:value-of select="reporter"/>

返回汤姆。

我看不出这里有什么问题。

最佳答案

//users/user[username=reporter]/userid

寻找 user包含相等 usernamereporter元素。它不搜索 reporter在您的 bug .

您可以通过首先将记者的姓名绑定(bind)到一个变量来使其工作:
<xsl:element name="author">
<xsl:variable name="reporter" select="string(reporter)"/>
<xsl:attribute name="id">
<xsl:value-of select="//users/user[username=$reporter]/userid"/>
</xsl:attribute>
</xsl:element>

关于xml - XSL : finding a node based on the content of another node,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9650925/

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