2012-07-06 61 views
0

我正在使用SQL XML批量加載將數據直接注入數據庫。我的XML和XSD如下幾點: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> 

我要插入的 「有用」 的元素融入到同一個表,以及其他一切不同的表格。有沒有辦法使用wildchar *作爲名稱或正則表達式來將不需要的內容過濾到另一個表中?

謝謝。

回答

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> 

,然後列表明確地全部轉到「其他」表中的元素:

<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"/> 
. . .