2009-07-31 3 views
0

HaloXSD에서 코드를 생성하려고하는 악몽

나는이 질문이 과거에는 여러 번 물어 왔지만 나는 그걸로 악몽을 꾼다.

복잡한 유형의 톤이있는 일련의 XSD 스키마가 있습니다. 그 중 하나는 이것이다 :

<complexType name="commandType"> 
    <sequence> 
    <choice> 
     <element name="check" type="epp:readWriteType"/> 
    </choice> 
    </sequence> 
</complexType> 

그러나, 실제로 "checkType"해야한다 "확인"....하지만이 파일을 포함에이 일을하는 것은 미친 루프의 어떤 종류를 만들 것입니다 있기 때문에, 될 수 없습니다 그래서 디자인 도구는 당신이 그렇게하도록 내버려 두지 않습니다. 그래서 readWriteType은 아마 checkType이 파생 된 클래스 일 것입니다. (나는 모른다, 나는 거짓말을 할 수 있음).

readWriteType 그러나, 다음과 같습니다

<complexType name="readWriteType"> 
    <sequence> 
    <any namespace="##other"/> 
    </sequence> 
</complexType> 

그래서 코드 생성 도구가 바로 그것으로, 또는 checkType이 readWriteType 관계가 있는지하는 어떤 단서를 가지고하지 않았습니다. 그것은 힘든 좌절입니다.

어쨌든, 여기에있는 누군가가 브레인 웨이브를 가지고 있기를 바랍니다.

오, XSD.exe는 이러한 클래스에서 작동하지 않으므로 일부 타사 도구, complexType보다 먼저 요소를 필요로하는 작업을하려고합니다. 나는 당신이이 문제를 해결하는 방법을 볼 수 없습니다

감사, P

답변

1

- 한 당신이 <any> 요소 유형을 사용으로는, 생성 된 코드는 항상 오히려 일반적인하고 object 요소를 많이 사용합니다.

check 요소를 checkType으로 만들 수없는 이유는 무엇입니까? 이것은 정말로 일을 바로 잡을 수있는 유일한 방법입니다. 유형을 명확하게 정의한 경우에는 코드 생성이이를 수행 할 수 있습니다.

마크

+0

그래, 내가 체크 유형으로 "checkType"을 사용할 수 있기를 바랬지 만 유효성을 검사하지 않습니다. file1.xsd은 내가 checkType을 의미 file1.xsd의 상단에 file2.xsd 포함 할 수 없습니다의 CommandType을 복합 타입 file2.xsd가 checkType 복합 타입이 포함되어 포함되어 있으며,이 때문에의 상단 을 file1.xsd 포함 file1.xsd에 사용 가능한 유형으로 존재하지 않습니다. – Paul