gpt4 book ai didi

xml - 为什么xsl :value-of not working here (XML namespaces)?

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

我有以下来自 ASP.NET Web API 的 XML 片段:

<DrilldownModel xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://schemas.datacontract.org/2004/07/MY.API.Models">
<AddressInfo xmlns:d2p1="http://schemas.datacontract.org/2004/07/MY.API.Entities.Drilldown">
<d2p1:AddressNumber>4213</d2p1:AddressNumber>
<d2p1:AddressUseType>RESIDENTIAL</d2p1:AddressUseType>
<d2p1:EncryptedParcelId i:nil="true" />
<d2p1:GisError i:nil="true" />
<d2p1:GisErrorDetail i:nil="true" />
</AddressInfo>
</DrilldownModel>

我正在使用以下内容尝试从文档中获取值:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/MY.API.Models"
xmlns:d2p1="http://schemas.datacontract.org/2004/07/MY.API.Entities.Drilldown"
>
<xsl:template match="/">
<html>
<body>
<xsl:value-of select="//AddressInfo/d2p1:AddressNumber"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

但是我没有收回值(value)。如果我删除,默认命名空间 xmlns="http://schemas.datacontract.org/2004/07/MY.API.Models ,我能够检索该值。

对出了什么问题有任何想法吗?

最佳答案

意识到默认命名空间也适用于没有命名空间前缀的后代元素,并在 xsl:stylesheet 上声明默认命名空间不会影响 XSLT 中的 XPath。

因此,在您的 XSLT 中,为默认命名空间定义一个命名空间前缀:

xmlns:i="http://schemas.datacontract.org/2004/07/MY.API.Models"

然后替换
    <xsl:value-of select="//AddressInfo/d2p1:AddressNumber"/>


    <xsl:value-of select="//m:AddressInfo/d2p1:AddressNumber"/>

以便您选择 AddressInfo http://schemas.datacontract.org/2004/07/MY.API.Models 中的元素它所在的命名空间。

关于xml - 为什么xsl :value-of not working here (XML namespaces)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51934829/

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