【问题标题】:How can I add constants to my root in XML?如何在 XML 中将常量添加到我的根目录?
【发布时间】:2021-09-18 03:52:56
【问题描述】:

这是我生成 XML 的查询:

SELECT [a]                             a
      ,[b]                             b
      ,[c]                             c
      ,[d]                             d
      ,[e]                             e
      ,[f]                             f
      ,[g]                             g
  FROM test
  ORDER BY 1
  FOR XML PATH('a'), ROOT('ROOT'), ELEMENTS XSINIL

生成的 XML 以此根开始:

<ROOT xmlns:xsi="http://www.xxxxxxxxxxxxxxxxxxxxxx">

我的目标是拥有一个拥有更多属性的根

<ROOT xmlns:xsi="http://www.xxxxxxxxxxxxxxxxxxxxxx" cod_1="SIN_OPE" cod_2="08" num_reg="12" xsi:noNamespaceSchemaLocation="yyyyyyyyyyyyyyyyyyy.xsd">

这个属性就像我想附加到我的根的常量(不是来自选择的列)。它们将被修复,无论选择是什么

有可能吗?

【问题讨论】:

  • 提问时,您需要提供minimal reproducible example: (1) DDL 和样本数据填充,即 CREATE 表和 INSERT T-SQL 语句。 (2) 你需要做什么,即逻辑和你的代码尝试在 T-SQL 中实现它。 (3) 期望的输出,基于上面#1 中的样本数据。 (4) 您的 SQL Server 版本 (SELECT @@version;)。
  • 很抱歉,这个问题很难集中;这个想法类似于这个问题link,但具有不需要 xmlns:xsi 的固定属性

标签: sql sql-server xml xquery root


【解决方案1】:

这是一个概念性示例。请试一试。

SQL

-- DDL and sample data population, start
DECLARE @tbl TABLE (ID INT IDENTITY PRIMARY KEY, city VARCHAR(30));
INSERT INTO @tbl (city) VALUES
('Miami'),
('Orlando');
-- DDL and sample data population, end

SELECT 'SIN_OPE' AS [@cod_1], '08' AS [@cod_2], '12' AS [@num_reg]
    , 'yyyyyyyyyyyyyyyyyyy.xsd' AS [@xsi:noNamespaceSchemaLocation]
, (
    SELECT * 
    FROM @tbl
    FOR XML PATH('r'), TYPE
)
FOR XML PATH('root'), TYPE, ELEMENTS XSINIL;

输出

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" cod_1="SIN_OPE"
      cod_2="08" num_reg="12"
      xsi:noNamespaceSchemaLocation="yyyyyyyyyyyyyyyyyyy.xsd">
    <r>
        <ID>1</ID>
        <city>Miami</city>
    </r>
    <r>
        <ID>2</ID>
        <city>Orlando</city>
    </r>
</root>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-04-04
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
相关资源
最近更新 更多