gpt4 book ai didi

XSLT 属性与命名空间匹配

转载 作者:行者123 更新时间:2023-12-04 16:58:19 25 4
gpt4 key购买 nike

我找不到一个很好的解释为什么这里的第二个例子有效但第一个没有:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xsd"
version="2.0">

<xsl:template match="/">

<xsl:value-of select="/wsdl:definitions/wsdl:message[@name = $messageName]"/>
<xsl:value-of select="/wsdl:definitions/wsdl:message/@name[. = $messageName]"/>

</xsl:template>

</xsl:stylesheet>

上下文是在 WSDL 文档中查找特定的命名消息。我怀疑它与命名空间有关,几乎所有让我对 XSLT 感到困惑的东西都与命名空间有关,但我不明白为什么?

有人可以为我阐明这一点吗?我不喜欢尝试获得解决方案,因为它不会导致理解。

WSDL 的相关部分是:
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/">

<message name="retrieveCustomerYtdResponse">
<part name="parameter"/>
</message>
<message name="retrieveCustomerYtdRequest"/>

</definitions>

最佳答案

命名空间没有任何问题。这两个表达式都是正确的,并产生了预期的结果。

假设(至少)指令的上下文模板,在第一条指令中,您尝试打印 的文本节点的后代。 wsdl:message 给定 @name .由于该元素内没有文本,因此不会打印任何内容。

第二条指令将打印 的值@name .没错。

关于XSLT 属性与命名空间匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7278789/

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