2011-12-25 3 views
2

XmlSchemaSet에 컴파일하는 동안 include를 무시하는 방법이 있습니까? 내가 컴파일되지 않는 경우컴파일하는 동안 XSD에 Include를 해제하는 방법?

var schemaSet = new XmlSchemaSet(); 
schemaSet.ValidationEventHandler += ValidationCallback; 
schemaSet.Add(targetNamespace, filepath); 
schemaSet.Compile(); 

, 즉이 (가) 포함 무시하지만 난 XmlSchemaElementElementSchemaType 속성, null가 남아하지 않습니다.

답변

2

컴파일하는 동안 왜 외부 참조를 무시할 것인지 설명 할 수 있다면 더 흥미로울 것입니다. 일반적으로 이러한 외부 참조 (포함 또는 가져 오기)는 유형, 요소, 그룹 등과 같이 실제로 참조되는 구성 요소에 대한 정의를 제공하기 때문에 필요합니다. 일반적으로 한 가지 주의점은 재정의가 될 수 없다는 것입니다 꺼지면 (즉시 실패 할 것입니다).

가장 가까운 사용자 요구 사항은 XmlReaderSettings을 통해 독자와 연결하는 사용자 정의 해결 프로그램 (XmlUrlResolver에서 연장)을 정의하는 것입니다. "해제"는 우선 GetEntity 메서드에서 null을 반환합니다.

"끄기"대신 ​​"리디렉션"이 필요한 경우 위에서 설명한 방법을 사용할 수 있습니다 (대신 null을 사용하여 원하는 스키마로 스트림을 반환 할 수 있습니다).

명심해야 할 것은 XmlSchemaSet에 포함/가져 오기가 필요하다면 꺼두고 싶은 경우 해결되지 않으면 컴파일되지 않는다는 것입니다. 컴파일되지 않으면 모든 PSVI 속성 (ElementSchemaType 중 하나임)이 채워지지 않습니다. 어떤 일이 왜 그런 일을 원하는지로 돌아 간다 고요?

+0

나는 지난 3 주간의 과정에서 깨달은 점이 무엇입니까? 나는 그것이 정말로 필요하다는 것을 깨닫는다. 내가 include와 imports를 끄기를 원했다. 왜냐하면 나는 스키마의 모든 타입을 반복 해 JSONSchema로 변환했기 때문이다. 자, 나는 그 일을 성공적으로 해냈습니다. 처음에는 스키마의 재귀 적 특성으로 인해 두통이 생기고 부작용은 여전히 ​​지속됩니다. 스키마에 대한 가능한 모든 정보를 원했고 JSONSchema에이를 작성했습니다. 이상한 요구 사항은 추측하지만 실제로 사려 깊은 운동으로 입증되었습니다. –

관련 문제