2012-01-18 4 views
0

다중 루트 요소, 소수의 복잡하고 간단한 유형이있는 .xsd 체계가 있으며, 복합 유형은 해당 루트 요소를 참조합니다. 그 루트 요소 때문에 내가 원하는 방식으로 .xml을 생성 할 수 없습니다. 그래서 내가 루트 요소 역할을 할 요소를 추가하고 모든 다른 요소를 자식으로 추가 할 필요가 있다고 생각합니까? 아니면 잘못 되었습니까?.xsd 스키마를 리팩터링하는 도구입니까?

루트 요소 및 리팩토링 체계를 만드는 데 도움이되는 도구가 있습니까? 내가 뭘 : enter image description here

나는 아마 하나의 요소와 refs 모든 요소 양식을 다른 xsd를 만들 필요가 있다고 생각하고 있었지만 처음에는 그 안에 xsd를 형성하지만 정확히 어떻게 해야할지 모르겠다. 이것은 좋은 생각입니까?

답변

2

판게아가 말했듯이 편집에 대한 대답은 사실입니다. 그리고 그것은 다른 요소를 참조하기 때문입니다 (< xsd : element ref = "SomeElement"... />), 참조 된 요소는 전역 적으로 선언되어야합니다.

전역 요소가 필요한 다른 시나리오는 대체 그룹을 사용하는 것입니다. 제가 제안하고자하는 것은 인스턴스 XML에서 루트로 원하는 요소 만 전역으로 유지하는 방식으로 XSD를 리팩터링하는 것이 항상 가능하지 않을 수 있다는 것입니다.

문제를 해결하기 위해 원하는 방식으로 .xml을 생성 할 수없는 이유가 더 나은 방법이라고 생각할 수 있습니다. 조금이라도 설명 할 수 있다면 더 좋은 대답을 얻을 수있을 것입니다 ...

이 답변을 추가하려는 또 다른 이유는 태그 이름으로 XML을 사용한다는 것입니다. 괜찮아 보일지 모르지만 나는 그저 < XML /> 태그 이름으로 질식하는 예쁜 "큰 이름"응용 프로그램을 보았다고 말할 수 있습니다. XML은 실제로 "예약 됨"입니다. XML Spec의 this section을 살펴보십시오. 인용 부호 : "문자열"xml "로 시작하거나 ('X'| 'x') ('M'| 'm') ('L'| 'l')과 일치하는 문자열로 시작하는 이름) 이 규격과 향후 버전들에 표준화를 위해 예약되어 있습니다. "

항상 사양 좋은 게임 .... 답변

+0

답장을 보내 주셔서 감사합니다! – bunnyjesse112

1

스키마에 정의한 전역 요소는 인스턴스 문서의 잠재적 루트 요소입니다.이 동작을 원하지 않으면 xsd에 전역 요소 정의가 하나만 있는지 확인하십시오. 이 도구와는 아무 관련이 없습니다 (XML 편집기는 이것을 단순화 할 수 있지만).

+0

감사합니다! 아마도 나는 단지 하나의 요소를 가진 다른 xsd를 만들 필요가 있다고 생각하고 있었다. 그리고 refs 모든 요소는 그 안에 첫번째 xsd를 형성 할 필요가있다. 이것은 좋은 생각입니까? – bunnyjesse112

+1

@ bunnyjesse112 다른 xsd로 요소를 이동해도 여전히 전역 적으로 정의 된 경우 문제가 해결되지 않습니다 –

관련 문제