【问题标题】:Limit xml-namespaces to only the main root将 xml 命名空间限制为仅主根
【发布时间】:2018-04-04 14:43:02
【问题描述】:

我有这个问题

 WITH XMLNAMESPACES(DEFAULT 'https://tribunet.hacienda.go.cr /docs/esquemas/2017/v4.2/facturaElectronica'
                      ,'http://www.w3.org/2001/XMLSchema' AS xsd
                      ,'http://www.w3.org/2001/XMLSchema-instance' AS xsi)
SELECT 1 AS [id]
        ,0 AS [pass]
        (
         /*Others*/
        SELECT 
        OT.OTH_MESSAGE as Others
        FROM [crdx_COREDev1].[dbo].[OTH_OTHERS] as OT
        where 
        OT.OTH_ID=E.OTH_ID
        fOR XML PATH ('Others'), type

       )
      ,0 AS [CONSECUTIVE]

      FOR XML PATH('FE');

这会生成这个 XML

<FE xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2    /facturaElectronica"> <- CHANGE 2
 <id>1</id>
 <pass>0</pass>
 <CONSECUTIVE>0</CONSECUTIVE>
 <Others xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2 /facturaElectronica">
 <MESSAGE>MESSAGE</MESSAGE>       
</Others> 
 </FE>

现在我的问题是:我只希望 &lt;FE&gt; 显示命名空间,但是 - 正如您在 xml 中看到的那样 - 声明也出现在 &lt;Others&gt; 中。如何将其限制为 &lt;FE&gt;

【问题讨论】:

    标签: sql-server xml tsql xml-namespaces


    【解决方案1】:

    这是一个烦人且众所周知的问题,每当您在FOR XML 查询中使用与嵌套子查询相关的命名空间时都会发生这种情况...

    连接问题已存在 10 多年 - 直到最近才消失。

    值得一提的是,这些重复的命名空间声明并没有错,只是使您的 XML 膨胀。而且它可能与(到)严格的模式验证发生冲突。

    没有好的解决方案,只有变通方法:

    • 创建没有命名空间的内部 XML 并在字符串基础上添加包装节点,或者
    • 将命名空间创建为普通属性(但未命名为xmlns)并使用REPLACE 更改名称。

    两种解决方法都需要转换为 NVARCHAR(MAX) 并返回到 XML

    我真的不知道,为什么要这样实现......

    找一些相关的例子

    注意

    xmlns="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2    /facturaElectronica">
    

    您正在使用带有空格的命名空间 URL。这是不允许的……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-24
      • 2015-10-04
      • 1970-01-01
      • 2016-07-08
      • 2012-02-21
      • 2016-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多