2009-04-13 5 views
0

xml에 일부 복잡한 개체의 데이터를 저장하는 시스템이 있다고 가정 해 봅니다. 이 객체들은 약한 상속 관계를 가지고 있습니다 : 아마도 4 개의 필드는 모두 공통이고, 다른 20 개는 각 객체 유형에 고유합니다 (예 : 6 ~ 8 개의 다른 유형의 객체).xml 스키마를 기반으로 페이지를 만들고 xml 레코드의 데이터를 추가합니다.

각 개체에 고유 한 데이터는 그 자체로 복잡 할 수 있습니다. 열거 형, 기타 복합 형식 및 조건부로만 사용되는 항목 등입니다. 각 유형의 객체에는이를 설명하기위한 xml 스키마가 있습니다.

이 시스템은 일련의 단계에서 각 개체에 대한 레코드를 작성하므로 부분 레코드 만 갖는 것이 일반적입니다. 각 단계로 들어가는 것은 정의되어 있지 않습니다. 사용자는 알고있는만큼 채우고 완료하여 더 많은 지식을 가진 사람이 체인을 통과 할 수 있습니다.

내가 원하는 것은 이러한 레코드를 표시하는 ASP.Net 페이지를 만드는 것입니다. 주어진 레코드 번호 (및 유형)는 해당 유형의 스키마를 양식에로드 한 다음 레코드 자체에서 양식을 채 웁니다. 레코드가 아직 양식에 포함하려는 각 필드를 나열하지 않을 수도 있고 열거 형과 같은 유형의 데이터를 암시 적으로 포함하지 않기 때문에 레코드 자체만으로는 페이지를 작성할 수 없을 것이라고 생각합니다.

이 작업을 수행하는 우아한 방법은 무엇입니까? 이 작업을 수행하는 간단한 방법에 대해 분명하지 않은 부분이있을 수 있지만 Xslt는이를 자르지 않을 것입니다.

이것은 최대 this question까지의 후속 조치이며 지금은 순전히 가상입니다. 여기에 대한 답변을 바탕으로 완전히 다른 방식으로 갈 수 있습니다.

+0

왜 "XSLT가 잘리지 않을 것"이라고 말합니까? XSLT는 XML 데이터와 XML 스키마 메타 데이터를 HTML로 변환하기위한 완벽한 도구입니다. –

+0

좋습니다. 훌륭하고 완벽하지 않습니다. 거기서 조금 벗어났습니다. –

답변

1

"Xslt가 잘리지 않을 것"이라고 말하면 Xslt가 어떤 접근 방식을 사용하고 있는지 궁금합니다.

한 가지 방법은 양식의 인스턴스 데이터를 어떻게 든 변환하는 것입니다. (실제로 작동하는 방법이 확실치 않아 XSLT가 작동하지 않는다고 말하는 이유 일 수 있습니다.)

또 다른 방법은 Xslt를 사용하여 Xslt를 사용하여 사용자 정의 된 일회용 스키마를 생성하는 것입니다. 양식 데이터의 현재 상태 그런 다음이 스키마를 사용하여 양식을 작성하십시오. 예를 들어, 변환 된 스키마는 아직 표시 할 준비가되지 않은 필드에 대한 정의를 제외합니다. 이것은 내가 UPDATE

()는 의견에 응답 :-) 자원 봉사하고있어 것을하지 나 (아주 가능한 소리 : 내가 말하고 asp.net 충분히 잘 모르는 진실을 말해 그 캐싱한다면 귀하의 필요에 부응하십시오. 나는 당신이 이 아니라고 생각했었다.은 캐싱을 원한다.

나는 무엇을 의미하는지 명확히하려고 노력합니다. 귀하의 설명에서 듣고 있던 것은 기록의 현재 상태가 양식의 구조에 영향을 미칠 수 있다는 것입니다. 예를 들어, 필드 A의 유효한 값은 필드 X, Y 및 Z의 값에 의해 제한 될 수 있으며, 그 중 일부는 실제로는 알 수없고 알 수 없습니다. 이러한 모호성으로 인해 하나의 통일 된 구조를 사용하여 양식을 표현하기 어려울 수 있습니다.

제 생각에는 아마도 당신이 자신을 불변의 스키마로 제한 할 필요가 없다는 것이 었습니다. 데이터의 현재 상태가 수정 된 스키마 (예 : 필드 A에 대해 허용 된 열거 형 값 또는 현재 필드 B에 대해 허용 된 조합 선택 항목을 반영하는)에 의해 더 잘 표현되는 경우 스키마를 변환하는 것이 좋습니다 양식을 만들기 전에 트릭을 할 수 있습니다. 캐싱에 대한 의견은 데이터와 스키마가 변경되어 새로운 캐싱이 필요할 때 캐싱으로 인해 오래된 양식 정의가 제공 될 수 있다는 우려가 있습니다.아마도 사용자 정의 된 스키마의 현재 상태를 기반으로 네임 스페이스 URL을 변경하여이 문제를 피할 수 있습니다.

이 정보가 도움이되기를 바랍니다.

+0

아직 데이터가없는 경우에도 항상 모든 입력란을 표시해야합니다. 레코드를 변환하면 해당 필드가 제외되고 나중에 스키마를 변환하고 레코드 데이터를 추가하는 것은 나중에 빌드하는 것보다 훨씬 복잡 할 수 있습니다. –

+0

또는 첫 번째 요청시 스키마에서 템플릿을 작성한 다음 ASP.Net에서 캐시하도록 제안 하시겠습니까? 흠 ... 거기에 뭔가가있을 수 있습니다. –

관련 문제