我正在使用SQL XML批量加载将数据直接注入数据库。我的XML和xsd如下:
XML:
<?xml version="1.0"?>
<Data>
<USEFUL>
<Value>3.1</Value>
<Date>12/20/2001</Date>
</USEFUL>
<Something>
<Value>3.1</Value>
<Date>12/20/2001</Date>
</Something>
</Data>
XSD:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:simpleType name="anyElement">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Za-z]+" />
</xs:restriction>
</xsd:simpleType>
<xsd:element name="USEFUL" sql:relation="DATA" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Value" type="xsd:string" />
<xsd:element name="Date" type="xsd:date" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element type="anyElement" sql:relation="NON-DATA" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Value" type="xsd:string" />
<xsd:element name="Date" type="xsd:date" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
我想将“USEFUL”元素插入到同一个表中,将其他所有元素插入到不同的表中。有没有办法使用wildchar *作为名称或正则表达式将不需要的东西过滤到另一个表中?
谢谢。
答案 0 :(得分:1)
不,这是不可能的 - 没有办法在XSD中定义一个复杂类型,它适用于名称与指定名称不同的任何元素。您必须定义类型:
<xsd:complexType name="anyElement">
<xsd:sequence>
<xsd:element name="Value" type="xsd:string" />
<xsd:element name="Date" type="xsd:date" />
</xsd:sequence>
</xsd:complexType>
然后明确列出所有转到&#39;其他&#39;的元素。表:
<xsd:element name="Something" type="anyElement" sql:relation="NON-DATA"/>
<xsd:element name="SomethingElse" type="anyElement" sql:relation="NON-DATA"/>
<xsd:element name="YetAnotherOne" type="anyElement" sql:relation="NON-DATA"/>
. . .