gpt4 book ai didi

XSLT 1.0 添加命名空间 + xsi :type to element

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

我想从这里开始:

<detail> 
<BusinessError>
<environment>Test</environment>
<businesserror>
<BusinessCode>my_businesscode</BusinessCode>
<BusinessMessage>my_businessmessage</BusinessMessage>
</businesserror>
</BusinessError>
</detail>

对此(仅对 businesserror 元素感兴趣)
<detail> 
<v1:BusinessError xmlns:v1="ddd">
<v1:environment>Test</v1:environment>
<v1:businesserror xsi:type="ns2:AppErrorType" xmlns:ns2="aaaaa" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns2:BusinessCode>my_businesscode</ns2:BusinessCode>
<ns2:BusinessMessage>my_businessmessage</ns2:BusinessMessage>
</v1:businesserror>
</v1:BusinessError>
</detail>

重要的细节(我认为)命名空间 uri 是作为变量导入的!

我可以通过 xs:attribute 添加 xsi:type 并自动添加 xsi 命名空间
但不是命名空间 (xmlns:ns2="aaaaa") ?
请注意,包含元素的命名空间 (businesserror) 与我尝试声明的命名空间不同 (ddd) (aaaa)

谢谢

最佳答案

此 XSLT 会将 namespace 定义添加到根元素(详细信息)。

<?xml version="1.0" encoding="utf-16"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns2="aaaaa" xmlns:v1="ddd">
<xsl:output omit-xml-declaration="yes" method="xml" version="1.0" />
<xsl:template match="/">
<xsl:apply-templates select="/detail" />
</xsl:template>
<xsl:template match="/detail">
<detail>
<xsl:element name="v1:BusinessError">
<xsl:element name="v1:environment">
<xsl:value-of select="BusinessError/environment/text()" />
</xsl:element>
<xsl:element name="v1:businesserror">
<xsl:attribute name="xsi:type">ns2:AppErrorType</xsl:attribute>
<xsl:element name="ns2:BusinessCode">
<xsl:value-of select="BusinessError/businesserror/BusinessCode/text()" />
</xsl:element>
<xsl:element name="ns2:BusinessMessage">
<xsl:value-of select="BusinessError/businesserror/BusinessMessage/text()" />
</xsl:element>
</xsl:element>
</xsl:element>
</detail>
</xsl:template>
</xsl:stylesheet>

不要将 节点更改为 xsl:element 节点,因为这不会通过命名空间定义进行传输。

关于XSLT 1.0 添加命名空间 + xsi :type to element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2264715/

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