gpt4 book ai didi

XPath2 : A sequence of more than one item is not allowed as the first argument of string()

转载 作者:行者123 更新时间:2023-12-03 16:52:23 24 4
gpt4 key购买 nike

我有这个包含证书及其属性的 xml。这是我运行提取查询的 xml

<Certificates>
<CertificateAndChain>
<Certificate>
<FriendlyName />
<Thumbprint>EE8B375347FCADDC25547FDDF61866E07D5B6A71</Thumbprint>
<SerialNumber>256BB11DB5BE889E46EBCD85608DA849</SerialNumber>
<Version>3</Version>
<SignatureAlgorithm>sha1RSA</SignatureAlgorithm>
<Issuer>CN=certname</Issuer>
<Subject>CN=certname</Subject>
<NotAfter>2040-09-26T18:30:00Z</NotAfter>
<NotBefore>2016-09-27T18:30:00Z</NotBefore>
<IsVerified>false</IsVerified>
</Certificate>

.
.
。(继续)...

我已经为此 xml 编写了另一个测试,该测试需要提取所有即将在 future 10 天内过期的证书的指纹。
作为测试的一部分,我将提取查询编写为:
    <XPath2ResponseParameter Name="TPName"><ExtractionQuery><![CDATA[string(//CertificateAndChain/Certificate[NotAfter[text() <= (current-dateTime() + xs:dayTimeDuration('P10D'))]]/Thumbprint)]]></ExtractionQuery></XPath2ResponseParameter>

测试也在 xml 文件中。但是,当我运行测试时,我得到了这个异常:
string() 的第一个参数不允许包含多个项目的序列 .
这可能是因为 xml 中存在多个证书元素。所以,我不知道如何提取所有不符合上述条件的指纹(可能超过 1 个,我需要提取所有指纹)

谁能帮我解决这个问题?

最佳答案

使用 XPath 2.0 时,您可以在轴中调用函数。所以,尝试移动string()函数到内部 XPath 的末尾(为便于阅读而格式化):

//CertificateAndChain
/Certificate[
NotAfter[
text() <= (current-dateTime() + xs:dayTimeDuration('P10D'))
]
]/Thumbprint
/string()

更新:

由于 CDATA 在这种情况下无法接收多个字符串,根据您第一条评论中的错误消息,您需要将这些字符串组合成一个,大概使用 string-join() :
string-join(
//CertificateAndChain
/Certificate[
NotAfter[
text() <= (current-dateTime() + xs:dayTimeDuration('P10D'))
]
]/Thumbprint
/string()
,' ')

关于XPath2 : A sequence of more than one item is not allowed as the first argument of string(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40542808/

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