如何解决如何选择多个节点的值并在单个条件下对其进行测试?
为了继续这个 post,我重新构造了代码以更好地理解我的要求。我还提供了更多细节。
XML 文件
<Person>
<Name>Kavya</Name>
<Gift>
<ItemName>PD1</ItemName>
</Gift>
<Gift>
<ItemName>PS1</ItemName>
</Gift>
<Gift>
<ItemName>PD2</ItemName>
</Gift>
</Person>
现在,在上述结构中,仅当 Person 具有 Gift 和 ItemName 时,我才需要返回文本 Successfull 即 空 或只有 PS1 而没有 PD1 或 PD2。因此,在编写 XSLT 文件时,我使用了以下方法:
XSLT 文件(示例)
<Test>
<xsl:choose>
<xsl:when test="//Person/Gift[ItemName='PS1' and ItemName!='PD1']">
<xsl:text>Successfull</xsl:text>
</xsl:when>
</xsl:choose>
</Test>
截至目前,它返回成功,因为其中一个礼物的 ItemName 为“PS1”。但是,根据我的需要,它不能显示任何内容,因为虽然有一个 ItemName 为 'PS1',但该人仍然拥有 ItemName 为 'PD1' 和 'PD2' 的礼物
准确地说,我不想检查 Gift 中的单个 ItemName。我试图检查这个人(作为一个整体)是否有 PS1 而不是 PD1 或 PD2
希望这很清楚。请协助。
解决方法
在 XSLT 2.0 中,您可以使用 exists()
:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/Person">
<xsl:choose>
<xsl:when test="./Gift[ItemName='PS1'] and not(exists(./Gift[ItemName='PD1']))">
<xsl:text>Sample</xsl:text>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。