2016-06-20 1 views
1

다음과 같이 XSD 파일이 있습니다. 문제는 상태에 대한 노드는 동적이며 실제 도시와 주 이름으로 구성됩니다. 이러한 요소에 대해 와일드 카드 이름을 사용할 수 있습니까?XSD 요소 이름에 와일드 카드 사용?

<?xml version="1.0"?> 
<xs:schema attributeFormDefault="unqualified" 
      elementFormDefault="qualified" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="Root"> 
<xs:complexType> 
    <xs:sequence> 
    <xs:element minOccurs="0" name="State"> 
     <xs:complexType> 
     <xs:sequence> 
      <xs:element minOccurs="0" name="City"> 
      <xs:complexType> 
       <xs:sequence> 
       <xs:element minOccurs="0" name="cafeID" type="xs:string" /> 
       <xs:element minOccurs="0" name="cafeName" type="xs:string" /> 
       <xs:element minOccurs="0" name="cafeState" type="xs:string" /> 
       <xs:element minOccurs="0" name="cafeCity" type="xs:string" /> 
       <xs:element minOccurs="0" name="cafeStreetName" type="xs:string" /> 
       <xs:element minOccurs="0" name="cafeZip" type="xs:string" /> 
       <xs:element minOccurs="0" name="cafeContact" type="xs:string" /> 
       <xs:element minOccurs="0" name="cafeEmail" type="xs:string" /> 
       <xs:element minOccurs="0" name="hasPickup" type="xs:string" /> 
       <xs:element minOccurs="0" name="hasDriveThru" type="xs:string" /> 
       </xs:sequence> 
      </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    </xs:sequence> 
</xs:complexType> 

+1

뉴욕 또는 데스 플레인 즈가 데이터에 나타나 자마자 클라이언트는 불완전한 형식의 XML을 제공하게됩니까? 재협상해라. –

답변

1

콘텐츠 모델을 제한하는

  1. 데이터 모델러의 노력을 좌절 것이기 때문에 요소 이름은 알 수없는, 개방형 도메인에서 변화시키지 말라 이러한 요소들과 이러한 요소들을 포함하는 요소들에 대해.
  2. 이 데이터의 소비자은 이러한 요소에 대한 처리기 및 변환을 작성합니다. 당신이 마크 업 언어으로 XML을 사용하고 citystate 요소 또는 속성으로 도시와 국가 이름을 마크 업하는 경우

, 당신은 훨씬 적은하는데 어려움 XSD를 정의하고 그것을 응용 프로그램을 만들 수있을 것이다.

+0

나는 이해한다. 그러나 소스 xml 파일은 클라이언트에서오고있어, 제어 할 권한이 없다. – PixelPaul

+0

요소 이름이 패턴과 일치하도록하는 방법은 [XSD 요소 이름 패턴 일치] (http://stackoverflow.com/q/25568670/290085)를 참조하십시오.하지만 이는 동적 요소 이름에 관한 것입니다. 귀하의 경우에,이 끔찍한 디자인을 되돌리거나,'xsd : any'를 통해 펀트하십시오 ([CM Sperberg-McQueen alludes to] (http://stackoverflow.com/questions/37929416/using-wildcards-in- xsd-element-names/37930632? noredirect = 1 # comment63312591_37929416), 요소 이름이 순전히 NCNAME이 될 것이라고 확신합니다. – kjhughes

+0

어떻게'xsd : any'가 이것을 고칠 수 있습니까? – PixelPaul

관련 문제