我正在尝试在 TSQL 中修改预定义的 xml(更具体地说是 xsd)。我想将枚举限制插入 xsd 元素之一。
任务是根据一个查询示例来填充 xsd 限制:
create table #list(value nvarchar(100))
insert into #list values('item 1')
insert into #list values('item 2')
insert into #list values('item 3')
insert into #list values('item 4')
insert into #list values('item 5')
insert into #list values('item 6')
declare @enumeration as xml
;with xmlnamespaces('http://www.w3.org/2001/XMLSchema' as xs)
select @enumeration = (
select value as '@value'
from #list for xml path('xs:enumeration')
)
declare @schema xml
set @schema =
'<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="test">
<xs:element name="test" msdata:IsDataSet="true" msdata:MainDataTable="Example" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Example">
<xs:complexType>
<xs:sequence>
<xs:element name="myList" minOccurs="1" nillable="false">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>'
set @schema.modify
('insert sql:variable("@enumeration")
into (//xs:element[@name=''myList'']/xs:simpleType/xs:restriction)[1]')
select @schema
问题是代码输出了不必要的 xmlns 属性
<xs:enumeration xmlns:xs="http://www.w3.org/2001/XMLSchema" value="item 1" />
任何人都可以帮忙吗?