메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

Schematron을 이용하여 제약조건을 선언하고 리포팅하기

한빛미디어

|

2009-01-30

|

by HANBIT

9,186

제공 : 한빛 네트워크
저자 : Rick Jelliffe
역자 : 박주현
원문 : Using Schematron to declare and report implementation limitations

스키마는 자료의 형태를 정의하여 자료를 주고받을 때 아주 빈번하게 사용됩니다. 물론 이는 정말로 좋은 선택입니다.

하지만 이외의 여러 가지 제약조건을 선언하는 스키마들을 다음과 같이 분류할 수 있습니다. 프로파일 스키마(profile schema)는 산업이나 특정 직군에서 표준의 특정한 부분표준을 정의하는데 쓰입니다. 사용스키마(usage schema)는 기존 문서를 토대로 작성한 후, 이를 통해 새로이 작성된 문서들이 잘 작성되었는지 체크해 볼 수 있습니다. 목표스키마(implementation schema)로는 표준에 비춰봤을 때, 작성된 문서가 구조가 잘 작성되었는지, 들어갈 수 있는 값들만 들어갔 는지 검사할 수 있습니다.

그러면 문서의 표준에 대한 만족여부를 체크하기 위한 제약조건들은 어떠한 것이 있을까요? 우선 필수제약조건(necessary limitation)은 계산할 때의 소수점 정확도처럼 기준스키마에 일일이 적지 않는 것들을 명시합니다. 준수제약조건(conforming limitation)은 표준에서 필요한 값의 범위나 특정 값들을 정의할 수 있습니다. 이는 해당 요소에서 비 유효화, 제거 혹은 무시될 수 있는 값을 포함할 수 있습니다. 다음으로 비준수제약조건(non-conforming limitation)에는 입력되어서는 안 되는 값이나 여러 가지 틀린 값들을 명시하면 됩니다. 확장제약조건(extension limitation)은 표준에 만족하지만 몇몇의 확장조건 상황에서는 그렇지 않은 것을 기술합니다. 그리고 끝으로 부분실현제약조건(partial implementation limitation)은 유효, 생성되거나 곳곳에 사용되었지만 더 이상 사용되지 않는, 기능축소과정에서 쓰이지 않는 그런 부분이 포함됩니다.

Schematron은 이러한 제약조건들의 표현에 잘 들어 맞습니다.

이를 위한 간단한 방법은 Schematron의 report요소를 이용하는 것 입니다. 이것의 예제를 들어보겠습니다.

     
     A picture should have the width specified (in attribute width)
     as a number.
     
     The implementation does not support widths greater than 100.
      

위의 경우 assert요소는 필수 제약조건을 기술하며, report 요소는 제약조건에 부합하지 않을 경우 이를 알려줄 것입니다. (‘role’이 ‘limitation’이라 되어있으므로 해당 유효검증 메시지가 유저가 지정한 방법으로 기록, 전송되거나 정규화 후 처리될 것입니다.)

Schematron에는 see 라는 속성도 포함되어 있는데, 이를 통해 해당 제약조건의 원문을 링크할 수 있습니다.

또 다른 접근법으로서 간단한 여러 품목들의 모든 제약조건들을 하나의 패턴으로 처리하는 것입니다. (Schematron의 단계적 메커니즘으로 테스트를 통해 해당하는 패턴을 찾거나, 해당 문서가 여러 패턴에 대해 각각 부합하는지 여부를 한번에 테스트 할 수 있습니다)

     Limitations of the product Brid on a Brae v1.0

     
           
            This file format is not supported on this old software.
      


     Limitations of the product Bird on a Wire v3.1
     
           
           The Brid on a Wire 3.1 software does not support more than 10 verses.
           
    


    Unable to continue
    Processing will continue as best as possible
    The material that cannot be processed will be removed

위의 예제에서는 2가지 버전의 내용을 담고 있습니다. 한 버전은 더 이상 쓰이지 않는 버전이라고 출력하며, 다른 버전은 요소개수를 체크함으로써 처리할 수 있는 버전인지 추가적으로 체크를 합니다. 앞서와 같이 ‘report’요소가 ‘role’속성으로 `limitations`에 관한 것임을 명시합니다. (이 ‘role’속성의 속성 값 ‘limitations’는 사용자 마음대로 지정해도 됩니다. Schematron에서 따로 지정되어 있지 않습니다)

`diagnostic` 속성들은 여러 보조메시지들을 이용하는데, 이는 중요한 이유가 있습니다. 이렇게 여러 메시지들을 동시에 사용하면 백엔드 검증시스템으로 해당 검증정보를 문맥적으로 잘 전달 시킬 수 있습니다. ‘Flag’ 속성 또한 사용되었는데 이는 검증세션 자체에 직접 결과를 전달할 수 있습니다. (여기에서는 ‘unrecoverableError’가 사용되었는데 검증결과의 명칭을 나타낸다) 이러한 전달을 통해 검증세션에서는 검증내용을 좀 더 정확하게 파악을 할 수 있습니다.

뿐만 아니라 스키마처럼 간단하며, 명료하고, 강력하며, 개방적이고, 사람이 읽기 쉬우며, 근래의 리포팅 체계(fatal/caution/warning/note 같은)에도 잘 어울립니다.
TAG :
댓글 입력
자료실