별표 — box-drawing 표
법제처 XML의 별표는 표가 아니라 텍스트 그림이다. AKN에서는
rowspan/colspan을 가진 실제 표가 된다.
Before — 법제처 XML의 <별표내용>
┌────────────────────┬──────┬───────────────┐
│위반행위 │근거 법조문│과태료 │
│ │ ├────┬────┬─────┤
│ │ │1차 위반│2차 위반│3차 이상│
│ │ │ │ │위반 │
├────────────────────┼──────┼────┼────┼─────┤
│가. 법 제34조를 위반하여 근로복지공단 │법 제129조 │100만원 │150만원 │200만원│
│또는 이와 비슷한 명칭을 사용한 경우 │제2항제1호 │ │ │ │
└────────────────────┴──────┴────┴────┴─────┘
실제 원문은 한글 글리프의 표시 폭 때문에 공백이 더 많다. kr2akn은
codepoint 길이와 display width가 어긋나면 display-width 좌표로 전환해서
경계를 다시 맞춘다.
After — AKN
<attachment GUID="att_byulpyo_16">
<doc name="별표 12">
<mainBody eId="mainBody_byulpyo_16">
<heading>과태료의 부과기준(제128조 관련)</heading>
<table eId="byulpyo_16__table_1">
<tr eId="byulpyo_16__table_1__tr_1">
<th eId="...__tr_1__th_1" rowspan="2"><p>위반행위</p></th>
<th eId="...__tr_1__th_2" rowspan="2"><p>근거 법조문</p></th>
<th eId="...__tr_1__th_3" colspan="3"><p>과태료</p></th>
</tr>
<tr eId="byulpyo_16__table_1__tr_2">
<td eId="...__tr_2__td_1"><p>1차 위반</p></td>
<td eId="...__tr_2__td_2"><p>2차 위반</p></td>
<td eId="...__tr_2__td_3"><p>3차 이상 위반</p></td>
</tr>
<tr eId="byulpyo_16__table_1__tr_3">
<td eId="...__tr_3__td_1"><p>가. 법 제34조를 위반하여 근로복지공단 또는 이와 비슷한 명칭을 사용한 경우</p></td>
<td eId="...__tr_3__td_2"><p>법 제129조 제2항제1호</p></td>
<td eId="...__tr_3__td_3"><p>100만원</p></td>
<td eId="...__tr_3__td_4"><p>150만원</p></td>
<td eId="...__tr_3__td_5"><p>200만원</p></td>
</tr>
</table>
</mainBody>
</doc>
</attachment>
읽는 법
- 표의 첫 줄은
<th>, 데이터 줄은<td>가 된다. rowspan/colspan은 box-drawing의 끊긴 선에서 복원한다. 세로선이 없으면 colspan, 가로선이 없으면 rowspan이다.eId는table → tr → td경로를 따라 붙는다. 그래서 “별표 12의 3행 4열”을 문자열 검색 없이 찾을 수 있다.- 표의 셀 텍스트는
<p>로 들어간다. 줄바꿈으로 끊긴 셀은 이전 행에 병합한다. 별표내용원문은--preserve-source-text를 켜면kr:sourceTexts에 보존되어 roundtrip에서 정확히 복원된다.