[xml] Delphi XML 데이터 바인딩 마법사를 사용할 때 필요한 태그가 없습니다.

나는 XML Data Binding Wizardin을 사용하고 있습니다 Delphi XE2. 스키마에는 다음 유형의 필수 태그가 있습니다.

<xs:element name="MyReport" type="MyReportType" />
<xs:complexType name="MyReportType">
  <xs:all>
    <xs:element name="Header" type="HeaderType" />
    <xs:element name="Values" type="ValuesType" />
    <xs:element name="Events" type="EventsType" />
  </xs:all>
</xs:complexType>

문제는 예를 들어 Values-group에 요소를 추가하지 않으면 <Values>-tag 가 없으며 XML 파일이 XSD. 인터페이스가 Values-tag 를 “추가”하는 방법을 제공하는 경우 이는 문제가되지 않을 것입니다 .

이것을 처리하는 표준 방법이 있습니까, 아니면 생성 된 코드를 잘못 사용하고 있습니까?

간단히 말하면 이, 어떤 로부터의 코드를 사용하여, 해결 방법 또는 기타, 방법은 Data Binding Wizard다음을 생산하기 위해, XML주어진 (자식 노드가없는 경우 위의 스키마를 사용하여 검증하기 위해 필요한 것입니다) HeaderType, ValuesType그리고 EventsType복합 타입의 데이터입니다 :

<MyReport>
  <Header />
  <Values />
  <Events />
</MyReport> 

( <xs:sequence>최종 파일에 올바른 순서를 적용하지 않아 생성 된 코드와 같은 다른 유사한 문제가 있다는 것을 알고 XML있지만 적어도 해당 문제에 대해서는 단순히 올바른 순서로 자식을 삽입하는 방법이 있습니다. 여전히 생각합니다. Embarcadero이러한 기능을 더 많이 고려하는 완전한 인터페이스를 제공 한다면 좋을 것입니다.)



답변

잘 모르겠지만 찾고있는 내용은 다음과 같습니다. use = “optional”

<xs:element name="MyReport" type="MyReportType" />
<xs:complexType name="MyReportType">
  <xs:all>
    <xs:element name="Header" type="HeaderType" use="optional" />
    <xs:element name="Values" type="ValuesType" use="optional" />
    <xs:element name="Events" type="EventsType" use="optional" />
  </xs:all>
</xs:complexType>

괜찮은지 말해봐.


답변