xsd : 요소 이름의 패턴 일치

regex sqlbulkcopy xml xml-parsing xsd

문제

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> 

"유용한"요소를 동일한 테이블에 삽입하고 나머지는 다른 테이블에 삽입하려고합니다. 이름이나 정규 표현식에 wildchar *을 사용하여 원치 않는 항목을 다른 테이블로 필터링하는 방법이 있습니까?

고맙습니다.

인기 답변

아니요, 불가능합니다 - 지정된 유형과 다른 이름을 가진 요소에 적용되는 복합 유형을 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"/>
 . . . 


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.