gpt4 book ai didi

xpath - 根据关联列表中的值过滤 XPath 列表

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

鉴于此 XML

<DiagList>
<Diag id="1" icd="400"/>
<Diag id="2" icd="401"/>
<Diag id="3" icd="402"/>
<Diag id="4" icd="400"/>
</DiagList>
<ICDList>
<ICD id="400" description="First one"/>
<ICD id="401" description="Second one"/>
<icd id="402" description="Third one"/>
<ICDList>

我想编写一个 Xpath 查询,该查询将选择相关 ICD 描述包含的 Diags
一些文字。

因此,例如,如果我指定了“st”的文本,那么我应该得到 Diags“1”和“4”。如果我指定“ir”的文本,我应该得到诊断“1”、“3”和“4”。

我试过
/DiagList/Diag[contains(lcase(/ICDList/ICD[@id=/DiagList/Diag/@icd]/@description), 'st')]

和变化。

我一直无法让它工作。似乎它不喜欢对@icd 的嵌套引用。

这是可能的吗?

谢谢

最佳答案

使用 :

   /*/DiagList
/*
[@icd
=
/*/ICDList/*
[contains(@description, $pText)]
/@id
]

哪里 $pText必须替换为所需的字符串文字。

基于 XSLT 的验证 :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="my:my ">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pText" select="'ir'"/>

<xsl:template match="/">
<xsl:copy-of select=
"/*/DiagList
/*
[@icd
=
/*/ICDList/*
[contains(@description, $pText)]
/@id
]"/>
</xsl:template>
</xsl:stylesheet>

当此转换应用于提供的 XML 文档时 (更正为格式正确):
<t>
<DiagList>
<Diag id="1" icd="400"/>
<Diag id="2" icd="401"/>
<Diag id="3" icd="402"/>
<Diag id="4" icd="400"/>
</DiagList>
<ICDList>
<ICD id="400" description="First one"/>
<ICD id="401" description="Second one"/>
<icd id="402" description="Third one"/>
</ICDList>
</t>

选择想要的节点并将其复制到输出 :
<Diag id="1" icd="400" />
<Diag id="3" icd="402" />
<Diag id="4" icd="400" />

当我们在上面的变换中设置 :
 <xsl:param name="pText" select="'st'"/>

然后再次产生了想要的结果:
<Diag id="1" icd="400" />
<Diag id="4" icd="400" />

关于xpath - 根据关联列表中的值过滤 XPath 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8087507/

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