gpt4 book ai didi

xslt - 如何从 xslt 的 xml 输出中删除不需要的空 xmlns

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

我正在尝试构建一个 Soap 请求。所需的输出是:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"   
xmlns:soap1="http://acme.com/ws/soapheaders">
<soap:Header>
<soap1:locale>en</soap1:locale>
<soap1:authentication>
<soap1:username>john.doe</soap1:username>
<soap1:password>psw</soap1:password>
</soap1:authentication>
</soap:Header>

这是我的测试 xsl(语言、用户名和密码将在实际应用程序中传递):
 <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="language" select="'en'"/>
<xsl:param name="username" select="'john.doe'"/>
<xsl:param name="password" select="'psw'"/>
<xsl:template match="/">
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:soap1="http://acme.com/ws/soapheaders" >
<xsl:call-template name="soapHeader"/>
<xsl:call-template name="soapBody"/>
</soap:Envelope>
</xsl:template>
<xsl:template name="soapHeader">
<soap:Header>
<soap1:locale><xsl:value-of select="$language" /></soap1:locale>
<soap1:authentication>
<soap1:username><xsl:value-of select="$username" /></soap1:username>
<soap1:password><xsl:value-of select="$password" /></soap1:password>
</soap1:authentication>
</soap:Header>
</xsl:template>
<xsl:template name="soapBody">
</xsl:template>
</xsl:stylesheet>

但是,输出是:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:soap1="http://acme.com/ws/soapheaders">
<soap:Header xmlns:soap="">
<soap1:locale xmlns:soap1="">en</soap1:locale>
<soap1:authentication xmlns:soap1="">
<soap1:username>john.doe</soap1:username>
<soap1:password>psw</soap1:password>
</soap1:authentication>
</soap:Header>

存在不需要的空 namespace ,例如 xmlns:soap=""、xmlns:soap1=""。你能指出我正确的方向来消除这些不需要的工件吗?

谢谢。

最佳答案

我很惊讶您的 XSLT 处理器接受该 XSLT,因为它不是有效的 XML,但为了使其有效并(我相信)解决您的问题,您应该在 <xsl:stylesheet> 上声明 namespace 元素而不是在 <soap:Envelope> 上元素:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  version="1.0"
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:soap1="http://acme.com/ws/soapheaders">

关于xslt - 如何从 xslt 的 xml 输出中删除不需要的空 xmlns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15863243/

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