2009-08-11 3 views
1

저는 병원의 일부 측면을 설명하기 위해 XML 스키마를 만들려고합니다. 병원은 응급 서비스, 수술실, 약사 등 24 시간 서비스를 제공 할 수 있습니다. 전체 목록은 비교적 짧고 약 10 개입니다. 서비스 범위는이 서비스 중 둘 이상일 수 있습니다.XML 스키마에서 특성을 지정하는 선택적 또는 부울 요소?

제 질문은 이것을 가장 잘 표현하는 방법입니다. 나는 라인을 따라 생각하고있다 :

<coverage> 
    <emergencyServices/> 
    <operatingRoom/> 
</coverage> 

기본적으로 서비스는 선택 사항이며, 존재하는 경우 보험이 병원에서 제공된다. 나는 모든 요소를 ​​필요로,이 경우

<coverage> 
    <emergencyServices>true</emergencyServices> 
    <operatingRoom>true</operatingRoom> 
    <pharmacist>false</pharmacist> 
</coverage> 

을하지만, false 값은 범위가 제공되지 않음을 의미합니다 :

또는 내가있을 수 있었다.

아마도 다른 접근법이있을 수 있습니다.

다음과 같은 경우 가장 좋은 방법은 무엇입니까? 그리고 첫 번째 옵션을 사용하면 요소가 스키마에 있어야합니까?

답변

3

여기의 모범 사례는 실제로 소비자에게 달려 있습니다.

짧고 간단한 규칙은 마크 업는 구조이며, 콘텐츠는 데이터라는 것이다. 따라서 일반적으로 값을 포함하는 것이 가장 좋은 방법입니다.

이제 옵션에 :

  1. 별도의 유형이 지정되지 않은 요소를 갖는 것은 간단하고 명확하다; 일부 XML 관계형 맵퍼는 요소의 어떤 데이터도 관계형 테이블에 넣지 않을 수 있기 때문에 때때로 처리 시스템이이를 읽는 데 어려움을 겪을 수 있습니다. 그러나 값이 <emergencyServices>true</emergencyServices> 인 경우 관계형 테이블에 보유 할 값이 있습니다.

  2. 고정 요소 이름이있는 경우 소비자가 XML을 데이터베이스에 매핑하는 시스템을 사용하고있는 경우 서비스를 추가 할 때마다 스키마 변경이 이루어져야 함을 의미합니다.

    다른 여러 가지 방법이 있습니다. 각각

  3. enumeration과 함께 사용하고 여러 복사본을 허용합니다. 그렇다면 <coverage>emergencyServices</coverage><coverage>operatingRoom</coverage>.을 가질 수 있습니다. 목록에 더 쉽게 추가 할 수 있지만 중복을 허용합니다. 이 스키마는 소비자의 데이터베이스에 스키마 변경을 요구하지 않습니다.

  4. <coverage> 요소의 속성을 사용할 수 있습니다. 그들은 유형을 가지지 만 여전히 스키마 변경이 필요합니다. 물론 이것은 attribute vs. element 인수를 불러 일으 킵니다.

하나의 좋은 자원이 Effective XMLChapter 11입니다. 최소한 이것은 최종 결정을 내리기 전에 읽혀 져야합니다.

관련 문제