Compare commits

...

11 Commits

160 changed files with 14080 additions and 6905 deletions

View File

@@ -1,56 +1,49 @@
import os import os
import shutil import shutil
from pathlib import Path import glob
import re
# 채점자료 정답 파일만 복사하는 스크립트 # ── 설정 ────────────────────────────────────────────────────────────────
exam_round = "2604" # 회차명
exam_code = "DIW" # 코드명
# ===== 사용자 설정 ===== source_dir = rf"D:\project\HWP\HWP-Scoring\회차별채점자료\{exam_round}"
source_dir = r"D:\project\HWP\HWP-Scoring\회차별채점자료\2512" output_base = r"input"
exam_round = "2512" # 회차명
exam_code = "DIW" # 코드명
# =======================
types = ["A", "B", "C", "D", "E"]
def get_exam_type(filename: str): # ── 복사 실행 ────────────────────────────────────────────────────────────
""" for type in types:
파일명에서 확장자 앞의 마지막 알파벳을 추출 (예: 국어A.hwpx → A) pattern = os.path.join(source_dir, f"*{type}*")
""" matched = [d for d in glob.glob(pattern) if os.path.isdir(d)]
match = re.search(r"([A-Za-z])\.hwpx$", filename)
return match.group(1).upper() if match else None
if not matched:
print(f"[WARN] 폴더 없음: {pattern}")
continue
def copy_exam_files(): src_folder = matched[0]
src = Path(source_dir)
if not src.exists():
print(f"경로를 찾을 수 없습니다: {src}")
return
base_dest = Path(".") / "input" / exam_round file_pattern = os.path.join(src_folder, f"제*회 디지털정보활용능력 워드프로세서(한글2022버전) {type}형 정답.hwpx")
copied = 0 matched_files = glob.glob(file_pattern)
for path in src.rglob("*"): if not matched_files:
if path.is_file() and path.suffix.lower() == ".hwpx": print(f"[WARN] 파일 없음: {file_pattern}")
exam_type = get_exam_type(path.name) continue
if not exam_type:
continue # 마지막 문자가 알파벳이 아니면 건너뜀
dest_dir = base_dest / exam_type / exam_code src_path = matched_files[0]
dest_dir.mkdir(parents=True, exist_ok=True)
dest_path = dest_dir / path.name
# 같은 이름의 파일이 있을 경우 숫자 붙이기 # 원본 확장자 추출 후 새 파일명 생성: DIW_2602A.hwpx
counter = 1 src_ext = os.path.splitext(src_path)[1]
while dest_path.exists(): new_filename = f"{exam_code}_{exam_round}{type}{src_ext}"
dest_path = dest_dir / f"{path.stem}_{counter}{path.suffix}"
counter += 1
shutil.copy2(path, dest_path) dst_folder = os.path.join(output_base, exam_round, type, exam_code)
print(f"복사 완료: {path}{dest_path}") os.makedirs(dst_folder, exist_ok=True)
copied += 1
print(f"\n{copied}개 파일 복사 완료.") dst_path = os.path.join(dst_folder, new_filename)
shutil.copy2(src_path, dst_path)
print(f"[OK] {type}형 복사 완료 → {dst_path}")
# ── TEST 폴더 생성 ────────────────────────────────────────────────────────
test_folder = os.path.join(output_base, exam_round, type, "TEST")
os.makedirs(test_folder, exist_ok=True)
if __name__ == "__main__": print("\n전체 처리 완료.")
copy_exam_files()

View File

@@ -1,4 +1,6 @@
# 분류되지 않은 답안파일 원본 폴더에서 복사할 때 사용 # 분류되지 않은 답안파일 원본 폴더에서 복사할 때 사용
# DIW 폴더가 있는 경우, 부모 디렉토리 이름에 따라 A, B, C, D, E 폴더로 복사
# 예시: D:\project\data\제2601회 정기\제2601회 정기\과목별답안파일\1교시\DIW → .\input\2601\A\DIW
import os import os
import shutil import shutil
@@ -41,10 +43,10 @@ def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, t
print(f"Skipping {dir_name} under {parent_dir}, as it doesn't match '2교시' or '3교시'.") print(f"Skipping {dir_name} under {parent_dir}, as it doesn't match '2교시' or '3교시'.")
# 사용법 # 사용법
exam_round = "2512_2" exam_round = "2604_5"
# exam_round = "2510_4" # exam_round = "2510_4"
# source_directory = r"D:\project\data\제2510회 수시2(제주)\답안파일\제2510회 수시2 제주지부_답안파일" # source_directory = r"D:\project\data\제2510회 수시2(제주)\답안파일\제2510회 수시2 제주지부_답안파일"
source_directory = r"D:\project\HWP\HWP-Scoring\회차별채점자료\2510" source_directory = r"D:\project\data\제2604회 수시5(읍내)\답안파일\2604회 수시5_읍내정보통신학교"
target_directory_a = f".\\input\\{exam_round}\\A" # '1교시'의 타겟 경로 target_directory_a = f".\\input\\{exam_round}\\A" # '1교시'의 타겟 경로

View File

@@ -1,4 +1,6 @@
# 분류된 "과목별" 폴더에서 시험 파일을 복사하는 스크립트 # 분류된 "과목별" 폴더에서 시험 파일을 복사하는 스크립트
# - 시험 회차와 과목별 폴더 구조에 맞게 파일을 복사하여 "input/회차/유형/과목" 경로로 정리
# - 예시: "D:\project\data\제2622회 특별\과목별답안파일 (2)\DIW\A형" 폴더 안의 파일들을 "input/2622/A/DIW"로 복사
import os import os
import shutil import shutil
@@ -45,10 +47,10 @@ def copy_exam_files(exam_round, exam_codes, source_dir):
os.makedirs(target_path, exist_ok=True) os.makedirs(target_path, exist_ok=True)
# ✅ TEST 폴더 생성: input/회차/유형/TEST # ✅ TEST 폴더 생성: input/회차/유형/TEST
# test_folder = os.path.join("output", exam_round, exam_type, "TEST") test_folder = os.path.join("output", exam_round, exam_type, "TEST")
# if test_folder not in created_test_folders: if test_folder not in created_test_folders:
# os.makedirs(test_folder, exist_ok=True) os.makedirs(test_folder, exist_ok=True)
# created_test_folders.add(test_folder) created_test_folders.add(test_folder)
print(f"\n🔄 복사 시작: {exam_code} - 유형: {exam_type} (폴더명: {real_folder})") print(f"\n🔄 복사 시작: {exam_code} - 유형: {exam_type} (폴더명: {real_folder})")
print(f"📂 원본 경로: {source_folder}") print(f"📂 원본 경로: {source_folder}")
@@ -76,8 +78,8 @@ def copy_exam_files(exam_round, exam_codes, source_dir):
# 사용 예시 # 사용 예시
if __name__ == "__main__": if __name__ == "__main__":
# [source_dir경로\DIW] 디렉토리 안에 A형, B형... 폴더가 존재해야 함 # [source_dir경로\DIW] 디렉토리 안에 A형, B형... 폴더가 존재해야 함
exam_round = "2512" exam_round = "2604"
exam_codes = ["DIW"] exam_codes = ["DIW"]
source_dir = r"D:\project\data\제2512회 정기_DIAT\답안파일" source_dir = r"D:\project\data\제2604회 정기\제2604회 정기\답안파일"
copy_exam_files(exam_round, exam_codes, source_dir) copy_exam_files(exam_round, exam_codes, source_dir)

View File

@@ -166,7 +166,7 @@ if __name__ == "__main__":
setup_logging() setup_logging()
exam_rounds = [ exam_rounds = [
"2512", "2604",
] ]
# 변환할 폴더 경로 설정 # 변환할 폴더 경로 설정
@@ -178,10 +178,9 @@ if __name__ == "__main__":
(f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\C\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\C\\DIW"), (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\C\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\C\\DIW"),
(f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\D\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\D\\DIW"), (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\D\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\D\\DIW"),
(f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\E\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\E\\DIW"), (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\E\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\E\\DIW"),
]
# folders = [ # (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\D\\TEST",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\D\\TEST"),
# (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\C\\TEST",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\C\\TEST")] ]
# 변환 실행 # 변환 실행
for input, output in folders: for input, output in folders:

View File

@@ -1,101 +0,0 @@
# 2503회 추가 문제 처리방법
## 체크 할 변경 문항
* 문제1
* 쪽 번호 매기기 (A,B,C 순으로) (28번)
* 가운데 아래 (29번)
* ***문제1, 2 모두적용*** 채점기준 변동으로 인해
기존 1페이지(SECTION[1]태그) 기준 제외
> ~~//SECTION[1]~~//PAGENUM/@Pos
## 추가 문항
* 문제1
* 문단 첫글자 장식
* 8번 : 모양 (2줄)
* 줄 간격 160%일때 높이, 너비 2600
줄 간격 180%일때 높이, 너비 2800
그 사이의 값 일 경우 정답처리
```xpath
boolean(//RECTANGLE[.//CHAR[text()='지']][.//SIZE[(@Height >= 2600 and @Height <= 2800) and (@Width >= 2600 and @Width <= 2800)]])
```
* 9번 : 글씨체 (궁서체)
* 기존 글씨체 찾는 xpath구문과 동일
```xpath
//FONTFACE[@Lang="Hangul"]/FONT[@Id=//CHARSHAPE[@Id=//TEXT[CHAR[text()='지']]/@CharShape]/FONTID/@Hangul]/@Name
```
* 10번 : 색상(RGB:105,155,55)
* '지'를 포함하는 RECTANGLE요소의 자손 WINDOWBRUSH태그의 @FaceColor속성
```xpath
//RECTANGLE[.//CHAR[text()='지']]//WINDOWBRUSH/@FaceColor
```
* 11번 : 본문과의 간격 : 3.0mm
* '지'를 포함하는 RECTANGLE요소의 자손 OUTSIDEMARGIN태그의 @Right속성
* ***한글문서에서 본문과의 간격 항목을 변경하면 @Right속성만 변함***
```xpath
//RECTANGLE[.//CHAR[text()='지']]//OUTSIDEMARGIN/@Right
```
* 문제 1의 줄간격 180% 설정 (30번)
* 1페이지에 속한 모든 문단의 줄간격이 180이 아닌것이 하나도 없을 경우
```xpath
not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!='180'])
```
* 문제2
* 각주 번호모양 (28번)
* 1,2,3 : Digit
* ①,②,③ : CircledDigit
* I,II,III : RomanCapital
* i,ii,iii : RomanSmall
* 항목이 많아 채점 시 파악
```xpath
//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type
```
* 영단어 Hybrid (29번)
* 문서 전체 CHAR태그 내 Hybrid 단어가 들어가 있으면 정답
* "영단어 미입력, 대소문자/오타 시 전체 감점" 처리방법
* ***오타 체크 시 Hybrid (해당 문항의 영단어)를 제외 필요***
```xpath
boolean(//CHAR[contains(text(),'Hybrid')])
```
* 블록 계산식 (44번)
* 표 **마지막 행/열** 과 **마지막-1 행/열**의 자손 FIELDBEGIN태그의 @Command속성 확인
* @Command속성이 '=SUM'으로 시작하고 '결과값'으로 끝나는지 확인
* 계산식을 입력하는 방법에 따라 *계산식*,*블록계산식*,*자동계산식*으로 다양하게 입력가능하고
xml 파일에도 속성값이 바뀌는 경우가 있다
```xpath
boolean(//TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=SUM') and substring(@Command, string-length(@Command) - 2) = '190'] and //TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=SUM') and substring(@Command, string-length(@Command) - 2) = '290'])
```
* **값 축** 주 눈금선 (46번)
* 차트의 값 축(보통 세로축) 눈금선 옵션이 부여되었는지 확인하는 문항인데
차트 생성하면 기본적으로 부여되어 있어서 따로 항목을 제거하지 않는 이상 정답일 듯하다
```xpath
//c:valAx/c:majorTickMark/@val
```
* 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용) (49번)
* 계산식 행의 제목(마지막 행 1열 "합계")이 차트 데이터 항목에 포함되어 있지 않으면 정답처리
* 혹여나 불필요한 '범례' 속성 제외
```xpath
not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계'])
```

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -46,65 +46,65 @@
"1": { "1": {
"1": { "1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "한국전통공예박람회", "searchValue": "한국평생교육학회학술포럼",
"value": "굴림체", "value": "궁서체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한국전통공예박람회)/① 글씨체 (굴림체)" "item": "문구 (한국평생교육학회학술포럼)/① 글씨체 (궁서체)"
}, },
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "한국전통공예박람회", "searchValue": "한국평생교육학회학술포럼",
"value": "28,61,98", "value": "48,117,196",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (한국전통공예박람회)/② 채우기 : 색상(RGB:28,61,98)" "item": "문구 (한국평생교육학회학술포럼)/② 채우기 : 색상(RGB:48,117,196)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "한국전통공예박람회", "searchValue": "한국평생교육학회학술포럼",
"value": "110", "value": "130",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (한국전통공예박람회)/③ 크기-너비 (110 mm)" "item": "문구 (한국평생교육학회학술포럼)/③ 크기-너비 (130 mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "한국전통공예박람회", "searchValue": "한국평생교육학회학술포럼",
"value": "20", "value": "20",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (한국전통공예박람회)/④ 크기-높이 (20 mm)" "item": "문구 (한국평생교육학회학술포럼)/④ 크기-높이 (20 mm)"
}, },
"5": { "5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "한국전통공예박람회", "searchValue": "한국평생교육학회학술포럼",
"value": "true", "value": "true",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한국전통공예박람회)/⑤ 위치 (글자처럼 취급)" "item": "문구 (한국평생교육학회학술포럼)/⑤ 위치 (글자처럼 취급)"
}, },
"6": { "6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "한국전통공예박람회", "searchValue": "한국평생교육학회학술포럼",
"value": "Center", "value": "Center",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한국전통공예박람회)/⑥ 정렬 (가운데 정렬)" "item": "문구 (한국평생교육학회학술포럼)/⑥ 정렬 (가운데 정렬)"
}, },
"7": { "7": {
"path": "//TEXTART[@Text='{searchValue}']", "path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "한국전통공예박람회", "searchValue": "한국평생교육학회학술포럼",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (한국전통공예박람회)/⑦ 글맵시모양 (육안확인)" "item": "문구 (한국평생교육학회학술포럼)/⑦ 글맵시모양 (육안확인)"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "", "searchValue": "",
"value": { "value": {
"Height": 2800, "Height": 2800,
"Width": 2800 "Width": 2800
@@ -116,23 +116,23 @@
}, },
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "", "searchValue": "",
"value": "궁서체", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "어/② 글씨체 (궁서체)" "item": "어/② 글씨체 (굴림)"
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "", "searchValue": "",
"value": "236,217,74", "value": "248,190,122",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "어/③ 면색 : 색상(RGB:236,217,74)" "item": "어/③ 면색 : 색상(RGB:248,190,122)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "", "searchValue": "",
"value": "3.0", "value": "3.0",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
@@ -141,31 +141,31 @@
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "다양한 분야의 장인과 예술가들이 참여", "searchValue": "평생교육사 양성 교육과정 현황과 개선 방안 탐색",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (다양한 분야의 장인과 예술가들이 참여)/① BOLD" "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/① BOLD"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "다양한 분야의 장인과 예술가들이 참여", "searchValue": "평생교육사 양성 교육과정 현황과 개선 방안 탐색",
"value": "UNDERLINE", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (다양한 분야의 장인과 예술가들이 참여)/② UNDERLINE" "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/② UNDERLINE"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "", "char1": "",
"char2": "", "char2": "",
"char3": "※", "char3": "※",
"value": 3, "value": 3,
"points": 3, "points": 3,
"category": "SpecialChar", "category": "SpecialChar",
"item": "① , ② , ③ ※" "item": "① , ② , ③ ※"
}, },
"15": { "15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
@@ -173,7 +173,7 @@
"value": "궁서", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 ( 행사안내 )/① 글씨체 (궁서)" "item": "문구 ( 행사안내 )/① 글씨체 (궁서)"
}, },
"16": { "16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
@@ -181,25 +181,25 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Align", "category": "Align",
"item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)" "item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)"
}, },
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "한국 전통공예 박람회 홈페이지 (http://www.ihd.or.kr)", "searchValue": "한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조",
"value": "ITALIC", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (한국 전통공예 박람회 홈페이지 (http://www.ihd.or.kr))/① ITALIC" "item": "문구 (한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조)/① ITALIC"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "한국 전통공예 박람회 홈페이지 (http://www.ihd.or.kr)", "searchValue": "한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조",
"value": "UNDERLINE", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (한국 전통공예 박람회 홈페이지 (http://www.ihd.or.kr))/② UNDERLINE" "item": "문구 (한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조)/② UNDERLINE"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
@@ -215,52 +215,52 @@
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 12. 20.", "searchValue": "2026. 01. 24.",
"value": "1400", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/① 크기 (1400)", "item": "문구 (2026. 01. 24.)/① 크기 (1300)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 12. 20.", "searchValue": "2026. 01. 24.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/② 정렬 (가운데 정렬)" "item": "문구 (2026. 01. 24.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "한국 전통공예 협의회", "searchValue": "한국평생교육학회",
"value": "굴림", "value": "견고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (한국 전통공예 협의회)/① 글씨체 (굴림)" "item": "문구 (한국평생교육학회)/① 글씨체 (견고딕)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "한국 전통공예 협의회", "searchValue": "한국평생교육학회",
"value": "2600", "value": "2500",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한국 전통공예 협의회)/② 크기 (2600)" "item": "문구 (한국평생교육학회)/② 크기 (2500)"
}, },
"24": { "24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "한국 전통공예 협의회", "searchValue": "한국평생교육학회",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한국 전통공예 협의회)/③ 정렬 (가운데 정렬)" "item": "문구 (한국평생교육학회)/③ 정렬 (가운데 정렬)"
}, },
"25": { "25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT", "searchValue": "DIAT",
"value": "궁서", "value": "굴림체",
"points": 1, "points": 1,
"category": "Header.FontName", "category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (궁서)" "item": "문구 (DIAT)/① 글꼴 (굴림체)"
}, },
"26": { "26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
@@ -283,7 +283,7 @@
"value": "LatinCapital", "value": "LatinCapital",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기", "item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": { "desc1": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
"1,2,3": "Digit", "1,2,3": "Digit",
@@ -311,7 +311,7 @@
"value": "BottomRight", "value": "BottomRight",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "가운데 아래", "item": "오른쪽 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여", "desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": { "desc2": {
"가운데 아래": "BottomCenter", "가운데 아래": "BottomCenter",
@@ -331,7 +331,7 @@
"31": { "31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "200", "value": "200",
"first_word": "", "first_word": "",
"points": 2, "points": 2,
"category": "LineSpacing", "category": "LineSpacing",
"item": "문제 1 줄간격 200% 설정", "item": "문제 1 줄간격 200% 설정",
@@ -370,14 +370,14 @@
"value": "65", "value": "65",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (한국 전통공예)/① 크기-너비 (65 mm)" "item": "문구 (평생교육시대)/① 크기-너비 (65 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12", "value": "12",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (한국 전통공예)/② 크기-높이 (12 mm)" "item": "문구 (평생교육시대)/② 크기-높이 (12 mm)"
}, },
"6": { "6": {
"path": "//RECTANGLE//LINESHAPE", "path": "//RECTANGLE//LINESHAPE",
@@ -387,51 +387,51 @@
}, },
"points": 2, "points": 2,
"category": "Rectangle.LineShape", "category": "Rectangle.LineShape",
"item": "문구 (한국 전통공예)/③ 테두리 : 이중 실선(1.00mm)", "item": "문구 (평생교육시대)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력" "desc": "1mm = 283pt value['Width']에 pt값 입력"
}, },
"7": { "7": {
"path": "//RECTANGLE/@Ratio", "path": "//RECTANGLE/@Ratio",
"value": "50", "value": "20",
"points": 2, "points": 2,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (한국 전통공예)/④ 글상자 모서리 (반원)", "item": "문구 (평생교육시대)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20" "desc": "모서리 비율 반원:50 / 둥근모양:20"
}, },
"8": { "8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "202,86,167", "value": "224,122,146",
"points": 2, "points": 2,
"category": "Rectangle.Color", "category": "Rectangle.Color",
"item": "문구 (한국 전통공예)/⑤ 채우기 : 색상(RGB:202,86,167)" "item": "문구 (평생교육시대)/⑤ 채우기 : 색상(RGB:224,122,146)"
}, },
"9": { "9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true", "value": "true",
"points": 1, "points": 1,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (한국 전통공예)/⑥ 글상자 위치 (글자처럼 취급)" "item": "문구 (평생교육시대)/⑥ 글상자 위치 (글자처럼 취급)"
}, },
"10": { "10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align", "path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (한국 전통공예)/⑦ 글상자 정렬 (가운데 정렬)" "item": "문구 (평생교육시대)/⑦ 글상자 정렬 (가운데 정렬)"
}, },
"11": { "11": {
"path": ".//RECTANGLE//TEXT/@CharShape", "path": ".//RECTANGLE//TEXT/@CharShape",
"value": "견고딕", "value": "휴먼옛체",
"points": 1, "points": 1,
"category": "Rectangle.FontName", "category": "Rectangle.FontName",
"item": "문구 (한국 전통공예)/⑧ 글씨체 (견고딕)" "item": "문구 (평생교육시대)/⑧ 글씨체 (휴먼옛체)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height", "path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "2000", "value": "2000",
"points": 1, "points": 1,
"category": "Rectangle.FontSize", "category": "Rectangle.FontSize",
"item": "문구 (한국 전통공예)/⑨ 글씨크기 (2000)", "item": "문구 (평생교육시대)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"13": { "13": {
@@ -439,14 +439,14 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (한국 전통공예)/⑩ 정렬 (가운데 정렬)" "item": "문구 (평생교육시대)/⑩ 정렬 (가운데 정렬)"
}, },
"14": { "14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']", "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "① 파일명 \"그림C.jpg\" 삽입", "item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)" "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
}, },
"15": { "15": {
@@ -479,81 +479,81 @@
}, },
"19": { "19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 전통공예", "searchValue": "1. 평생교육이란?",
"value": "굴림", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구① (1. 전통공예)/① 글씨체 (굴림)" "item": "문구① (1. 평생교육이란?)/① 글씨체 (굴림)"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 전통공예", "searchValue": "1. 평생교육이란?",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구① (1. 전통공예)/② 크기 (1200)" "item": "문구① (1. 평생교육이란?)/② 크기 (1200)"
}, },
"21": { "21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 전통공예", "searchValue": "1. 평생교육이란?",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구① (1. 전통공예)/③ 진하게" "item": "문구① (1. 평생교육이란?)/③ 진하게"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 전통 공예 산업", "searchValue": "2. 평생교육사의 개념",
"value": "굴림", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구② (2. 전통 공예 산업)/① 글씨체 (굴림)" "item": "문구② (2. 평생교육사의 개념)/① 글씨체 (굴림)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 전통 공예 산업", "searchValue": "2. 평생교육사의 개념",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구② (2. 전통 공예 산업)/② 크기 (1200)" "item": "문구② (2. 평생교육사의 개념)/② 크기 (1200)"
}, },
"24": { "24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 전통 공예 산업", "searchValue": "2. 평생교육사의 개념",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구② (2. 전통 공예 산업)/③ 진하게" "item": "문구② (2. 평생교육사의 개념)/③ 진하게"
}, },
"25": { "25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "업사이클링", "option": "유네스코",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (업사이클링)/① 각주 설정 및 문구 입력" "item": "문구 (유네스코)/① 각주 설정 및 문구 입력"
}, },
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "이미 쓸모없거나 버려지는 자원을 재활용해 새로운 가치를 부여하는 것을 의미함", "searchValue": "교육, 과학, 문화의 보급 및 교류를 통하여 국가 간의 협력 증진을 목적으로 설립된 국제연합전문기구",
"value": "중고딕", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (업사이클링)/② 글씨체 (중고딕)" "item": "문구 (유네스코)/② 글씨체 (궁서)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "이미 쓸모없거나 버려지는 자원을 재활용해 새로운 가치를 부여하는 것을 의미함", "searchValue": "교육, 과학, 문화의 보급 및 교류를 통하여 국가 간의 협력 증진을 목적으로 설립된 국제연합전문기구",
"value": "900", "value": "900",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (업사이클링)/③ 크기 (9pt)" "item": "문구 (유네스코)/③ 크기 (9pt)"
}, },
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "이미 쓸모없거나 버려지는 자원을 재활용해 새로운 가치를 부여하는 것을 의미함", "searchValue": "교육, 과학, 문화의 보급 및 교류를 통하여 국가 간의 협력 증진을 목적으로 설립된 국제연합전문기구",
"value": "CircledIdeograph", "value": "UserChar",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
@@ -579,81 +579,81 @@
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Upcycling')])", "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Upcycling", "ignoreWord": "Development",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Upcycling/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Development/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [ "word": [
["차원", "次元"], ["평생", "平生"],
["사례", "事例"], ["교육", "敎育"],
["주목", "注目"], ["신념", "信念"],
["소비", "消費"], ["현장", "現場"],
["명장", "名匠"] ["자격", "資格"]
], ],
"value": 10, "value": 10,
"points": 10, "points": 10,
"category": "Hanja", "category": "Hanja",
"item": "① 차원(次元), ② 사례(事例), ③ 주목(注目), ④ 소비(消費), ⑤ 명장(名匠)" "item": "① 평생(平生), ② 교육(敎育), ③ 신념(信念), ④ 현장(現場), ⑤ 자격(資格)"
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'국인관광')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'하는사람')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (...활성화되면서 관광객과 외국인 일반...)>'관광객과 / 외국인' 순서바꿈" "item": "문구 (…어느 하나에 사람에게 해당하는 평생교육사의…)>'사람에게' / '해당하는' 순서바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'예품등이')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'21과목이다')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (...디지털 아트 공예품 통이...)>'' → '' 글자바꿈" "item": "문구 (…총 21종목이다…)>'' → '' 글자바꿈"
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "전통 공예 산업 성장률(단위: %)", "searchValue": "평생교육사 자격증 발급(단위: )",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (전통 공예 산업 성장률(단위: %))/① 글씨체 (돋움)" "item": "제목 문구 (평생교육사 자격증 발급(단위: ))/① 글씨체 (돋움)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "전통 공예 산업 성장률(단위: %)", "searchValue": "평생교육사 자격증 발급(단위: )",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통 공예 산업 성장률(단위: %))/② 크기 (1200)" "item": "제목 문구 (평생교육사 자격증 발급(단위: ))/② 크기 (1200)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "전통 공예 산업 성장률(단위: %)", "searchValue": "평생교육사 자격증 발급(단위: )",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (전통 공예 산업 성장률(단위: %))/③ 진하게" "item": "제목 문구 (평생교육사 자격증 발급(단위: ))/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "전통 공예 산업 성장률(단위: %)", "searchValue": "평생교육사 자격증 발급(단위: )",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통 공예 산업 성장률(단위: %))/④ 정렬 (가운데 정렬)" "item": "제목 문구 (평생교육사 자격증 발급(단위: ))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "138,194,217", "value": "233,174,43",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:138,194,217)" "item": "위쪽 제목 셀/① 색상(RGB:233,174,43)"
}, },
"38": { "38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -714,11 +714,11 @@
}, },
"45": { "45": {
"chart_xpath": "", "chart_xpath": "",
"chart_type": "표식만 있는 분산형", "chart_type": "묶은 세로 막대형",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "ChartType", "category": "ChartType",
"item": "① 종류 (표식만 있는 분산형)", "item": "① 종류 (묶은 세로 막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
}, },
"46": { "46": {
@@ -753,28 +753,28 @@
}, },
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "전통 공예 산업 성장률(단위: %)", "searchValue": "평생교육사 자격증 발급",
"value": "굴림", "value": "바탕체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통 공예 산업 성장률(단위: %))/① 글씨체 (굴림)" "item": "제목 문구 (평생교육사 자격증 발급)/① 글씨체 (바탕체)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "전통 공예 산업 성장률(단위: %)", "searchValue": "평생교육사 자격증 발급",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통 공예 산업 성장률(단위: %))/② 크기 (1300)" "item": "제목 문구 (평생교육사 자격증 발급)/② 크기 (1300)"
}, },
"52": { "52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b", "option": "b",
"searchValue": "전통 공예 산업 성장률(단위: %)", "searchValue": "평생교육사 자격증 발급",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통 공예 산업 성장률(단위: %))/③ 기울임", "item": "제목 문구 (평생교육사 자격증 발급)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {

View File

@@ -46,65 +46,65 @@
"1": { "1": {
"1": { "1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "제18회인정시북페스티벌", "searchValue": "전국제과제빵박람회",
"value": "견고딕", "value": "견고딕",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (제18회인정시북페스티벌)/① 글씨체 (견고딕)" "item": "문구 (전국제과제빵박람회)/① 글씨체 (견고딕)"
}, },
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "제18회인정시북페스티벌", "searchValue": "전국제과제빵박람회",
"value": "104,37,245", "value": "49,95,151",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (제18회인정시북페스티벌)/② 채우기 : 색상(RGB:104,37,245)" "item": "문구 (전국제과제빵박람회)/② 채우기 : 색상(RGB:49,95,151)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "제18회인정시북페스티벌", "searchValue": "전국제과제빵박람회",
"value": "110", "value": "110",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (제18회인정시북페스티벌)/③ 크기-너비 (110 mm)" "item": "문구 (전국제과제빵박람회)/③ 크기-너비 (110 mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "제18회인정시북페스티벌", "searchValue": "전국제과제빵박람회",
"value": "20", "value": "20",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (제18회인정시북페스티벌)/④ 크기-높이 (20 mm)" "item": "문구 (전국제과제빵박람회)/④ 크기-높이 (20 mm)"
}, },
"5": { "5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "제18회인정시북페스티벌", "searchValue": "전국제과제빵박람회",
"value": "true", "value": "true",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (제18회인정시북페스티벌)/⑤ 위치 (글자처럼 취급)" "item": "문구 (전국제과제빵박람회)/⑤ 위치 (글자처럼 취급)"
}, },
"6": { "6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "제18회인정시북페스티벌", "searchValue": "전국제과제빵박람회",
"value": "Center", "value": "Center",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (제18회인정시북페스티벌)/⑥ 정렬 (가운데 정렬)" "item": "문구 (전국제과제빵박람회)/⑥ 정렬 (가운데 정렬)"
}, },
"7": { "7": {
"path": "//TEXTART[@Text='{searchValue}']", "path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "제18회인정시북페스티벌", "searchValue": "전국제과제빵박람회",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (제18회인정시북페스티벌)/⑦ 글맵시모양 (육안확인)" "item": "문구 (전국제과제빵박람회)/⑦ 글맵시모양 (육안확인)"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "", "searchValue": "",
"value": { "value": {
"Height": 2800, "Height": 2800,
"Width": 2800 "Width": 2800
@@ -116,23 +116,23 @@
}, },
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "", "searchValue": "",
"value": "굴림", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "어/② 글씨체 (굴림)" "item": "어/② 글씨체 (궁서)"
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "", "searchValue": "",
"value": "234,137,67", "value": "66,227,189",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "어/③ 면색 : 색상(RGB:234,137,67)" "item": "어/③ 면색 : 색상(RGB:66,227,189)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "", "searchValue": "",
"value": "3.0", "value": "3.0",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
@@ -141,39 +141,39 @@
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "제18회 인정시 북 페스티벌", "searchValue": "국내 유일의 제과제빵 전문 박람회",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (제18회 인정시 북 페스티벌)/① BOLD" "item": "문구 (국내 유일의 제과제빵 전문 박람회)/① BOLD"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "제18회 인정시 북 페스티벌", "searchValue": "국내 유일의 제과제빵 전문 박람회",
"value": "ITALIC", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (제18회 인정시 북 페스티벌)/② ITALIC" "item": "문구 (국내 유일의 제과제빵 전문 박람회)/② UNDERLINE"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "", "char1": "",
"char2": "", "char2": "",
"char3": "※", "char3": "※",
"value": 3, "value": 3,
"points": 3, "points": 3,
"category": "SpecialChar", "category": "SpecialChar",
"item": "① , ② , ③ ※" "item": "① , ② , ③ ※"
}, },
"15": { "15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내", "searchValue": "행사안내",
"value": "돋움체", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 ( 행사안내 )/① 글씨체 (돋움체)" "item": "문구 ( 행사안내 )/① 글씨체 (굴림)"
}, },
"16": { "16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
@@ -181,86 +181,86 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Align", "category": "Align",
"item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)" "item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)"
}, },
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "인정시립대학교 야외무대", "searchValue": "홈페이지(http://www.ihd.or.kr) 게시판 또는 전화(02-123-4567) 접수",
"value": "ITALIC", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (인정시립대학교 야외무대)/① ITALIC" "item": "문구 (홈페이지(http://www.ihd.or.kr) 게시판 또는 전화(02-123-4567) 접수)/① BOLD"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "인정시립대학교 야외무대", "searchValue": "홈페이지(http://www.ihd.or.kr) 게시판 또는 전화(02-123-4567) 접수",
"value": "UNDERLINE", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (인정시립대학교 야외무대)/② UNDERLINE" "item": "문구 (홈페이지(http://www.ihd.or.kr) 게시판 또는 전화(02-123-4567) 접수)/② ITALIC"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "기타사항", "searchValue": "기타사항",
"value": { "value": {
"Left": 15, "Left": 12,
"Indent": 12 "Indent": 10
}, },
"points": 2, "points": 2,
"category": "ParaShape", "category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15), 내어쓰기 (12)", "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (12), 내어쓰기 (10)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 11. 22.", "searchValue": "2026. 01. 24.",
"value": "1400", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 11. 22.)/① 크기 (1400)", "item": "문구 (2026. 01. 24.)/① 크기 (1300)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 11. 22.", "searchValue": "2026. 01. 24.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 11. 22.)/② 정렬 (가운데 정렬)" "item": "문구 (2026. 01. 24.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "인정시립대학교 총무팀", "searchValue": "대한제과제빵협회",
"value": "중고딕", "value": "궁서체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (인정시립대학교 총무팀)/① 글씨체 (중고딕)" "item": "문구 (대한제과제빵협회)/① 글씨체 (궁서체)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "인정시립대학교 총무팀", "searchValue": "대한제과제빵협회",
"value": "2400", "value": "2200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (인정시립대학교 총무팀)/② 크기 (2400)" "item": "문구 (대한제과제빵협회)/② 크기 (2200)"
}, },
"24": { "24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "인정시립대학교 총무팀", "searchValue": "대한제과제빵협회",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (인정시립대학교 총무팀)/③ 정렬 (가운데 정렬)" "item": "문구 (대한제과제빵협회)/③ 정렬 (가운데 정렬)"
}, },
"25": { "25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT", "searchValue": "DIAT",
"value": "돋움", "value": "굴림",
"points": 1, "points": 1,
"category": "Header.FontName", "category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (돋움)" "item": "문구 (DIAT)/① 글꼴 (굴림)"
}, },
"26": { "26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
@@ -280,10 +280,10 @@
}, },
"28": { "28": {
"path": "//PAGENUM/@FormatType", "path": "//PAGENUM/@FormatType",
"value": "DecagonCircle", "value": "LatinCapital",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기 (갑,을,병 순으로)", "item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": { "desc1": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
"1,2,3": "Digit", "1,2,3": "Digit",
@@ -330,11 +330,11 @@
}, },
"31": { "31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "180", "value": "190",
"first_word": "", "first_word": "",
"points": 2, "points": 2,
"category": "LineSpacing", "category": "LineSpacing",
"item": "문제 1 줄간격 180% 설정", "item": "문제 1 줄간격 190% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다." "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
} }
}, },
@@ -367,17 +367,17 @@
}, },
"4": { "4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "60", "value": "50",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (베스트와 스테디)/① 크기-너비 (60 mm)" "item": "문구 (제과제빵)/① 크기-너비 (50 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12", "value": "12",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (베스트와 스테디)/② 크기-높이 (12 mm)" "item": "문구 (제과제빵)/② 크기-높이 (12 mm)"
}, },
"6": { "6": {
"path": "//RECTANGLE//LINESHAPE", "path": "//RECTANGLE//LINESHAPE",
@@ -387,7 +387,7 @@
}, },
"points": 2, "points": 2,
"category": "Rectangle.LineShape", "category": "Rectangle.LineShape",
"item": "문구 (베스트와 스테디)/③ 테두리 : 이중 실선(1.00mm)", "item": "문구 (제과제빵)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력" "desc": "1mm = 283pt value['Width']에 pt값 입력"
}, },
"7": { "7": {
@@ -395,43 +395,43 @@
"value": "20", "value": "20",
"points": 2, "points": 2,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (베스트와 스테디)/④ 글상자 모서리 (반원)", "item": "문구 (제과제빵)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20" "desc": "모서리 비율 반원:50 / 둥근모양:20"
}, },
"8": { "8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "233,106,147", "value": "202,86,167",
"points": 2, "points": 2,
"category": "Rectangle.Color", "category": "Rectangle.Color",
"item": "문구 (베스트와 스테디)/⑤ 채우기 : 색상(RGB:233,106,147)" "item": "문구 (제과제빵)/⑤ 채우기 : 색상(RGB:202,86,167)"
}, },
"9": { "9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true", "value": "true",
"points": 1, "points": 1,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (베스트와 스테디)/⑥ 글상자 위치 (글자처럼 취급)" "item": "문구 (제과제빵)/⑥ 글상자 위치 (글자처럼 취급)"
}, },
"10": { "10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align", "path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (베스트와 스테디)/⑦ 글상자 정렬 (가운데 정렬)" "item": "문구 (제과제빵)/⑦ 글상자 정렬 (가운데 정렬)"
}, },
"11": { "11": {
"path": ".//RECTANGLE//TEXT/@CharShape", "path": ".//RECTANGLE//TEXT/@CharShape",
"value": "궁서체", "value": "돋움체",
"points": 1, "points": 1,
"category": "Rectangle.FontName", "category": "Rectangle.FontName",
"item": "문구 (베스트와 스테디)/⑧ 글씨체 (궁서체)" "item": "문구 (제과제빵)/⑧ 글씨체 (돋움체)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height", "path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "1800", "value": "2000",
"points": 1, "points": 1,
"category": "Rectangle.FontSize", "category": "Rectangle.FontSize",
"item": "문구 (베스트와 스테디)/⑨ 글씨크기 (1800)", "item": "문구 (제과제빵)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"13": { "13": {
@@ -439,14 +439,14 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (베스트와 스테디)/⑩ 정렬 (가운데 정렬)" "item": "문구 (제과제빵)/⑩ 정렬 (가운데 정렬)"
}, },
"14": { "14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']", "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "① 파일명 \"그림C.jpg\" 삽입", "item": "① 파일명 \"그림B.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)" "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
}, },
"15": { "15": {
@@ -479,81 +479,81 @@
}, },
"19": { "19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 베스트셀러", "searchValue": "1. 제과제빵이란?",
"value": "굴림체", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구① (1. 베스트셀러)/① 글씨체 (굴림체)" "item": "문구① (1. 제과제빵이란?)/① 글씨체 (돋움)"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 베스트셀러", "searchValue": "1. 제과제빵이란?",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구① (1. 베스트셀러)/② 크기 (1200)" "item": "문구① (1. 제과제빵이란?)/② 크기 (1200)"
}, },
"21": { "21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 베스트셀러", "searchValue": "1. 제과제빵이란?",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구① (1. 베스트셀러)/③ 진하게" "item": "문구① (1. 제과제빵이란?)/③ 진하게"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 스테디셀러", "searchValue": "2. 설탕 공예",
"value": "굴림체", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구② (2. 스테디셀러)/① 글씨체 (굴림체)" "item": "문구② (2. 설탕 공예)/① 글씨체 (돋움)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 스테디셀러", "searchValue": "2. 설탕 공예",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구② (2. 스테디셀러)/② 크기 (1200)" "item": "문구② (2. 설탕 공예)/② 크기 (1200)"
}, },
"24": { "24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 스테디셀러", "searchValue": "2. 설탕 공예",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구② (2. 스테디셀러)/③ 진하게" "item": "문구② (2. 설탕 공예)/③ 진하게"
}, },
"25": { "25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "로빈슨 크루소", "option": "가니쉬",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (로빈슨 크루소)/① 각주 설정 및 문구 입력" "item": "문구 (가니쉬)/① 각주 설정 및 문구 입력"
}, },
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "영국의 작가 대니얼 디포의 장편소설", "searchValue": "음식의 외형을 돋보이게 하기 위해 장식 또는 곁들임으로 사용되는 식재료",
"value": "중고딕", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (로빈슨 크루소)/② 글씨체 (중고딕)" "item": "문구 (가니쉬)/② 글씨체 (굴림)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "영국의 작가 대니얼 디포의 장편소설", "searchValue": "음식의 외형을 돋보이게 하기 위해 장식 또는 곁들임으로 사용되는 식재료",
"value": "900", "value": "900",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (로빈슨 크루소)/③ 크기 (9pt)" "item": "문구 (가니쉬)/③ 크기 (9pt)"
}, },
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "영국의 작가 대니얼 디포의 장편소설", "searchValue": "음식의 외형을 돋보이게 하기 위해 장식 또는 곁들임으로 사용되는 식재료",
"value": "CircledIdeograph", "value": "RomanSmall",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
@@ -579,81 +579,81 @@
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Bookman')])", "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Bookman", "ignoreWord": "Chocolatier",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Bookman/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Chocolatier/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [ "word": [
["시초", "始初"], ["발효", "醱酵"],
["유래", "由來"], ["제품", "製品"],
["양립", "兩立"], ["장식", "裝飾"],
["수요", "需要"], ["표현", "表現"],
["독자", "讀者"] ["경향", "傾向"]
], ],
"value": 10, "value": 10,
"points": 10, "points": 10,
"category": "Hanja", "category": "Hanja",
"item": "① 시초(始初), ② 유래(由來), ③ 양립(兩立), ④ 수요(需要), ⑤ 독자(讀者)" "item": "① 발효(醱酵), ② 제품(製品), ③ 장식(裝飾), ④ 표현(表現), ⑤ 경향(傾向) "
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'품의양립')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'루를사용')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…작품은 양립(兩立)이…)>'은 → 의' 글자바꿈" "item": "문구 (…보통은 밀가루를 포용하지만…)>'포'→'사' 글자바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'러와훌륭')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'람을불어')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…훌륭한 베스트셀러와 작품의 양립…)>'훌륭한 / 베스트셀러와' 순서바꿈" "item": "문구 (…뭉치기, 불어넣어 바람을 부풀리기 등의…)>'불어넣어 / 바람을' 순서바꿈"
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "연평균 성인 독서량 추이(단위 : 권)", "searchValue": "연령별 박람회 참가자 현황(단위:명)",
"value": "맑은 고딕", "value": "굴림체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (연평균 성인 독서량 추이(단위 : 권))/① 글씨체 (맑은 고딕)" "item": "제목 문구 (연령별 박람회 참가자 현황(단위:명))/① 글씨체 (굴림체)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "연평균 성인 독서량 추이(단위 : 권)", "searchValue": "연령별 박람회 참가자 현황(단위:명)",
"value": "1200", "value": "1100",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연평균 성인 독서량 추이(단위 : 권))/② 크기 (1200)" "item": "제목 문구 (연령별 박람회 참가자 현황(단위:명))/② 크기 (1100)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "연평균 성인 독서량 추이(단위 : 권)", "searchValue": "연령별 박람회 참가자 현황(단위:명)",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (연평균 성인 독서량 추이(단위 : 권))/③ 진하게" "item": "제목 문구 (연령별 박람회 참가자 현황(단위:명))/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "연평균 성인 독서량 추이(단위 : 권)", "searchValue": "연령별 박람회 참가자 현황(단위:명)",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연평균 성인 독서량 추이(단위 : 권))/④ 정렬 (가운데 정렬)" "item": "제목 문구 (연령별 박람회 참가자 현황(단위:명))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "37,233,245", "value": "233,225,43",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:37,233,245)" "item": "위쪽 제목 셀/① 색상(RGB:233,225,43)"
}, },
"38": { "38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -682,11 +682,11 @@
"41": { "41": {
"path": "//TABLE//TEXT/@CharShape", "path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "돋움체", "value": "중고딕",
"points": 1, "points": 1,
"category": "TableFontName", "category": "TableFontName",
"category_tmp": "FontName", "category_tmp": "FontName",
"item": "글자모양/① 글씨체 (돋움체)", "item": "글자모양/① 글씨체 (중고딕)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
}, },
"42": { "42": {
@@ -705,7 +705,7 @@
}, },
"44": { "44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "AVG", "option": "SUM",
"value": true, "value": true,
"points": 4, "points": 4,
"category": "Boolean", "category": "Boolean",
@@ -753,28 +753,28 @@
}, },
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "연평균 성인 독서량 추이", "searchValue": "연령별 박람회 참가자 현황",
"value": "궁서", "value": "돋움체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연평균 성인 독서량 추이)/① 글씨체 (궁서)" "item": "제목 문구 (연령별 박람회 참가자 현황)/① 글씨체 (돋움체)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "연평균 성인 독서량 추이", "searchValue": "연령별 박람회 참가자 현황",
"value": "1400", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연평균 성인 독서량 추이)/② 크기 (1400)" "item": "제목 문구 (연령별 박람회 참가자 현황)/② 크기 (1300)"
}, },
"52": { "52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b", "option": "b",
"searchValue": "연평균 성인 독서량 추이", "searchValue": "연령별 박람회 참가자 현황",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연평균 성인 독서량 추이)/③ 기울임", "item": "제목 문구 (연령별 박람회 참가자 현황)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {

850
JSON/2601/DIW_2601C.json Normal file
View File

@@ -0,0 +1,850 @@
{
"0": {
"0": {
"path": "",
"path2": "",
"points": 0,
"category": "파일저장",
"item": "파일명 (수검번호.hwp/hwpx)"
},
"1": {
"path": "//PAGEMARGIN",
"value": {
"Top": 20,
"Bottom": 20,
"Left": 20,
"Right": 20,
"Header": 10,
"Footer": 10,
"Gutter": 0
},
"tolerance": 1,
"points": 4,
"category": "PageSetting",
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
},
"2": {
"path": "",
"value": {
"FontName": "바탕",
"FontSize": "1000",
"Alignment": "Justify",
"LineSpacing": "160"
},
"points": 4,
"category": "BasicSetting",
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
},
"3": {
"path": "",
"value": null,
"points": 40,
"category": "오타감점",
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
}
},
"1": {
"1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "거창에살으리랏다",
"value": "견고딕",
"points": 1,
"category": "OneAnswer",
"item": "문구 (거창에살으리랏다)/① 글씨체 (견고딕)"
},
"2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "거창에살으리랏다",
"value": "211,125,209",
"points": 2,
"category": "Color",
"item": "문구 (거창에살으리랏다)/② 채우기 : 색상(RGB:211,125,209)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "거창에살으리랏다",
"value": "110",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (거창에살으리랏다)/③ 크기-너비 (110 mm)"
},
"4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "거창에살으리랏다",
"value": "20",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (거창에살으리랏다)/④ 크기-높이 (20 mm)"
},
"5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "거창에살으리랏다",
"value": "true",
"points": 2,
"category": "OneAnswer",
"item": "문구 (거창에살으리랏다)/⑤ 위치 (글자처럼 취급)"
},
"6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "거창에살으리랏다",
"value": "Center",
"points": 2,
"category": "OneAnswer",
"item": "문구 (거창에살으리랏다)/⑥ 정렬 (가운데 정렬)"
},
"7": {
"path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "거창에살으리랏다",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (거창에살으리랏다)/⑦ 글맵시모양 (육안확인)"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "뉴",
"value": {
"Height": 2800,
"Width": 2800
},
"tolerance": 200,
"points": 1,
"category": "TwoLineSize",
"item": "어/① 모양 (2줄)"
},
"9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "뉴",
"value": "궁서체",
"points": 1,
"category": "FontName",
"item": "어/② 글씨체 (궁서체)"
},
"10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "뉴",
"value": "174,227,120",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:174,227,120)"
},
"11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "뉴",
"value": "3.0",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "어/④ 본문과의 간격 : 3.0mm"
},
"12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "저출산/고령화 수치(중위연령, 고령화지수, 출산율)",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (저출산/고령화 수치(중위연령, 고령화지수, 출산율))/① ITALIC"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "저출산/고령화 수치(중위연령, 고령화지수, 출산율)",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (저출산/고령화 수치(중위연령, 고령화지수, 출산율))/② UNDERLINE"
},
"14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "☆",
"char2": "☆",
"char3": "※",
"value": 3,
"points": 3,
"category": "SpecialChar",
"item": "① ☆, ② ☆, ③ ※"
},
"15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내",
"value": "궁서",
"points": 1,
"category": "FontName",
"item": "문구 (☆ 행사안내 ☆)/① 글씨체 (궁서)"
},
"16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "행사안내",
"value": "Center",
"points": 1,
"category": "Align",
"item": "문구 (☆ 행사안내 ☆)/② 정렬 (가운데 정렬)"
},
"17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2026. 01. 25.(일) 18:00까지 온라인으로 등록(http://www.ihd.or.kr)",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2026. 01. 25.(일) 18:00까지 온라인으로 등록(http://www.ihd.or.kr))/① BOLD"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2026. 01. 25.(일) 18:00까지 온라인으로 등록(http://www.ihd.or.kr)",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2026. 01. 25.(일) 18:00까지 온라인으로 등록(http://www.ihd.or.kr))/② UNDERLINE"
},
"19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "기타사항",
"value": {
"Left": 15,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2026. 01. 24.",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2026. 01. 24.)/① 크기 (1300)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2026. 01. 24.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2026. 01. 24.)/② 정렬 (가운데 정렬)"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "거창군청",
"value": "휴먼옛체",
"points": 1,
"category": "FontName",
"item": "문구 (거창군청)/① 글씨체 (휴먼옛체)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "거창군청",
"value": "2700",
"points": 1,
"category": "OneAnswer",
"item": "문구 (거창군청)/② 크기 (2700)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "거창군청",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (거창군청)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "돋움",
"points": 1,
"category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (돋움)"
},
"26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "LatinCapital",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomCenter",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight",
"왼쪽 아래": "BottomLeft"
}
},
"30": {
"path": "//CHAR[contains(text(),'{searchValue}')]",
"searchValue": "http",
"value": true,
"points": 2,
"category": "hyperlink",
"item": "문구 (http://www.ihd.or.kr)/하이퍼링크 없이 작성",
"desc": "searchValue에 해당하는 주소 문구에 하이퍼링크가 하나라도 설정되어 있으면 오답"
},
"31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "180",
"first_word": "뉴",
"points": 2,
"category": "LineSpacing",
"item": "문제 1 줄간격 180% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
}
},
"2": {
"1": {
"path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside",
"path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]",
"value": {
"header_inside": true,
"all_double_slim": true
},
"points": 4,
"category": "PageBorder",
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
},
"2": {
"path": "count(//SECTION)>1",
"value": true,
"points": 3,
"category": "Boolean",
"item": "① 구역나누기",
"desc": "섹션이 1개 이상이면 점수부여"
},
"3": {
"path": "./TEXT/COLDEF/@Count",
"value": "2",
"points": 3,
"category": "TwoColumn",
"item": "② 다단 2단"
},
"4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "65",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (인구절벽)/① 크기-너비 (65 mm)"
},
"5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (인구절벽)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE//LINESHAPE",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "Rectangle.LineShape",
"item": "문구 (인구절벽)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE/@Ratio",
"value": "50",
"points": 2,
"category": "Rectangle.OneAnswer",
"item": "문구 (인구절벽)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "244,220,42",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (인구절벽)/⑤ 채우기 : 색상(RGB:244,220,42)"
},
"9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true",
"points": 1,
"category": "Rectangle.OneAnswer",
"item": "문구 (인구절벽)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (인구절벽)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": ".//RECTANGLE//TEXT/@CharShape",
"value": "휴먼옛체",
"points": 1,
"category": "Rectangle.FontName",
"item": "문구 (인구절벽)/⑧ 글씨체 (휴먼옛체)"
},
"12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "2000",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (인구절벽)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id={rect_parashape_id}]/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (인구절벽)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림C.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "22",
"points": 2,
"category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)"
},
"19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 인구절벽이란?",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구① (1. 인구절벽이란?)/① 글씨체 (중고딕)"
},
"20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 인구절벽이란?",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구① (1. 인구절벽이란?)/② 크기 (1200)"
},
"21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 인구절벽이란?",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구① (1. 인구절벽이란?)/③ 진하게"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 인구절벽 대응책",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구② (2. 인구절벽 대응책)/① 글씨체 (중고딕)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 인구절벽 대응책",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구② (2. 인구절벽 대응책)/② 크기 (1200)"
},
"24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 인구절벽 대응책",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구② (2. 인구절벽 대응책)/③ 진하게"
},
"25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "생산가능인구",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (생산가능인구)/① 각주 설정 및 문구 입력"
},
"26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "전체 인구가 늘더라도 생산가능인구가 감소한다면 생산가능인구가 짊어져야 하는 비용은 증가한다.",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "문구 (생산가능인구)/② 글씨체 (굴림)"
},
"27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "전체 인구가 늘더라도 생산가능인구가 감소한다면 생산가능인구가 짊어져야 하는 비용은 증가한다.",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (생산가능인구)/③ 크기 (9pt)"
},
"28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "전체 인구가 늘더라도 생산가능인구가 감소한다면 생산가능인구가 짊어져야 하는 비용은 증가한다.",
"value": "DecagonCircleHanja",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Disaster",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Disaster/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
},
"30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [
["이론", "理論"],
["분포", "分布"],
["확산", "擴散"],
["변화", "變化"],
["확대", "擴大"]
],
"value": 10,
"points": 10,
"category": "Hanja",
"item": "① 이론(理論), ② 분포(分布), ③ 확산(擴散), ④ 변화(變化), ⑤ 확대(擴大)"
},
"31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'지기시작')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…기점으로 시작하는 약해지기 현상을…)>'시작하는' / '약해지기' 순서바꿈"
},
"32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'취업기회')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…청년들의 취협 기회도…)>'협' → '업' 글자바꿈"
},
"33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "OECD 주요국 합계출산율",
"value": "궁서",
"points": 1,
"category": "FontName",
"item": "제목 문구 (OECD 주요국 합계출산율)/① 글씨체 (궁서)"
},
"34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "OECD 주요국 합계출산율",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (OECD 주요국 합계출산율)/② 크기 (1200)"
},
"35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "OECD 주요국 합계출산율",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "제목 문구 (OECD 주요국 합계출산율)/③ 진하게"
},
"36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "OECD 주요국 합계출산율",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (OECD 주요국 합계출산율)/④ 정렬 (가운데 정렬)"
},
"37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "247,159,100",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:247,159,100)"
},
"38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "위쪽 제목 셀/② 진하게",
"desc": "글자 속성이라 CELLZONE으로 적용 되지 않음"
},
"39": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type",
"value": "DoubleSlim",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/① 이중실선"
},
"40": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width",
"value": "0.5mm",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/② 0.5mm"
},
"41": {
"path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "돋움체",
"points": 1,
"category": "TableFontName",
"category_tmp": "FontName",
"item": "글자모양/① 글씨체 (돋움체)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
},
"42": {
"path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
"value": "1000",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/② 크기 (1000)"
},
"43": {
"path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
"value": "Center",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/③ 정렬 (가운데 정렬)"
},
"44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "AVG",
"value": true,
"points": 4,
"category": "Boolean",
"item": "블록 계산식/합계",
"desc": "option값에 합계는 SUM / 평균은 AVG"
},
"45": {
"chart_xpath": "",
"chart_type": "꺾은선형",
"value": true,
"points": 2,
"category": "ChartType",
"item": "① 종류 (꺾은선형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
},
"46": {
"chart_xpath": "//c:valAx/c:majorTickMark/@val",
"value": "out",
"points": 2,
"category": "ChartOneAnswer",
"item": "② 값 축 주 눈금선",
"desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
},
"47": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "③ 크기-너비 (80 mm)"
},
"48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "90",
"points": 2,
"category": "mmSize",
"item": "④ 크기-높이 (90 mm)"
},
"49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
"value": true,
"points": 2,
"category": "Boolean",
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
"desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "OECD 주요국 합계출산율",
"value": "돋움",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (OECD 주요국 합계출산율)/① 글씨체 (돋움)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "OECD 주요국 합계출산율",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (OECD 주요국 합계출산율)/② 크기 (1300)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b",
"searchValue": "OECD 주요국 합계출산율",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (OECD 주요국 합계출산율)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface",
"value": "굴림체",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/① 글꼴 (굴림체)"
},
"54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/② 크기 (9pt)"
},
"55": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface",
"value": "굴림체",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (굴림체)"
},
"57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/② 크기 (9pt)"
},
"58": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"59": {
"chart_xpath": "//c:legend//a:ea/@typeface",
"value": "굴림체",
"points": 1,
"category": "OneAnswer",
"item": "범례/① 글꼴 (굴림체)"
},
"60": {
"chart_xpath": "//c:legend//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "범례/② 크기 (9pt)"
},
"61": {
"chart_xpath": "//c:legend//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "범례/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}
}
}

850
JSON/2602/DIW_2602A.json Normal file
View File

@@ -0,0 +1,850 @@
{
"0": {
"0": {
"path": "",
"path2": "",
"points": 0,
"category": "파일저장",
"item": "파일명 (수검번호.hwp/hwpx)"
},
"1": {
"path": "//PAGEMARGIN",
"value": {
"Top": 20,
"Bottom": 20,
"Left": 20,
"Right": 20,
"Header": 10,
"Footer": 10,
"Gutter": 0
},
"tolerance": 1,
"points": 4,
"category": "PageSetting",
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
},
"2": {
"path": "",
"value": {
"FontName": "바탕",
"FontSize": "1000",
"Alignment": "Justify",
"LineSpacing": "160"
},
"points": 4,
"category": "BasicSetting",
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
},
"3": {
"path": "",
"value": null,
"points": 40,
"category": "오타감점",
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
}
},
"1": {
"1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "대한민국요리경연대회",
"value": "맑은 고딕",
"points": 1,
"category": "OneAnswer",
"item": "문구 (대한민국요리경연대회)/① 글씨체 (맑은 고딕)"
},
"2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "대한민국요리경연대회",
"value": "53,135,146",
"points": 2,
"category": "Color",
"item": "문구 (대한민국요리경연대회)/② 채우기 : 색상(RGB:53,135,146)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "대한민국요리경연대회",
"value": "120",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (대한민국요리경연대회)/③ 크기-너비 (120 mm)"
},
"4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "대한민국요리경연대회",
"value": "20",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (대한민국요리경연대회)/④ 크기-높이 (20 mm)"
},
"5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "대한민국요리경연대회",
"value": "true",
"points": 2,
"category": "OneAnswer",
"item": "문구 (대한민국요리경연대회)/⑤ 위치 (글자처럼 취급)"
},
"6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "대한민국요리경연대회",
"value": "Center",
"points": 2,
"category": "OneAnswer",
"item": "문구 (대한민국요리경연대회)/⑥ 정렬 (가운데 정렬)"
},
"7": {
"path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "대한민국요리경연대회",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (대한민국요리경연대회)/⑦ 글맵시모양 (육안확인)"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "국",
"value": {
"Height": 2800,
"Width": 2800
},
"tolerance": 200,
"points": 1,
"category": "TwoLineSize",
"item": "어/① 모양 (2줄)"
},
"9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "국",
"value": "돋움체",
"points": 1,
"category": "FontName",
"item": "어/② 글씨체 (돋움체)"
},
"10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "국",
"value": "255,182,137",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:255,182,137)"
},
"11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "국",
"value": "3.0",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "어/④ 본문과의 간격 : 3.0mm"
},
"12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "대한민국 요리 경연대회",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/① BOLD"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "대한민국 요리 경연대회",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/② UNDERLINE"
},
"14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "★",
"char2": "★",
"char3": "※",
"value": 3,
"points": 3,
"category": "SpecialChar",
"item": "① ★, ② ★, ③ ※"
},
"15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내",
"value": "궁서",
"points": 1,
"category": "FontName",
"item": "문구 (★ 행사안내 ★)/① 글씨체 (궁서)"
},
"16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "행사안내",
"value": "Center",
"points": 1,
"category": "Align",
"item": "문구 (★ 행사안내 ★)/② 정렬 (가운데 정렬)"
},
"17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "대한민국 요리사 협의회 홈페이지(http://www.ihd.or.kr) 참조",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (대한민국 요리사 협의회 홈페이지(http://www.ihd.or.kr) 참조)/① BOLD"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "대한민국 요리사 협의회 홈페이지(http://www.ihd.or.kr) 참조",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (대한민국 요리사 협의회 홈페이지(http://www.ihd.or.kr) 참조)/② ITALIC"
},
"19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "기타사항",
"value": {
"Left": 10,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2026. 2. 28.",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2026. 2. 28.)/① 크기 (1300)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2026. 2. 28.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2026. 2. 28.)/② 정렬 (가운데 정렬)"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "대한민국요리사협의회",
"value": "맑은 고딕",
"points": 1,
"category": "FontName",
"item": "문구 (대한민국요리사협의회)/① 글씨체 (맑은 고딕)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "대한민국요리사협의회",
"value": "2500",
"points": 1,
"category": "OneAnswer",
"item": "문구 (대한민국요리사협의회)/② 크기 (2500)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "대한민국요리사협의회",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (대한민국요리사협의회)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "굴림",
"points": 1,
"category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (굴림)"
},
"26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "DecagonCircle",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (A,B,C 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomRight",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight",
"왼쪽 아래": "BottomLeft"
}
},
"30": {
"path": "//CHAR[contains(text(),'{searchValue}')]",
"searchValue": "http",
"value": true,
"points": 2,
"category": "hyperlink",
"item": "문구 (http://www.ihd.or.kr)/하이퍼링크 없이 작성",
"desc": "searchValue에 해당하는 주소 문구에 하이퍼링크가 하나라도 설정되어 있으면 오답"
},
"31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "180",
"first_word": "국",
"points": 2,
"category": "LineSpacing",
"item": "문제 1 줄간격 180% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
}
},
"2": {
"1": {
"path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside",
"path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]",
"value": {
"header_inside": true,
"all_double_slim": true
},
"points": 4,
"category": "PageBorder",
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
},
"2": {
"path": "count(//SECTION)>1",
"value": true,
"points": 3,
"category": "Boolean",
"item": "① 구역나누기",
"desc": "섹션이 1개 이상이면 점수부여"
},
"3": {
"path": "./TEXT/COLDEF/@Count",
"value": "2",
"points": 3,
"category": "TwoColumn",
"item": "② 다단 2단"
},
"4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "70",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (요리 산업 현황)/① 크기-너비 (70 mm)"
},
"5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (요리 산업 현황)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE//LINESHAPE",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "Rectangle.LineShape",
"item": "문구 (요리 산업 현황)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE/@Ratio",
"value": "20",
"points": 2,
"category": "Rectangle.OneAnswer",
"item": "문구 (요리 산업 현황)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "227,220,193",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (요리 산업 현황)/⑤ 채우기 : 색상(RGB:227,220,193)"
},
"9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true",
"points": 1,
"category": "Rectangle.OneAnswer",
"item": "문구 (요리 산업 현황)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (요리 산업 현황)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": ".//RECTANGLE//TEXT/@CharShape",
"value": "돋움체",
"points": 1,
"category": "Rectangle.FontName",
"item": "문구 (요리 산업 현황)/⑧ 글씨체 (돋움체)"
},
"12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "2000",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (요리 산업 현황)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id={rect_parashape_id}]/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (요리 산업 현황)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "85",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (85 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "22",
"points": 2,
"category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)"
},
"19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 요리 산업의 트렌드",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "문구① (1. 요리 산업의 트렌드)/① 글씨체 (굴림)"
},
"20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 요리 산업의 트렌드",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구① (1. 요리 산업의 트렌드)/② 크기 (1200)"
},
"21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 요리 산업의 트렌드",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구① (1. 요리 산업의 트렌드)/③ 진하게"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 요리 경연대회의 가치",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "문구② (2. 요리 경연대회의 가치)/① 글씨체 (굴림)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 요리 경연대회의 가치",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구② (2. 요리 경연대회의 가치)/② 크기 (1200)"
},
"24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 요리 경연대회의 가치",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구② (2. 요리 경연대회의 가치)/③ 진하게"
},
"25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "대체육",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (대체육)/① 각주 설정 및 문구 입력"
},
"26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "식물성 고기라고 불리며, 비동물성 재료로 모양과 식감을 고기와 유사하게 만든 식재료를 의미함",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구 (대체육)/② 글씨체 (돋움)"
},
"27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "식물성 고기라고 불리며, 비동물성 재료로 모양과 식감을 고기와 유사하게 만든 식재료를 의미함",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (대체육)/③ 크기 (9pt)"
},
"28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "식물성 고기라고 불리며, 비동물성 재료로 모양과 식감을 고기와 유사하게 만든 식재료를 의미함",
"value": "CircledHangulJamo",
"points": 2,
"category": "PageNumber",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Recipe",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Recipe/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": ""
},
"30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [
["요리", "料理"],
["지속", "持續"],
["활용", "活用"],
["실력", "實力"],
["미식", "美食"]
],
"value": 10,
"points": 10,
"category": "Hanja",
"item": "① 요리(料理), ② 지속(持續), ③ 활용(活用), ④ 실력(實力), ⑤ 미식(美食)"
},
"31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'태의미식')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…새로운 미식을 형태의 창조하는…)>'미식을' / '형태의' 순서바꿈"
},
"32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'광도경제')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…미식(美食) 관광은 경제적…)>'은' → '도' 글자바꿈"
},
"33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "요리 산업 트렌드(단위: 건수)",
"value": "궁서",
"points": 1,
"category": "FontName",
"item": "제목 문구 (요리 산업 트렌드(단위: 건수))/① 글씨체 (궁서)"
},
"34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "요리 산업 트렌드(단위: 건수)",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (요리 산업 트렌드(단위: 건수))/② 크기 (1200)"
},
"35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "요리 산업 트렌드(단위: 건수)",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "제목 문구 (요리 산업 트렌드(단위: 건수))/③ 진하게"
},
"36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "요리 산업 트렌드(단위: 건수)",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (요리 산업 트렌드(단위: 건수))/④ 정렬 (가운데 정렬)"
},
"37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "160,214,107",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:160,214,107)"
},
"38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "위쪽 제목 셀/② 진하게",
"desc": "글자 속성이라 CELLZONE으로 적용 되지 않음"
},
"39": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type",
"value": "DoubleSlim",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/① 이중실선"
},
"40": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width",
"value": "0.5mm",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/② 0.5mm"
},
"41": {
"path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "굴림",
"points": 1,
"category": "TableFontName",
"category_tmp": "FontName",
"item": "글자모양/① 글씨체 (굴림)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
},
"42": {
"path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
"value": "1000",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/② 크기 (1000)"
},
"43": {
"path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
"value": "Center",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/③ 정렬 (가운데 정렬)"
},
"44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "SUM",
"value": true,
"points": 4,
"category": "Boolean",
"item": "블록 계산식/합계",
"desc": "option값에 합계는 SUM / 평균은 AVG"
},
"45": {
"chart_xpath": "",
"chart_type": "표식만 있는 분산형",
"value": true,
"points": 2,
"category": "ChartType",
"item": "① 종류 (표식만 있는 분산형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
},
"46": {
"chart_xpath": "//c:valAx/c:majorTickMark/@val",
"value": "out",
"points": 2,
"category": "ChartOneAnswer",
"item": "② 값 축 주 눈금선",
"desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
},
"47": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "③ 크기-너비 (80 mm)"
},
"48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "90",
"points": 2,
"category": "mmSize",
"item": "④ 크기-높이 (90 mm)"
},
"49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
"value": true,
"points": 2,
"category": "Boolean",
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
"desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "요리 산업 트렌드(단위: 건수)",
"value": "돋움",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (요리 산업 트렌드(단위: 건수))/① 글씨체 (돋움)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "요리 산업 트렌드(단위: 건수)",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (요리 산업 트렌드(단위: 건수))/② 크기 (1300)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b",
"searchValue": "요리 산업 트렌드(단위: 건수)",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (요리 산업 트렌드(단위: 건수))/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface | //c:catAx/c:txPr//a:latin/@typeface",
"value": "궁서",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/① 글꼴 (궁서)"
},
"54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/② 크기 (9pt)"
},
"55": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface | //c:valAx/c:txPr//a:latin/@typeface",
"value": "궁서",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (궁서)"
},
"57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/② 크기 (9pt)"
},
"58": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"59": {
"chart_xpath": "//c:legend//a:ea/@typeface | //c:legend//a:latin/@typeface",
"value": "궁서",
"points": 1,
"category": "OneAnswer",
"item": "범례/① 글꼴 (궁서)"
},
"60": {
"chart_xpath": "//c:legend//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "범례/② 크기 (9pt)"
},
"61": {
"chart_xpath": "//c:legend//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "범례/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}
}
}

View File

@@ -46,65 +46,65 @@
"1": { "1": {
"1": { "1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "생성형 인공지능 세미나 안내", "searchValue": "전문사무연합협의회출범안내",
"value": "궁서체", "value": "맑은 고딕",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (생성형 인공지능 세미나 안내)/① 글씨체 (궁서체)" "item": "문구 (전문사무연합협의회출범안내)/① 글씨체 (맑은 고딕)"
}, },
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "생성형 인공지능 세미나 안내", "searchValue": "전문사무연합협의회출범안내",
"value": "233,190,46", "value": "194,58,253",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (생성형 인공지능 세미나 안내)/② 채우기 : 색상(RGB:233,190,46)" "item": "문구 (전문사무연합협의회출범안내)/② 채우기 : 색상(RGB:194,58,253)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "생성형 인공지능 세미나 안내", "searchValue": "전문사무연합협의회출범안내",
"value": "110", "value": "140",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (생성형 인공지능 세미나 안내)/③ 크기-너비 (110 mm)" "item": "문구 (전문사무연합협의회출범안내)/③ 크기-너비 (140 mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "생성형 인공지능 세미나 안내", "searchValue": "전문사무연합협의회출범안내",
"value": "20", "value": "20",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (생성형 인공지능 세미나 안내)/④ 크기-높이 (20 mm)" "item": "문구 (전문사무연합협의회출범안내)/④ 크기-높이 (20 mm)"
}, },
"5": { "5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "생성형 인공지능 세미나 안내", "searchValue": "전문사무연합협의회출범안내",
"value": "true", "value": "true",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (생성형 인공지능 세미나 안내)/⑤ 위치 (글자처럼 취급)" "item": "문구 (전문사무연합협의회출범안내)/⑤ 위치 (글자처럼 취급)"
}, },
"6": { "6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "생성형 인공지능 세미나 안내", "searchValue": "전문사무연합협의회출범안내",
"value": "Center", "value": "Center",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (생성형 인공지능 세미나 안내)/⑥ 정렬 (가운데 정렬)" "item": "문구 (전문사무연합협의회출범안내)/⑥ 정렬 (가운데 정렬)"
}, },
"7": { "7": {
"path": "//TEXTART[@Text='{searchValue}']", "path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "생성형 인공지능 세미나 안내", "searchValue": "전문사무연합협의회출범안내",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (생성형 인공지능 세미나 안내)/⑦ 글맵시모양 (육안확인)" "item": "문구 (전문사무연합협의회출범안내)/⑦ 글맵시모양 (육안확인)"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "", "searchValue": "",
"value": { "value": {
"Height": 2800, "Height": 2800,
"Width": 2800 "Width": 2800
@@ -116,23 +116,23 @@
}, },
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "", "searchValue": "",
"value": "굴림체", "value": "궁서체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "어/② 글씨체 (굴림체)" "item": "어/② 글씨체 (궁서체)"
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "", "searchValue": "",
"value": "221,251,229", "value": "87,172,220",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "어/③ 면색 : 색상(RGB:221,251,229)" "item": "어/③ 면색 : 색상(RGB:87,172,220)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "", "searchValue": "",
"value": "3.0", "value": "3.0",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
@@ -141,31 +141,31 @@
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "생성형 인공지능", "searchValue": "비전과 목표를 공유",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (생성형 인공지능)/① BOLD" "item": "문구 (비전과 목표를 공유)/① BOLD"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "생성형 인공지능", "searchValue": "비전과 목표를 공유",
"value": "ITALIC", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (생성형 인공지능)/② ITALIC" "item": "문구 (비전과 목표를 공유)/② UNDERLINE"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "", "char1": "",
"char2": "", "char2": "",
"char3": "※", "char3": "※",
"value": 3, "value": 3,
"points": 3, "points": 3,
"category": "SpecialChar", "category": "SpecialChar",
"item": "① , ② , ③ ※" "item": "① , ② , ③ ※"
}, },
"15": { "15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
@@ -173,7 +173,7 @@
"value": "궁서", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 ( 행사안내 )/① 글씨체 (궁서)" "item": "문구 ( 행사안내 )/① 글씨체 (궁서)"
}, },
"16": { "16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
@@ -181,78 +181,78 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Align", "category": "Align",
"item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)" "item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)"
}, },
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "회 홈페이지(https://www.ihd.or.kr)", "searchValue": "회 홈페이지(http://www.ihd.or.kr)에서 신청 가능",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (회 홈페이지(https://www.ihd.or.kr))/① BOLD" "item": "문구 (회 홈페이지(http://www.ihd.or.kr)에서 신청 가능)/① BOLD"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "회 홈페이지(https://www.ihd.or.kr)", "searchValue": "회 홈페이지(http://www.ihd.or.kr)에서 신청 가능",
"value": "UNDERLINE", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (회 홈페이지(https://www.ihd.or.kr))/② UNDERLINE" "item": "문구 (회 홈페이지(http://www.ihd.or.kr)에서 신청 가능)/② ITALIC"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "기타사항", "searchValue": "기타사항",
"value": { "value": {
"Left": 13, "Left": 15,
"Indent": 10 "Indent": 12
}, },
"points": 2, "points": 2,
"category": "ParaShape", "category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (13), 내어쓰기 (10)", "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 12. 20.", "searchValue": "2026. 2. 28.",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/① 크기 (1300)", "item": "문구 (2026. 2. 28.)/① 크기 (1300)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 12. 20.", "searchValue": "2026. 2. 28.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/② 정렬 (가운데 정렬)" "item": "문구 (2026. 2. 28.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "생성형인공지능협회", "searchValue": "한국전문사무연합협의회",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (생성형인공지능협회)/① 글씨체 (돋움)" "item": "문구 (한국전문사무연합협의회)/① 글씨체 (돋움)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "생성형인공지능협회", "searchValue": "한국전문사무연합협의회",
"value": "2000", "value": "2400",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (생성형인공지능협회)/② 크기 (2000)" "item": "문구 (한국전문사무연합협의회)/② 크기 (2400)"
}, },
"24": { "24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "생성형인공지능협회", "searchValue": "한국전문사무연합협의회",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (생성형인공지능협회)/③ 정렬 (가운데 정렬)" "item": "문구 (한국전문사무연합협의회)/③ 정렬 (가운데 정렬)"
}, },
"25": { "25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
@@ -280,10 +280,10 @@
}, },
"28": { "28": {
"path": "//PAGENUM/@FormatType", "path": "//PAGENUM/@FormatType",
"value": "LatinCapital", "value": "RomanCapital",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기", "item": "① 쪽 번호 매기기 (I,II,III 순으로)",
"desc1": { "desc1": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
"1,2,3": "Digit", "1,2,3": "Digit",
@@ -308,10 +308,10 @@
}, },
"29": { "29": {
"path": "//PAGENUM/@Pos", "path": "//PAGENUM/@Pos",
"value": "BottomRight", "value": "BottomCenter",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "왼쪽 아래", "item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여", "desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": { "desc2": {
"가운데 아래": "BottomCenter", "가운데 아래": "BottomCenter",
@@ -330,11 +330,11 @@
}, },
"31": { "31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "200", "value": "190",
"first_word": "", "first_word": "",
"points": 2, "points": 2,
"category": "LineSpacing", "category": "LineSpacing",
"item": "문제 1 줄간격 200% 설정", "item": "문제 1 줄간격 190% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다." "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
} }
}, },
@@ -367,17 +367,17 @@
}, },
"4": { "4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "60", "value": "45",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (생성형 인공지능)/① 크기-너비 (60 mm)" "item": "문구 (전문사무)/① 크기-너비 (45 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12", "value": "12",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (생성형 인공지능)/② 크기-높이 (12 mm)" "item": "문구 (전문사무)/② 크기-높이 (12 mm)"
}, },
"6": { "6": {
"path": "//RECTANGLE//LINESHAPE", "path": "//RECTANGLE//LINESHAPE",
@@ -387,51 +387,51 @@
}, },
"points": 2, "points": 2,
"category": "Rectangle.LineShape", "category": "Rectangle.LineShape",
"item": "문구 (생성형 인공지능)/③ 테두리 : 이중 실선(1.00mm)", "item": "문구 (전문사무)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력" "desc": "1mm = 283pt value['Width']에 pt값 입력"
}, },
"7": { "7": {
"path": "//RECTANGLE/@Ratio", "path": "//RECTANGLE/@Ratio",
"value": "0", "value": "20",
"points": 2, "points": 2,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (생성형 인공지능)/④ 글상자 모서리 (직각)", "item": "문구 (전문사무)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0" "desc": "모서리 비율 반원:50 / 둥근모양:20"
}, },
"8": { "8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "153,226,253", "value": "249,176,199",
"points": 2, "points": 2,
"category": "Rectangle.Color", "category": "Rectangle.Color",
"item": "문구 (생성형 인공지능)/⑤ 채우기 : 색상(RGB:153,226,253)" "item": "문구 (전문사무)/⑤ 채우기 : 색상(RGB:249,176,199)"
}, },
"9": { "9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true", "value": "true",
"points": 1, "points": 1,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (생성형 인공지능)/⑥ 글상자 위치 (글자처럼 취급)" "item": "문구 (전문사무)/⑥ 글상자 위치 (글자처럼 취급)"
}, },
"10": { "10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align", "path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (생성형 인공지능)/⑦ 글상자 정렬 (가운데 정렬)" "item": "문구 (전문사무)/⑦ 글상자 정렬 (가운데 정렬)"
}, },
"11": { "11": {
"path": ".//RECTANGLE//TEXT/@CharShape", "path": ".//RECTANGLE//TEXT/@CharShape",
"value": "견고딕", "value": "견고딕",
"points": 1, "points": 1,
"category": "Rectangle.FontName", "category": "Rectangle.FontName",
"item": "문구 (생성형 인공지능)/⑧ 글씨체 (견고딕)" "item": "문구 (전문사무)/⑧ 글씨체 (견고딕)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height", "path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "2000", "value": "2000",
"points": 1, "points": 1,
"category": "Rectangle.FontSize", "category": "Rectangle.FontSize",
"item": "문구 (생성형 인공지능)/⑨ 글씨크기 (2000)", "item": "문구 (전문사무)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"13": { "13": {
@@ -439,22 +439,22 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (생성형 인공지능)/⑩ 정렬 (가운데 정렬)" "item": "문구 (전문사무)/⑩ 정렬 (가운데 정렬)"
}, },
"14": { "14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']", "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "① 파일명 \"그림D.jpg\" 삽입", "item": "① 파일명 \"그림B.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)" "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
}, },
"15": { "15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "85", "value": "80",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "② 크기-너비 (85 mm)" "item": "② 크기-너비 (80 mm)"
}, },
"16": { "16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
@@ -479,81 +479,81 @@
}, },
"19": { "19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 서비스 현황", "searchValue": "1. 전문사무",
"value": "돋움체", "value": "굴림체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구① (1. 서비스 현황)/① 글씨체 (돋움체)" "item": "문구① (1. 전문사무)/① 글씨체 (굴림체)"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 서비스 현황", "searchValue": "1. 전문사무",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구① (1. 서비스 현황)/② 크기 (1200)" "item": "문구① (1. 전문사무)/② 크기 (1200)"
}, },
"21": { "21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 서비스 현황", "searchValue": "1. 전문사무",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구① (1. 서비스 현황)/③ 진하게" "item": "문구① (1. 전문사무)/③ 진하게"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 활용 분야", "searchValue": "2. 전문사무의 동향",
"value": "돋움체", "value": "굴림체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구② (2. 활용 분야)/① 글씨체 (돋움체)" "item": "문구② (2. 전문사무의 동향)/① 글씨체 (굴림체)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 활용 분야", "searchValue": "2. 전문사무의 동향",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구② (2. 활용 분야)/② 크기 (1200)" "item": "문구② (2. 전문사무의 동향)/② 크기 (1200)"
}, },
"24": { "24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 활용 분야", "searchValue": "2. 전문사무의 동향",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구② (2. 활용 분야)/③ 진하게" "item": "문구② (2. 전문사무의 동향)/③ 진하게"
}, },
"25": { "25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "핀테크", "option": "인공지능 리터러시",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (핀테크)/① 각주 설정 및 문구 입력" "item": "문구 (인공지능 리터러시)/① 각주 설정 및 문구 입력"
}, },
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "금융 서비스의 효율성과 접근성을 혁신하는 신산업", "searchValue": "인공지능을 이해하고 활용할 수 있는 능력",
"value": "굴림", "value": "중고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (핀테크)/② 글씨체 (굴림)" "item": "문구 (인공지능 리터러시)/② 글씨체 (중고딕)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "금융 서비스의 효율성과 접근성을 혁신하는 신산업", "searchValue": "인공지능을 이해하고 활용할 수 있는 능력",
"value": "900", "value": "900",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (핀테크)/③ 크기 (9pt)" "item": "문구 (인공지능 리터러시)/③ 크기 (9pt)"
}, },
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "금융 서비스의 효율성과 접근성을 혁신하는 신산업", "searchValue": "인공지능을 이해하고 활용할 수 있는 능력",
"value": "CircledLatinCapital", "value": "CircledHangulJamo",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
@@ -579,81 +579,81 @@
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Generative')])", "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Generative", "ignoreWord": "Chatgpt",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Generative/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Chatgpt/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [ "word": [
["생성", "生成"], ["기술", "技術"],
["현재", "現在"], ["도약", "跳躍"],
["창조", "創造"], ["동향", "動向"],
["결함", "缺陷"], ["역량", "力量"],
["극대", "極大"] ["혁신", "革新"]
], ],
"value": 10, "value": 10,
"points": 10, "points": 10,
"category": "Hanja", "category": "Hanja",
"item": "① 생성(生成), ② 현재(現在), ③ 창조(創造), ④ 결함(缺陷), ⑤ 극대(極大)" "item": "① 기술(技術), ② 도약(跳躍), ③ 동향(動向), ④ 역량(力量), ⑤ 혁신(革新)"
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'성형인공')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'성과신뢰')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…사용하는 인공지능 생성형 서비스이다…)>'인공지능 / 생성형' 순서바꿈" "item": "문구 (…이러한 업무는 신뢰성이 정확성과 중요하기 때문에…)>'신뢰성이 / 정확성과' 순서바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'률검토를')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'전기회를')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…작성 및 법률 검투를 수행…)>'' → '' 글자바꿈" "item": "문구 (…도약(跳躍)을 위한 발전 기획를 맞이하고…)>'' → '' 글자바꿈"
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "생성형 인공지능 서비스 이용률 현황", "searchValue": "전문사무 자격증 취득자 현황",
"value": "굴림체", "value": "돋움체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (생성형 인공지능 서비스 이용률 현황)/① 글씨체 (굴림체)" "item": "제목 문구 (전문사무 자격증 취득자 현황)/① 글씨체 (돋움체)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "생성형 인공지능 서비스 이용률 현황", "searchValue": "전문사무 자격증 취득자 현황",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (생성형 인공지능 서비스 이용률 현황)/② 크기 (1200)" "item": "제목 문구 (전문사무 자격증 취득자 현황)/② 크기 (1200)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "생성형 인공지능 서비스 이용률 현황", "searchValue": "전문사무 자격증 취득자 현황",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (생성형 인공지능 서비스 이용률 현황)/③ 진하게" "item": "제목 문구 (전문사무 자격증 취득자 현황)/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "생성형 인공지능 서비스 이용률 현황", "searchValue": "전문사무 자격증 취득자 현황",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (생성형 인공지능 서비스 이용률 현황)/④ 정렬 (가운데 정렬)" "item": "제목 문구 (전문사무 자격증 취득자 현황)/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "232,250,210", "value": "191,240,173",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:232,250,210)" "item": "위쪽 제목 셀/① 색상(RGB:191,240,173)"
}, },
"38": { "38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -682,11 +682,11 @@
"41": { "41": {
"path": "//TABLE//TEXT/@CharShape", "path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "중고딕", "value": "굴림",
"points": 1, "points": 1,
"category": "TableFontName", "category": "TableFontName",
"category_tmp": "FontName", "category_tmp": "FontName",
"item": "글자모양/① 글씨체 (중고딕)", "item": "글자모양/① 글씨체 (굴림)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
}, },
"42": { "42": {
@@ -704,8 +704,8 @@
"item": "글자모양/③ 정렬 (가운데 정렬)" "item": "글자모양/③ 정렬 (가운데 정렬)"
}, },
"44": { "44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "AVG", "option": "SUM",
"value": true, "value": true,
"points": 4, "points": 4,
"category": "Boolean", "category": "Boolean",
@@ -714,11 +714,11 @@
}, },
"45": { "45": {
"chart_xpath": "", "chart_xpath": "",
"chart_type": "묶은 로 막대형", "chart_type": "묶은 로 막대형",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "ChartType", "category": "ChartType",
"item": "① 종류 (묶은 로 막대형)", "item": "① 종류 (묶은 로 막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
}, },
"46": { "46": {
@@ -738,10 +738,10 @@
}, },
"48": { "48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height", "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "80", "value": "90",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "④ 크기-높이 (80 mm)" "item": "④ 크기-높이 (90 mm)"
}, },
"49": { "49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))", "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
@@ -753,32 +753,32 @@
}, },
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "생성형 인공지능 이용률 현황", "searchValue": "전문사무 자격증 취득 현황",
"value": "휴먼옛체", "value": "궁서체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (생성형 인공지능 이용률 현황)/① 글씨체 (휴먼옛체)" "item": "제목 문구 (전문사무 자격증 취득 현황)/① 글씨체 (궁서체)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "생성형 인공지능 이용률 현황", "searchValue": "전문사무 자격증 취득 현황",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (생성형 인공지능 이용률 현황)/② 크기 (1300)" "item": "제목 문구 (전문사무 자격증 취득 현황)/② 크기 (1300)"
}, },
"52": { "52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b", "option": "b",
"searchValue": "생성형 인공지능 이용률 현황", "searchValue": "전문사무 자격증 취득 현황",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (생성형 인공지능 이용률 현황)/③ 기울임", "item": "제목 문구 (전문사무 자격증 취득 현황)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface | //c:catAx/c:txPr//a:latin/@typeface",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
@@ -801,7 +801,7 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"56": { "56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface | //c:valAx/c:txPr//a:latin/@typeface",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
@@ -824,7 +824,7 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"59": { "59": {
"chart_xpath": "//c:legend//a:ea/@typeface", "chart_xpath": "//c:legend//a:ea/@typeface | //c:legend//a:latin/@typeface",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",

View File

@@ -46,65 +46,65 @@
"1": { "1": {
"1": { "1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "청소년창작음악페스티벌", "searchValue": "슬기로운국제사진공모전",
"value": "궁서체", "value": "궁서체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (청소년창작음악페스티벌)/① 글씨체 (궁서체)" "item": "문구 (슬기로운국제사진공모전)/① 글씨체 (궁서체)"
}, },
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "청소년창작음악페스티벌", "searchValue": "슬기로운국제사진공모전",
"value": "48,117,97", "value": "31,178,161",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (청소년창작음악페스티벌)/② 채우기 : 색상(RGB:48,117,97)" "item": "문구 (슬기로운국제사진공모전)/② 채우기 : 색상(RGB:31,178,161)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "청소년창작음악페스티벌", "searchValue": "슬기로운국제사진공모전",
"value": "110", "value": "120",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (청소년창작음악페스티벌)/③ 크기-너비 (110 mm)" "item": "문구 (슬기로운국제사진공모전)/③ 크기-너비 (120 mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "청소년창작음악페스티벌", "searchValue": "슬기로운국제사진공모전",
"value": "20", "value": "20",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (청소년창작음악페스티벌)/④ 크기-높이 (20 mm)" "item": "문구 (슬기로운국제사진공모전)/④ 크기-높이 (20 mm)"
}, },
"5": { "5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "청소년창작음악페스티벌", "searchValue": "슬기로운국제사진공모전",
"value": "true", "value": "true",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (청소년창작음악페스티벌)/⑤ 위치 (글자처럼 취급)" "item": "문구 (슬기로운국제사진공모전)/⑤ 위치 (글자처럼 취급)"
}, },
"6": { "6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "청소년창작음악페스티벌", "searchValue": "슬기로운국제사진공모전",
"value": "Center", "value": "Center",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (청소년창작음악페스티벌)/⑥ 정렬 (가운데 정렬)" "item": "문구 (슬기로운국제사진공모전)/⑥ 정렬 (가운데 정렬)"
}, },
"7": { "7": {
"path": "//TEXTART[@Text='{searchValue}']", "path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "청소년창작음악페스티벌", "searchValue": "슬기로운국제사진공모전",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (전통주페어링특강안내)/⑦ 글맵시모양 (육안확인)" "item": "문구 (슬기로운국제사진공모전)/⑦ 글맵시모양 (육안확인)"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "", "searchValue": "",
"value": { "value": {
"Height": 2800, "Height": 2800,
"Width": 2800 "Width": 2800
@@ -116,23 +116,23 @@
}, },
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "", "searchValue": "",
"value": "굴림체", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "어/② 글씨체 (굴림체)" "item": "어/② 글씨체 (돋움)"
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "", "searchValue": "",
"value": "248,132,58", "value": "214,150,244",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "어/③ 면색 : 색상(RGB:248,132,58)" "item": "어/③ 면색 : 색상(RGB:214,150,244)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "", "searchValue": "",
"value": "3.0", "value": "3.0",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
@@ -141,39 +141,39 @@
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "행사의 주제는 ‘음악, 꿈을 노래하다’", "searchValue": "일반 대중에게 공개",
"value": "BOLD", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (행사의 주제는 ‘음악, 꿈을 노래하다’)/① BOLD" "item": "문구 (일반 대중에게 공개)/① ITALIC"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "행사의 주제는 ‘음악, 꿈을 노래하다’", "searchValue": "일반 대중에게 공개",
"value": "UNDERLINE", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (행사의 주제는 ‘음악, 꿈을 노래하다’)/② UNDERLINE" "item": "문구 (일반 대중에게 공개)/② UNDERLINE"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "", "char1": "",
"char2": "", "char2": "",
"char3": "※", "char3": "※",
"value": 3, "value": 3,
"points": 3, "points": 3,
"category": "SpecialChar", "category": "SpecialChar",
"item": "① , ② , ③ ※" "item": "① , ② , ③ ※"
}, },
"15": { "15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내", "searchValue": "행사안내",
"value": "중고딕", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 ( 행사안내 )/① 글씨체 (중고딕)" "item": "문구 ( 행사안내 )/① 글씨체 (궁서)"
}, },
"16": { "16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
@@ -181,25 +181,25 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Align", "category": "Align",
"item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)" "item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)"
}, },
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "자세한 내용은 홈페이지(http://www.ihd.or.kr)에서 확인", "searchValue": "양재 미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (자세한 내용은 홈페이지(http://www.ihd.or.kr)에서 확인)/① BOLD" "item": "문구 (양재 미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활)/① BOLD"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "자세한 내용은 홈페이지(http://www.ihd.or.kr)에서 확인", "searchValue": "양재 미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활",
"value": "ITALIC", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (자세한 내용은 홈페이지(http://www.ihd.or.kr)에서 확인)/② ITALIC" "item": "문구 (양재 미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활)/② ITALIC"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
@@ -215,52 +215,52 @@
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 12. 20.", "searchValue": "2026. 02. 28.",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/① 크기 (1300)", "item": "문구 (2026. 02. 28.)/① 크기 (1300)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 12. 20.", "searchValue": "2026. 02. 28.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/② 정렬 (가운데 정렬)" "item": "문구 (2026. 02. 28.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "청소년 창작 음악 사무국", "searchValue": "양재 미디어센터",
"value": "돋움", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (청소년 창작 음악 사무국)/① 글씨체 (돋움)" "item": "문구 (양재 미디어센터)/① 글씨체 (굴림)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "청소년 창작 음악 사무국", "searchValue": "양재 미디어센터",
"value": "2700", "value": "2300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (청소년 창작 음악 사무국)/② 크기 (2700)" "item": "문구 (양재 미디어센터)/② 크기 (2300)"
}, },
"24": { "24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "청소년 창작 음악 사무국", "searchValue": "양재 미디어센터",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (청소년 창작 음악 사무국)/③ 정렬 (가운데 정렬)" "item": "문구 (양재 미디어센터)/③ 정렬 (가운데 정렬)"
}, },
"25": { "25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT", "searchValue": "DIAT",
"value": "굴림", "value": "중고딕",
"points": 1, "points": 1,
"category": "Header.FontName", "category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (굴림)" "item": "문구 (DIAT)/① 글꼴 (중고딕)"
}, },
"26": { "26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
@@ -280,10 +280,10 @@
}, },
"28": { "28": {
"path": "//PAGENUM/@FormatType", "path": "//PAGENUM/@FormatType",
"value": "HangulSyllable", "value": "RomanCapital",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)", "item": "① 쪽 번호 매기기 (I,II,III 순으로)",
"desc1": { "desc1": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
"1,2,3": "Digit", "1,2,3": "Digit",
@@ -308,10 +308,10 @@
}, },
"29": { "29": {
"path": "//PAGENUM/@Pos", "path": "//PAGENUM/@Pos",
"value": "BottomRight", "value": "BottomLeft",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "오른쪽 아래", "item": "쪽 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여", "desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": { "desc2": {
"가운데 아래": "BottomCenter", "가운데 아래": "BottomCenter",
@@ -331,7 +331,7 @@
"31": { "31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "180", "value": "180",
"first_word": "", "first_word": "",
"points": 2, "points": 2,
"category": "LineSpacing", "category": "LineSpacing",
"item": "문제 1 줄간격 180% 설정", "item": "문제 1 줄간격 180% 설정",
@@ -370,14 +370,14 @@
"value": "60", "value": "60",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (청소년 음악 창작)/① 크기-너비 (60 mm)" "item": "문구 (사진 예술 산업)/① 크기-너비 (60 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12", "value": "12",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (청소년 음악 창작)/② 크기-높이 (12 mm)" "item": "문구 (사진 예술 산업)/② 크기-높이 (12 mm)"
}, },
"6": { "6": {
"path": "//RECTANGLE//LINESHAPE", "path": "//RECTANGLE//LINESHAPE",
@@ -387,51 +387,51 @@
}, },
"points": 2, "points": 2,
"category": "Rectangle.LineShape", "category": "Rectangle.LineShape",
"item": "문구 (청소년 음악 창작)/③ 테두리 : 이중 실선(1.00mm)", "item": "문구 (사진 예술 산업)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력" "desc": "1mm = 283pt value['Width']에 pt값 입력"
}, },
"7": { "7": {
"path": "//RECTANGLE/@Ratio", "path": "//RECTANGLE/@Ratio",
"value": "20", "value": "50",
"points": 2, "points": 2,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (청소년 음악 창작)/④ 글상자 모서리 (반원)", "item": "문구 (사진 예술 산업)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20" "desc": "모서리 비율 반원:50 / 둥근모양:20"
}, },
"8": { "8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "53,135,145", "value": "228,211,147",
"points": 2, "points": 2,
"category": "Rectangle.Color", "category": "Rectangle.Color",
"item": "문구 (청소년 음악 창작)/⑤ 채우기 : 색상(RGB:53,135,145)" "item": "문구 (사진 예술 산업)/⑤ 채우기 : 색상(RGB:228,211,147)"
}, },
"9": { "9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true", "value": "true",
"points": 1, "points": 1,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (청소년 음악 창작)/⑥ 글상자 위치 (글자처럼 취급)" "item": "문구 (사진 예술 산업)/⑥ 글상자 위치 (글자처럼 취급)"
}, },
"10": { "10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align", "path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (청소년 음악 창작)/⑦ 글상자 정렬 (가운데 정렬)" "item": "문구 (사진 예술 산업)/⑦ 글상자 정렬 (가운데 정렬)"
}, },
"11": { "11": {
"path": ".//RECTANGLE//TEXT/@CharShape", "path": ".//RECTANGLE//TEXT/@CharShape",
"value": "궁서체", "value": "견고딕",
"points": 1, "points": 1,
"category": "Rectangle.FontName", "category": "Rectangle.FontName",
"item": "문구 (청소년 음악 창작)/⑧ 글씨체 (궁서체)" "item": "문구 (사진 예술 산업)/⑧ 글씨체 (견고딕)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height", "path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "2000", "value": "2000",
"points": 1, "points": 1,
"category": "Rectangle.FontSize", "category": "Rectangle.FontSize",
"item": "문구 (청소년 음악 창작)/⑨ 글씨크기 (2000)", "item": "문구 (사진 예술 산업)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"13": { "13": {
@@ -439,14 +439,14 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (청소년 음악 창작)/⑩ 정렬 (가운데 정렬)" "item": "문구 (사진 예술 산업)/⑩ 정렬 (가운데 정렬)"
}, },
"14": { "14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']", "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "① 파일명 \"그림B.jpg\" 삽입", "item": "① 파일명 \"그림C.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)" "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
}, },
"15": { "15": {
@@ -479,84 +479,84 @@
}, },
"19": { "19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 청소년 음악 창작", "searchValue": "1. 현대 사진 예술",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구① (1. 청소년 음악 창작)/① 글씨체 (돋움)" "item": "문구① (1. 현대 사진 예술)/① 글씨체 (돋움)"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 청소년 음악 창작", "searchValue": "1. 현대 사진 예술",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구① (1. 청소년 음악 창작)/② 크기 (1200)" "item": "문구① (1. 현대 사진 예술)/② 크기 (1200)"
}, },
"21": { "21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 청소년 음악 창작", "searchValue": "1. 현대 사진 예술",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구① (1. 청소년 음악 창작)/③ 진하게" "item": "문구① (1. 현대 사진 예술)/③ 진하게"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 청소년 음악 산업", "searchValue": "2. 사진 산업의 가치",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구② (2. 청소년 음악 산업)/① 글씨체 (돋움)" "item": "문구② (2. 사진 산업의 가치)/① 글씨체 (돋움)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 청소년 음악 산업", "searchValue": "2. 사진 산업의 가치",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구② (2. 청소년 음악 산업)/② 크기 (1200)" "item": "문구② (2. 사진 산업의 가치)/② 크기 (1200)"
}, },
"24": { "24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 청소년 음악 산업", "searchValue": "2. 사진 산업의 가치",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구② (2. 청소년 음악 산업)/③ 진하게" "item": "문구② (2. 사진 산업의 가치)/③ 진하게"
}, },
"25": { "25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "스트리밍", "option": "스토리텔링",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (스트리밍)/① 각주 설정 및 문구 입력" "item": "문구 (스토리텔링)/① 각주 설정 및 문구 입력"
}, },
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "인터넷에 연결된 장치에서 동영상이나 음악 등의 콘텐츠를 재생하는 기술을 의미함", "searchValue": "알리고자 하는 바를 단어, 이미지, 소리를 통해 사건, 이야기로 전달하는 을 의미함",
"value": "굴림", "value": "중고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (스트리밍)/② 글씨체 (굴림)" "item": "문구 (스토리텔링)/② 글씨체 (중고딕)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "인터넷에 연결된 장치에서 동영상이나 음악 등의 콘텐츠를 재생하는 기술을 의미함", "searchValue": "알리고자 하는 바를 단어, 이미지, 소리를 통해 사건, 이야기로 전달하는 을 의미함",
"value": "900", "value": "900",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (스트리밍)/③ 크기 (9pt)" "item": "문구 (스토리텔링)/③ 크기 (9pt)"
}, },
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "인터넷에 연결된 장치에서 동영상이나 음악 등의 콘텐츠를 재생하는 기술을 의미함", "searchValue": "알리고자 하는 바를 단어, 이미지, 소리를 통해 사건, 이야기로 전달하는 을 의미함",
"value": "CircledHangulJamo", "value": "CircledDigit",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (스트리밍)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
"desc": { "desc": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
"1,2,3": "Digit", "1,2,3": "Digit",
@@ -579,81 +579,81 @@
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Artist')])", "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Artist", "ignoreWord": "Documentary",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Artist/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Documentary/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [ "word": [
["작곡", "作曲"], ["표현", "表現"],
["유통", "流通"], ["합성", "合成"],
["창작", "創作"], ["보정", "補正"],
["발표", "發表"], ["투자", "投資"],
["수익", "受益"] ["각광", "脚光"]
], ],
"value": 10, "value": 10,
"points": 10, "points": 10,
"category": "Hanja", "category": "Hanja",
"item": "① 작곡(作曲), ② 유통(流通), ③ 창작(創作), ④ 발표(發表), ⑤ 수익(受益)" "item": "① 표현(表現), ② 합성(合成), ③ 보정(補正), ④ 투자(投資), ⑤ 각광(脚光)"
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'이고실험')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'지능이자동')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…벗어나 자율적이구 실험적인…)>'구' → '고' 글자바꿈" "item": "문구 (…자동으로 인공지능이 이미지 보정…)>'자동으로 / 인공지능이' 순서바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'로운기회')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'육적측면')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…뮤지션들에게도 기회가 새로운 열리고…)>'기회가 / 새로운' 순서바꿈" "item": "문구 (…상업적, 교육적 측변에서도…)>'변' → '면' 글자바꿈"
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "청소년 음악 성장률(단위:%)", "searchValue": "사진 산업 시장 성장률",
"value": "돋움", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (청소년 음악 성장률(단위:%))/① 글씨체 (돋움)" "item": "제목 문구 (사진 산업 시장 성장률)/① 글씨체 (궁서)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "청소년 음악 성장률(단위:%)", "searchValue": "사진 산업 시장 성장률",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (청소년 음악 성장률(단위:%))/② 크기 (1200)" "item": "제목 문구 (사진 산업 시장 성장률)/② 크기 (1200)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "청소년 음악 성장률(단위:%)", "searchValue": "사진 산업 시장 성장률",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (청소년 음악 성장률(단위:%))/③ 진하게" "item": "제목 문구 (사진 산업 시장 성장률)/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "청소년 음악 성장률(단위:%)", "searchValue": "사진 산업 시장 성장률",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (청소년 음악 성장률(단위:%))/④ 정렬 (가운데 정렬)" "item": "제목 문구 (연령별 축제 만족도(단위:%))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "202,86,167", "value": "165,211,137",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:202,86,167)" "item": "위쪽 제목 셀/① 색상(RGB:165,211,137)"
}, },
"38": { "38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -682,11 +682,11 @@
"41": { "41": {
"path": "//TABLE//TEXT/@CharShape", "path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "중고딕", "value": "굴림",
"points": 1, "points": 1,
"category": "TableFontName", "category": "TableFontName",
"category_tmp": "FontName", "category_tmp": "FontName",
"item": "글자모양/① 글씨체 (중고딕)", "item": "글자모양/① 글씨체 (굴림)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
}, },
"42": { "42": {
@@ -704,7 +704,7 @@
"item": "글자모양/③ 정렬 (가운데 정렬)" "item": "글자모양/③ 정렬 (가운데 정렬)"
}, },
"44": { "44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "AVG", "option": "AVG",
"value": true, "value": true,
"points": 4, "points": 4,
@@ -714,11 +714,11 @@
}, },
"45": { "45": {
"chart_xpath": "", "chart_xpath": "",
"chart_type": "꺾은선형", "chart_type": "곡선이 있는 분산형",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "ChartType", "category": "ChartType",
"item": "① 종류 (꺾은선형)", "item": "① 종류 (곡선이 있는 분산형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
}, },
"46": { "46": {
@@ -753,36 +753,36 @@
}, },
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "청소년 음악 성장률(단위:%)", "searchValue": "사진 산업 시장 성장률",
"value": "맑은 고딕", "value": "바탕",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (청소년 음악 성장률(단위:%))/① 글씨체 (맑은 고딕)" "item": "제목 문구 (사진 산업 시장 성장률)/① 글씨체 (바탕)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "청소년 음악 성장률(단위:%)", "searchValue": "사진 산업 시장 성장률",
"value": "1300", "value": "1400",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (청소년 음악 성장률(단위:%))/② 크기 (1300)" "item": "제목 문구 (사진 산업 시장 성장률)/② 크기 (1400)"
}, },
"52": { "52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b", "option": "b",
"searchValue": "청소년 음악 성장률(단위:%)", "searchValue": "사진 산업 시장 성장률",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (청소년 음악 성장률(단위:%))/③ 기울임", "item": "제목 문구 (사진 산업 시장 성장률)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface | //c:catAx/c:txPr//a:latin/@typeface",
"value": "바탕", "value": "돋움",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "X축/① 글꼴 (바탕)" "item": "X축/① 글꼴 (돋움)"
}, },
"54": { "54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
@@ -801,11 +801,11 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"56": { "56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface | //c:valAx/c:txPr//a:latin/@typeface",
"value": "바탕", "value": "돋움",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (바탕)" "item": "Y축/① 글꼴 (돋움)"
}, },
"57": { "57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
@@ -824,11 +824,11 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"59": { "59": {
"chart_xpath": "//c:legend//a:ea/@typeface", "chart_xpath": "//c:legend//a:ea/@typeface | //c:legend//a:latin/@typeface",
"value": "바탕", "value": "돋움",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "범례/① 글꼴 (바탕)" "item": "범례/① 글꼴 (돋움)"
}, },
"60": { "60": {
"chart_xpath": "//c:legend//a:defRPr/@sz", "chart_xpath": "//c:legend//a:defRPr/@sz",

View File

@@ -46,65 +46,65 @@
"1": { "1": {
"1": { "1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "디지털문서편집컨퍼런스", "searchValue": "전국대학생창업아이디어공모전",
"value": "견고딕", "value": "돋움체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (디지털문서편집컨퍼런스)/① 글씨체 (견고딕)" "item": "문구 (전국대학생창업아이디어공모전)/① 글씨체 (돋움체)"
}, },
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "디지털문서편집컨퍼런스", "searchValue": "전국대학생창업아이디어공모전",
"value": "28,61,98", "value": "28,77,128",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (디지털문서편집컨퍼런스)/② 채우기 : 색상(RGB:28,61,98)" "item": "문구 (전국대학생창업아이디어공모전)/② 채우기 : 색상(RGB:28,77,128)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "디지털문서편집컨퍼런스", "searchValue": "전국대학생창업아이디어공모전",
"value": "120", "value": "130",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (디지털문서편집컨퍼런스)/③ 크기-너비 (120 mm)" "item": "문구 (전국대학생창업아이디어공모전)/③ 크기-너비 (130 mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "디지털문서편집컨퍼런스", "searchValue": "전국대학생창업아이디어공모전",
"value": "20", "value": "20",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (디지털문서편집컨퍼런스)/④ 크기-높이 (20 mm)" "item": "문구 (전국대학생창업아이디어공모전)/④ 크기-높이 (20 mm)"
}, },
"5": { "5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "디지털문서편집컨퍼런스", "searchValue": "전국대학생창업아이디어공모전",
"value": "true", "value": "true",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (디지털문서편집컨퍼런스)/⑤ 위치 (글자처럼 취급)" "item": "문구 (전국대학생창업아이디어공모전)/⑤ 위치 (글자처럼 취급)"
}, },
"6": { "6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "디지털문서편집컨퍼런스", "searchValue": "전국대학생창업아이디어공모전",
"value": "Center", "value": "Center",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (디지털문서편집컨퍼런스)/⑥ 정렬 (가운데 정렬)" "item": "문구 (전국대학생창업아이디어공모전)/⑥ 정렬 (가운데 정렬)"
}, },
"7": { "7": {
"path": "//TEXTART[@Text='{searchValue}']", "path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "디지털문서편집컨퍼런스", "searchValue": "전국대학생창업아이디어공모전",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (디지털문서편집컨퍼런스)/⑦ 글맵시모양 (육안확인)" "item": "문구 (전국대학생창업아이디어공모전)/⑦ 글맵시모양 (육안확인)"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "", "searchValue": "",
"value": { "value": {
"Height": 2800, "Height": 2800,
"Width": 2800 "Width": 2800
@@ -116,23 +116,23 @@
}, },
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "", "searchValue": "",
"value": "중고딕", "value": "바탕체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "어/② 글씨체 (중고딕)" "item": "어/② 글씨체 (바탕체)"
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "", "searchValue": "",
"value": "157,92,187", "value": "187,196,219",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "어/③ 면색 : 색상(RGB:157,92,187)" "item": "어/③ 면색 : 색상(RGB:187,196,219)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "", "searchValue": "",
"value": "3.0", "value": "3.0",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
@@ -141,19 +141,19 @@
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "다양한 분야의 세미나와 전시", "searchValue": "새로운 도전, 창업으로 실현하다",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 2,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (다양한 분야의 세미나와 전시)/① BOLD" "item": "문구 (새로운 도전, 창업으로 실현하다)/① BOLD"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "다양한 분야의 세미나와 전시", "searchValue": "새로운 도전, 창업으로 실현하다",
"value": "UNDERLINE", "value": "UNDERLINE",
"points": 1, "points": 2,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (다양한 분야의 세미나와 전시)/② UNDERLINE" "item": "문구 (새로운 도전, 창업으로 실현하다)/② UNDERLINE"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
@@ -165,15 +165,15 @@
"value": 3, "value": 3,
"points": 3, "points": 3,
"category": "SpecialChar", "category": "SpecialChar",
"item": "① ■, ② ■, ③ ※" "item": "① ■ , ② ■ , ③ ※"
}, },
"15": { "15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내", "searchValue": "행사안내",
"value": "굴림", "value": "중고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (■ 행사안내 ■)/① 글씨체 (굴림)" "item": "문구 (■ 행사안내 ■)/① 글씨체 (중고딕)"
}, },
"16": { "16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
@@ -186,20 +186,20 @@
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025.12.24.() 18:00까지 전화로 등록 가능(02-1234-5678)", "searchValue": "2026.03.03.() 18:00까지 온라인으로 등록(http://www.ihd.or.kr)",
"value": "ITALIC", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (2025.12.24.() 18:00까지 전화로 등록 가능(02-1234-5678))/① ITALIC" "item": "문구 (2026.03.03.() 18:00까지 온라인으로 등록(http://www.ihd.or.kr))/① ITALIC"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025.12.24.() 18:00까지 전화로 등록 가능(02-1234-5678)", "searchValue": "2026.03.03.() 18:00까지 온라인으로 등록(http://www.ihd.or.kr)",
"value": "UNDERLINE", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (2025.12.24.() 18:00까지 전화로 등록 가능(02-1234-5678))/② UNDERLINE" "item": "문구 (2026.03.03.() 18:00까지 온라인으로 등록(http://www.ihd.or.kr))/② UNDERLINE"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
@@ -215,44 +215,44 @@
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 12. 20.", "searchValue": "2026. 02. 28.",
"value": "1400", "value": "1400",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/① 크기 (1400)", "item": "문구 (2026. 02. 28.)/① 크기 (1400)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 12. 20.", "searchValue": "2026. 02. 28.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/② 정렬 (가운데 정렬)" "item": "문구 (2026. 02. 28.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "사단법인 스마트오피스협의회", "searchValue": "전국청년창업진흥원",
"value": "돋움체", "value": "궁서체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (사단법인 스마트오피스협의회)/① 글씨체 (돋움체)" "item": "문구 (전국청년창업진흥원)/① 글씨체 (궁서체)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "사단법인 스마트오피스협의회", "searchValue": "전국청년창업진흥원",
"value": "2700", "value": "2700",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (사단법인 스마트오피스협의회)/② 크기 (2700)" "item": "문구 (전국청년창업진흥원)/② 크기 (2700)"
}, },
"24": { "24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "사단법인 스마트오피스협의회", "searchValue": "전국청년창업진흥원",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (사단법인 스마트오피스협의회)/③ 정렬 (가운데 정렬)" "item": "문구 (전국청년창업진흥원)/③ 정렬 (가운데 정렬)"
}, },
"25": { "25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
@@ -283,7 +283,7 @@
"value": "Ideograph", "value": "Ideograph",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)", "item": "① 쪽 번호 매기기 (一,二,三 순으로)",
"desc1": { "desc1": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
"1,2,3": "Digit", "1,2,3": "Digit",
@@ -311,7 +311,7 @@
"value": "BottomCenter", "value": "BottomCenter",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "왼쪽 아래", "item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여", "desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": { "desc2": {
"가운데 아래": "BottomCenter", "가운데 아래": "BottomCenter",
@@ -320,21 +320,12 @@
} }
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{searchValue}')]",
"searchValue": "http",
"value": true,
"points": 2,
"category": "hyperlink",
"item": "문구 (http://www.ihd.or.kr)/하이퍼링크 없이 작성",
"desc": "searchValue에 해당하는 주소 문구에 하이퍼링크가 하나라도 설정되어 있으면 오답"
},
"31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "190", "value": "200",
"first_word": "", "first_word": "",
"points": 2, "points": 2,
"category": "LineSpacing", "category": "LineSpacing",
"item": "문제 1 줄간격 190% 설정", "item": "문제 1 줄간격 200% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다." "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
} }
}, },
@@ -370,14 +361,14 @@
"value": "70", "value": "70",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (된장의 역사와 종류)/① 크기-너비 (70 mm)" "item": "문구 (대학생 창업 현황)/① 크기-너비 (70 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12", "value": "12",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (된장의 역사와 종류)/② 크기-높이 (12 mm)" "item": "문구 (대학생 창업 현황)/② 크기-높이 (12 mm)"
}, },
"6": { "6": {
"path": "//RECTANGLE//LINESHAPE", "path": "//RECTANGLE//LINESHAPE",
@@ -387,7 +378,7 @@
}, },
"points": 2, "points": 2,
"category": "Rectangle.LineShape", "category": "Rectangle.LineShape",
"item": "문구 (된장의 역사와 종류)/③ 테두리 : 이중 실선(1.00mm)", "item": "문구 (대학생 창업 현황)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력" "desc": "1mm = 283pt value['Width']에 pt값 입력"
}, },
"7": { "7": {
@@ -395,43 +386,43 @@
"value": "50", "value": "50",
"points": 2, "points": 2,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (된장의 역사와 종류)/④ 글상자 모서리 (반원)", "item": "문구 (대학생 창업 현황)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20" "desc": "모서리 비율 반원:50 / 둥근모양:20"
}, },
"8": { "8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "227,220,193", "value": "227,142,193",
"points": 2, "points": 2,
"category": "Rectangle.Color", "category": "Rectangle.Color",
"item": "문구 (된장의 역사와 종류)/⑤ 채우기 : 색상(RGB:227,220,193)" "item": "문구 (대학생 창업 현황)/⑤ 채우기 : 색상(RGB:227,142,193)"
}, },
"9": { "9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true", "value": "true",
"points": 1, "points": 1,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (된장의 역사와 종류)/⑥ 글상자 위치 (글자처럼 취급)" "item": "문구 (대학생 창업 현황)/⑥ 글상자 위치 (글자처럼 취급)"
}, },
"10": { "10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align", "path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (된장의 역사와 종류)/⑦ 글상자 정렬 (가운데 정렬)" "item": "문구 (대학생 창업 현황)/⑦ 글상자 정렬 (가운데 정렬)"
}, },
"11": { "11": {
"path": ".//RECTANGLE//TEXT/@CharShape", "path": ".//RECTANGLE//TEXT/@CharShape",
"value": "맑은 고딕", "value": "맑은고딕",
"points": 1, "points": 1,
"category": "Rectangle.FontName", "category": "Rectangle.FontName",
"item": "문구 (된장의 역사와 종류)/⑧ 글씨체 (맑은 고딕)" "item": "문구 (대학생 창업 현황)/⑧ 글씨체 (맑은고딕)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height", "path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "2000", "value": "2000",
"points": 1, "points": 1,
"category": "Rectangle.FontSize", "category": "Rectangle.FontSize",
"item": "문구 (된장의 역사와 종류)/⑨ 글씨크기 (2000)", "item": "문구 (대학생 창업 현황)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"13": { "13": {
@@ -439,14 +430,14 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (된장의 역사와 종류)/⑩ 정렬 (가운데 정렬)" "item": "문구 (대학생 창업 현황)/⑩ 정렬 (가운데 정렬)"
}, },
"14": { "14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']", "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입", "item": "① 파일명 \"그림D.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)" "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
}, },
"15": { "15": {
@@ -479,81 +470,81 @@
}, },
"19": { "19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 디지털 문서 편집 기술", "searchValue": "1. 대학생 창업",
"value": "중고딕", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구① (1. 디지털 문서 편집 기술)/① 글씨체 (중고딕)" "item": "문구① (1. 대학생 창업)/① 글씨체 (돋움)"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 디지털 문서 편집 기술", "searchValue": "1. 대학생 창업",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구① (1. 디지털 문서 편집 기술)/② 크기 (1200)" "item": "문구① (1. 대학생 창업)/② 크기 (1200)"
}, },
"21": { "21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 디지털 문서 편집 기술", "searchValue": "1. 대학생 창업",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구① (1. 디지털 문서 편집 기술)/③ 진하게" "item": "문구① (1. 대학생 창업)/③ 진하게"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 문서 자동화 솔루션", "searchValue": "2. 창업 생태계",
"value": "중고딕", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구② (2. 문서 자동화 솔루션)/① 글씨체 (중고딕)" "item": "문구② (2. 창업 생태계)/① 글씨체 (돋움)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 문서 자동화 솔루션", "searchValue": "2. 창업 생태계",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구② (2. 문서 자동화 솔루션)/② 크기 (1200)" "item": "문구② (2. 창업 생태계)/② 크기 (1200)"
}, },
"24": { "24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 문서 자동화 솔루션", "searchValue": "2. 창업 생태계",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구② (2. 문서 자동화 솔루션)/③ 진하게" "item": "문구② (2. 창업 생태계)/③ 진하게"
}, },
"25": { "25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "전자 서명", "option": "펀딩",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (전자 서명)/① 각주 설정 및 문구 입력" "item": "문구 (펀딩)/① 각주 설정 및 문구 입력"
}, },
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "공개키 암호화 방식을 사용하여 본인인증, 혹은 전자문서의 부인 방지를 위해 사용되는 기술", "searchValue": "필요, 프로그램, 프로젝트에 자금을 조달하기 위해 자원을 제공하는 행위를 말한다.",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (전자 서명)/② 글씨체 (돋움)" "item": "문구 (펀딩)/② 글씨체 (돋움)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "공개키 암호화 방식을 사용하여 본인인증, 혹은 전자문서의 부인 방지를 위해 사용되는 기술", "searchValue": "필요, 프로그램, 프로젝트에 자금을 조달하기 위해 자원을 제공하는 행위를 말한다.",
"value": "900", "value": "900",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전자 서명)/③ 크기 (9pt)" "item": "문구 (펀딩)/③ 크기 (9pt)"
}, },
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "공개키 암호화 방식을 사용하여 본인인증, 혹은 전자문서의 부인 방지를 위해 사용되는 기술", "searchValue": "필요, 프로그램, 프로젝트에 자금을 조달하기 위해 자원을 제공하는 행위를 말한다.",
"value": "CircledDigit", "value": "LatinSmall",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
@@ -579,81 +570,81 @@
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Security')])", "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Security", "ignoreWord": "Incubation",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Security/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Incubation/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [ "word": [
["초안", "草案"], ["창업", "創業"],
["진위", "眞僞"], ["육성", "育成"],
["탑재", "搭載"], ["기회", "機會"],
["자", "自動"], ["자", "投資"],
["극대화", "極大化"] ["고용", "雇用"]
], ],
"value": 10, "value": 10,
"points": 10, "points": 10,
"category": "Hanja", "category": "Hanja",
"item": "① 초안(草案), ② 진위(眞僞), ③ 탑재(搭載), ④ 자동(自動), ⑤ 극대화(極大化)" "item": "① 창업(創業), ② 육성(育成), ③ 기회(機會), ④ 투자(投資), ⑤ 고용(雇用)"
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'간과비용')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'지능,빅데')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…대체하면서 비용이 시간과 절감될…)>'비용이 / 시간과' 순서바꿈" "item": "문구 (...최근에는 빅데이터, 인공지능, 블록체인 등...)>'빅데이터, / 인공지능,' 순서바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'이필요한')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'스모델이')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…인력 투입이 필요해 수작업…)>'해' → '한' 글자바꿈" "item": "문구 (...혁신적인 비즈니스 모형이...)>'형→델' 글자바꿈"
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "디지털 문서 편집 기술 성장률(단위:%)", "searchValue": "대학생 창업 분야별 성장률(%)",
"value": "굴림체", "value": "궁서체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (디지털 문서 편집 기술 성장률(단위:%))/① 글씨체 (굴림체)" "item": "제목 문구 (대학생 창업 분야별 성장률(%))/① 글씨체 (궁서체)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "디지털 문서 편집 기술 성장률(단위:%)", "searchValue": "대학생 창업 분야별 성장률(%)",
"value": "1100", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (디지털 문서 편집 기술 성장률(단위:%))/② 크기 (1100)" "item": "제목 문구 (대학생 창업 분야별 성장률(%))/② 크기 (1200)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "디지털 문서 편집 기술 성장률(단위:%)", "searchValue": "대학생 창업 분야별 성장률(%)",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (디지털 문서 편집 기술 성장률(단위:%))/③ 진하게" "item": "제목 문구 (대학생 창업 분야별 성장률(%))/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "디지털 문서 편집 기술 성장률(단위:%)", "searchValue": "대학생 창업 분야별 성장률(%)",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (디지털 문서 편집 기술 성장률(단위:%))/④ 정렬 (가운데 정렬)" "item": "제목 문구 (대학생 창업 분야별 성장률(%))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "233,174,43", "value": "213,178,100",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:233,174,43)" "item": "위쪽 제목 셀/① 색상(RGB:213,178,100)"
}, },
"38": { "38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -704,7 +695,7 @@
"item": "글자모양/③ 정렬 (가운데 정렬)" "item": "글자모양/③ 정렬 (가운데 정렬)"
}, },
"44": { "44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "AVG", "option": "AVG",
"value": true, "value": true,
"points": 4, "points": 4,
@@ -714,11 +705,11 @@
}, },
"45": { "45": {
"chart_xpath": "", "chart_xpath": "",
"chart_type": "묶은 가로 막대형", "chart_type": "100% 기준 누적 가로 막대형",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "ChartType", "category": "ChartType",
"item": "① 종류 (묶은 가로 막대형)", "item": "① 종류 (100% 기준 누적 가로 막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
}, },
"46": { "46": {
@@ -738,10 +729,10 @@
}, },
"48": { "48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height", "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "90", "value": "80",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "④ 크기-높이 (90 mm)" "item": "④ 크기-높이 (80 mm)"
}, },
"49": { "49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))", "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
@@ -753,36 +744,36 @@
}, },
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "디지털 문서 편집 기술 성장률", "searchValue": "대학생 창업 분야별 성장률",
"value": "휴먼옛체", "value": "휴먼옛체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (디지털 문서 편집 기술 성장률)/① 글씨체 (휴먼옛체)" "item": "제목 문구 (대학생 창업 분야별 성장률)/① 글씨체 (휴먼옛체)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "디지털 문서 편집 기술 성장률", "searchValue": "대학생 창업 분야별 성장률",
"value": "1200", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (디지털 문서 편집 기술 성장률)/② 크기 (1200)" "item": "제목 문구 (대학생 창업 분야별 성장률)/② 크기 (1300)"
}, },
"52": { "52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b", "option": "b",
"searchValue": "디지털 문서 편집 기술 성장률", "searchValue": "대학생 창업 분야별 성장률",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (디지털 문서 편집 기술 성장률)/③ 기울임", "item": "제목 문구 (대학생 창업 분야별 성장률)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface | //c:catAx/c:txPr//a:latin/@typeface",
"value": "궁서", "value": "굴림체",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "X축/① 글꼴 (궁서)" "item": "X축/① 글꼴 (굴림체)"
}, },
"54": { "54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
@@ -801,11 +792,11 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"56": { "56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface | //c:valAx/c:txPr//a:latin/@typeface",
"value": "궁서", "value": "굴림체",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (궁서)" "item": "Y축/① 글꼴 (굴림체)"
}, },
"57": { "57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
@@ -824,11 +815,11 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"59": { "59": {
"chart_xpath": "//c:legend//a:ea/@typeface", "chart_xpath": "//c:legend//a:ea/@typeface | //c:legend//a:latin/@typeface",
"value": "궁서", "value": "굴림체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "범례/① 글꼴 (궁서)" "item": "범례/① 글꼴 (굴림체)"
}, },
"60": { "60": {
"chart_xpath": "//c:legend//a:defRPr/@sz", "chart_xpath": "//c:legend//a:defRPr/@sz",

View File

@@ -46,65 +46,65 @@
"1": { "1": {
"1": { "1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "한산해안갯벌체험교실", "searchValue": "상반기건강차체험안내",
"value": "견고딕", "value": "돋움체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/① 글씨체 (견고딕)" "item": "문구 (상반기건강차체험안내)/① 글씨체 (돋움체)"
}, },
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "한산해안갯벌체험교실", "searchValue": "상반기건강차체험안내",
"value": "51,69,153", "value": "55,123,200",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (한산해안갯벌체험교실)/② 채우기 : 색상(RGB:51,69,153)" "item": "문구 (상반기건강차체험안내)/② 채우기 : 색상(RGB:55,123,200)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "한산해안갯벌체험교실", "searchValue": "상반기건강차체험안내",
"value": "110", "value": "125",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (한산해안갯벌체험교실)/③ 크기-너비 (110 mm)" "item": "문구 (상반기건강차체험안내)/③ 크기-너비 (125 mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "한산해안갯벌체험교실", "searchValue": "상반기건강차체험안내",
"value": "20", "value": "20",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (한산해안갯벌체험교실)/④ 크기-높이 (20 mm)" "item": "문구 (상반기건강차체험안내)/④ 크기-높이 (20 mm)"
}, },
"5": { "5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "한산해안갯벌체험교실", "searchValue": "상반기건강차체험안내",
"value": "true", "value": "true",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/⑤ 위치 (글자처럼 취급)" "item": "문구 (상반기건강차체험안내)/⑤ 위치 (글자처럼 취급)"
}, },
"6": { "6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "한산해안갯벌체험교실", "searchValue": "상반기건강차체험안내",
"value": "Center", "value": "Center",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/⑥ 정렬 (가운데 정렬)" "item": "문구 (상반기건강차체험안내)/⑥ 정렬 (가운데 정렬)"
}, },
"7": { "7": {
"path": "//TEXTART[@Text='{searchValue}']", "path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "한산해안갯벌체험교실", "searchValue": "상반기건강차체험안내",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (한산해안갯벌체험교실)/⑦ 글맵시모양 (육안확인)" "item": "문구 (상반기건강차체험안내)/⑦ 글맵시모양 (육안확인)"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "", "searchValue": "",
"value": { "value": {
"Height": 2800, "Height": 2800,
"Width": 2800 "Width": 2800
@@ -116,23 +116,23 @@
}, },
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "", "searchValue": "",
"value": "굴림", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "어/② 글씨체 (굴림)" "item": "어/② 글씨체 (굴림)"
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "", "searchValue": "",
"value": "219,207,102", "value": "231,215,17",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "어/③ 면색 : 색상(RGB:219,207,102)" "item": "어/③ 면색 : 색상(RGB:231,215,17)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "", "searchValue": "",
"value": "3.0", "value": "3.0",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
@@ -141,126 +141,126 @@
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "한산해안 갯벌체험 교실", "searchValue": "새로운 취미를 가질 수 있는 기회",
"value": "BOLD", "value": "BOLD",
"points": 2, "points": 2,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (한산해안 갯벌체험 교실)/① BOLD" "item": "문구 (새로운 취미를 가질 수 있는 기회)/① BOLD"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "한산해안 갯벌체험 교실", "searchValue": "새로운 취미를 가질 수 있는 기회",
"value": "ITALIC", "value": "ITALIC",
"points": 2, "points": 2,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (한산해안 갯벌체험 교실)/② ITALIC" "item": "문구 (새로운 취미를 가질 수 있는 기회)/② ITALIC"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "", "char1": "",
"char2": "", "char2": "",
"char3": "※", "char3": "※",
"value": 3, "value": 3,
"points": 3, "points": 3,
"category": "SpecialChar", "category": "SpecialChar",
"item": "① , ② , ③ ※" "item": "① , ② , ③ ※"
}, },
"15": { "15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내", "searchValue": "체험안내",
"value": "돋움", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (≪ 행사안내 )/① 글씨체 (돋움)" "item": "문구 (◇ 체험안내 )/① 글씨체 (궁서)"
}, },
"16": { "16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "행사안내", "match_str": "체험안내",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Align", "category": "Align",
"item": "문구 (≪ 행사안내 )/② 정렬 (가운데 정렬)" "item": "문구 (◇ 체험안내 )/② 정렬 (가운데 정렬)"
}, },
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 12월 20일(토) 13:30 ~ 17:30", "searchValue": "서울시 청담동 서울필문화센터 1층",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (2025년 12월 20일(토) 13:30 ~ 17:30)/① BOLD" "item": "문구 (서울시 청담동 서울필문화센터 1층)/① BOLD"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 12월 20일(토) 13:30 ~ 17:30", "searchValue": "서울시 청담동 서울필문화센터 1층",
"value": "UNDERLINE", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (2025년 12월 20일(토) 13:30 ~ 17:30)/② UNDERLINE" "item": "문구 (서울시 청담동 서울필문화센터 1층)/② UNDERLINE"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "신청안내", "searchValue": "기타사항",
"value": { "value": {
"Left": 10, "Left": 15,
"Indent": 12 "Indent": 12
}, },
"points": 2, "points": 2,
"category": "ParaShape", "category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10), 내어쓰기 (12)", "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 12. 11.", "searchValue": "2026. 02. 28.",
"value": "1400", "value": "1400",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 11.)/① 크기 (1400)", "item": "문구 (2026. 02. 28.)/① 크기 (1400)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 12. 11.", "searchValue": "2026. 02. 28.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 11.)/② 정렬 (가운데 정렬)" "item": "문구 (2026. 02. 28.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "한산시청해양자원육성과", "searchValue": "서울필문화센터",
"value": "견고딕", "value": "궁서체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (한산시청해양자원육성과)/① 글씨체 (견고딕)" "item": "문구 (서울필문화센터)/① 글씨체 (궁서체)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "한산시청해양자원육성과", "searchValue": "서울필문화센터",
"value": "2200", "value": "2500",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한산시청해양자원육성과)/② 크기 (2200)" "item": "문구 (서울필문화센터)/② 크기 (2500)"
}, },
"24": { "24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "한산시청해양자원육성과", "searchValue": "서울필문화센터",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한산시청해양자원육성과)/③ 정렬 (가운데 정렬)" "item": "문구 (서울필문화센터)/③ 정렬 (가운데 정렬)"
}, },
"25": { "25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT", "searchValue": "DIAT",
"value": "돋움체", "value": "굴림",
"points": 1, "points": 1,
"category": "Header.FontName", "category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (돋움체)" "item": "문구 (DIAT)/① 글꼴 (굴림)"
}, },
"26": { "26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
@@ -280,7 +280,7 @@
}, },
"28": { "28": {
"path": "//PAGENUM/@FormatType", "path": "//PAGENUM/@FormatType",
"value": "DecagonCircle", "value": "LatinCapital",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기 (A,B,C 순으로)", "item": "① 쪽 번호 매기기 (A,B,C 순으로)",
@@ -308,7 +308,7 @@
}, },
"29": { "29": {
"path": "//PAGENUM/@Pos", "path": "//PAGENUM/@Pos",
"value": "BottomCenter", "value": "BottomRight",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "가운데 아래", "item": "가운데 아래",
@@ -322,7 +322,7 @@
"30": { "30": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "200", "value": "200",
"first_word": "", "first_word": "",
"points": 2, "points": 2,
"category": "LineSpacing", "category": "LineSpacing",
"item": "문제 1 줄간격 200% 설정", "item": "문제 1 줄간격 200% 설정",
@@ -361,14 +361,14 @@
"value": "60", "value": "60",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (살아있는 갯벌)/① 크기-너비 (60 mm)" "item": "문구 (홍차에 대하여)/① 크기-너비 (60 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12", "value": "12",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (살아있는 갯벌)/② 크기-높이 (12 mm)" "item": "문구 (홍차에 대하여)/② 크기-높이 (12 mm)"
}, },
"6": { "6": {
"path": "//RECTANGLE//LINESHAPE", "path": "//RECTANGLE//LINESHAPE",
@@ -378,7 +378,7 @@
}, },
"points": 2, "points": 2,
"category": "Rectangle.LineShape", "category": "Rectangle.LineShape",
"item": "문구 (살아있는 갯벌)/③ 테두리 : 이중 실선(1.00mm)", "item": "문구 (홍차에 대하여)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력" "desc": "1mm = 283pt value['Width']에 pt값 입력"
}, },
"7": { "7": {
@@ -386,43 +386,43 @@
"value": "50", "value": "50",
"points": 2, "points": 2,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (살아있는 갯벌)/④ 글상자 모서리 (반원)", "item": "문구 (홍차에 대하여)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20" "desc": "모서리 비율 반원:50 / 둥근모양:20"
}, },
"8": { "8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "249,173,168", "value": "241,183,180",
"points": 2, "points": 2,
"category": "Rectangle.Color", "category": "Rectangle.Color",
"item": "문구 (살아있는 갯벌)/⑤ 채우기 : 색상(RGB:249,173,168)" "item": "문구 (홍차에 대하여)/⑤ 채우기 : 색상(RGB:241,183,180)"
}, },
"9": { "9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true", "value": "true",
"points": 1, "points": 1,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (살아있는 갯벌)/⑥ 글상자 위치 (글자처럼 취급)" "item": "문구 (홍차에 대하여)/⑥ 글상자 위치 (글자처럼 취급)"
}, },
"10": { "10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align", "path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (살아있는 갯벌)/⑦ 글상자 정렬 (가운데 정렬)" "item": "문구 (홍차에 대하여)/⑦ 글상자 정렬 (가운데 정렬)"
}, },
"11": { "11": {
"path": ".//RECTANGLE//TEXT/@CharShape", "path": ".//RECTANGLE//TEXT/@CharShape",
"value": "굴림체", "value": "견고딕",
"points": 1, "points": 1,
"category": "Rectangle.FontName", "category": "Rectangle.FontName",
"item": "문구 (살아있는 갯벌)/⑧ 글씨체 (굴림체)" "item": "문구 (홍차에 대하여)/⑧ 글씨체 (견고딕)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height", "path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "1700", "value": "2000",
"points": 1, "points": 1,
"category": "Rectangle.FontSize", "category": "Rectangle.FontSize",
"item": "문구 (살아있는 갯벌)/⑨ 글씨크기 (1700)", "item": "문구 (홍차에 대하여)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"13": { "13": {
@@ -430,22 +430,22 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (살아있는 갯벌)/⑩ 정렬 (가운데 정렬)" "item": "문구 (홍차에 대하여)/⑩ 정렬 (가운데 정렬)"
}, },
"14": { "14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']", "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입", "item": "① 파일명 \"그림E.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)" "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
}, },
"15": { "15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80", "value": "85",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "② 크기-너비 (80 mm)" "item": "② 크기-너비 (85 mm)"
}, },
"16": { "16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
@@ -463,88 +463,88 @@
}, },
"18": { "18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "23", "value": "22",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 23 mm)" "item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)"
}, },
"19": { "19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 갯벌의 가치", "searchValue": "1. 홍차의 역사",
"value": "중고딕", "value": "중고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구① (1. 갯벌의 가치)/① 글씨체 (중고딕)" "item": "문구① (1. 홍차의 역사)/① 글씨체 (중고딕)"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 갯벌의 가치", "searchValue": "1. 홍차의 역사",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구① (1. 갯벌의 가치)/② 크기 (1200)" "item": "문구① (1. 홍차의 역사)/② 크기 (1200)"
}, },
"21": { "21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 갯벌의 가치", "searchValue": "1. 홍차의 역사",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구① (1. 갯벌의 가치)/③ 진하게" "item": "문구① (1. 홍차의 역사)/③ 진하게"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 우리나라의 갯벌", "searchValue": "2. 홍차의 효능",
"value": "중고딕", "value": "중고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구② (2. 우리나라의 갯벌)/① 글씨체 (중고딕)" "item": "문구② (2. 홍차의 효능)/① 글씨체 (중고딕)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 우리나라의 갯벌", "searchValue": "2. 홍차의 효능",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구② (2. 우리나라의 갯벌)/② 크기 (1200)" "item": "문구② (2. 홍차의 효능)/② 크기 (1200)"
}, },
"24": { "24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 우리나라의 갯벌", "searchValue": "2. 홍차의 효능",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구② (2. 우리나라의 갯벌)/③ 진하게" "item": "문구② (2. 홍차의 효능)/③ 진하게"
}, },
"25": { "25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "리아스식 해안", "option": "효소",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (리아스식 해안)/① 각주 설정 및 문구 입력" "item": "문구 (효소)/① 각주 설정 및 문구 입력"
}, },
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안", "searchValue": "세포 안에서 합성되어 촉매 구실을 하는 화합물",
"value": "돋움체", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (리아스식 해안)/② 글씨체 (돋움체)" "item": "문구 (효소)/② 글씨체 (굴림)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안", "searchValue": "세포 안에서 합성되어 촉매 구실을 하는 화합물",
"value": "900", "value": "900",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (리아스식 해안)/③ 크기 (9pt)" "item": "문구 (효소)/③ 크기 (9pt)"
}, },
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안", "searchValue": "세포 안에서 합성되어 촉매 구실을 하는 화합물",
"value": "CircledLatinSmall", "value": "Digit",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
@@ -570,81 +570,81 @@
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Microorganism')])", "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Microorganism", "ignoreWord": "Culture",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Microorganism/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Culture/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [ "word": [
["조수", "潮水"], ["홍차", "紅茶"],
["유기물", "有機物"], ["추정", "推定"],
["정화", "淨化"], ["재배", "栽培"],
["조수", "潮水"], ["특징", "特徵"],
["분포", "分布"] ["건강", "健康"]
], ],
"value": 10, "value": 10,
"points": 10, "points": 10,
"category": "Hanja", "category": "Hanja",
"item": "① 조수(潮水), ② 유기물(有機物), ③ 정화(淨化), ④ 조수(潮水), ⑤ 분포(分布)" "item": "① 홍차(紅茶), ② 추정(推定), ③ 재배(栽培), ④ 특징(特徵), ⑤ 건강(健康)"
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'급이원활')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'세기중반')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…산소공급은 원활하고…)>'' → '' 글자바꿈" "item": "문구 (…17제기 중반 네덜란드와…)>'' → '' 글자바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'면이바다')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'산된홍차')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…바다인 3면이 우리나라는…)>'바다인' / '3면이' 순서바꿈" "item": "문구 (…홍차는 생산된 세계적으로 유명해졌다는…)>'홍차는 / 생산된' 순서바꿈"
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)", "searchValue": "국내 홍차 선호도(%)",
"value": "굴림", "value": "돋움체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/① 글씨체 (굴림)" "item": "제목 문구 (국내 홍차 선호도(%))/① 글씨체 (돋움체)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)", "searchValue": "국내 홍차 선호도(%)",
"value": "1100", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/② 크기 (1100)" "item": "제목 문구 (국내 홍차 선호도(%))/② 크기 (1200)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)", "searchValue": "국내 홍차 선호도(%)",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/③ 진하게" "item": "제목 문구 (국내 홍차 선호도(%))/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)", "searchValue": "국내 홍차 선호도(%)",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (핀테크 산업 성장률(단위 : g))/④ 정렬 (가운데 정렬)" "item": "제목 문구 (국내 홍차 선호도(%))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "154,235,85", "value": "251,244,70",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:154,235,85)" "item": "위쪽 제목 셀/① 색상(RGB:251,244,70)"
}, },
"38": { "38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -673,11 +673,11 @@
"41": { "41": {
"path": "//TABLE//TEXT/@CharShape", "path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "궁서", "value": "굴림",
"points": 1, "points": 1,
"category": "TableFontName", "category": "TableFontName",
"category_tmp": "FontName", "category_tmp": "FontName",
"item": "글자모양/① 글씨체 (궁서)", "item": "글자모양/① 글씨체 (굴림)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
}, },
"42": { "42": {
@@ -695,8 +695,8 @@
"item": "글자모양/③ 정렬 (가운데 정렬)" "item": "글자모양/③ 정렬 (가운데 정렬)"
}, },
"44": { "44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "SUM", "option": "AVG",
"value": true, "value": true,
"points": 4, "points": 4,
"category": "Boolean", "category": "Boolean",
@@ -705,11 +705,11 @@
}, },
"45": { "45": {
"chart_xpath": "", "chart_xpath": "",
"chart_type": "원뿔형 누적 가로 막대형", "chart_type": "꺾은선형",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "ChartType", "category": "ChartType",
"item": "① 종류 (원뿔형 누적 가로 막대형)", "item": "① 종류 (꺾은선형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
}, },
"46": { "46": {
@@ -744,32 +744,32 @@
}, },
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "지역별 갯벌 면적", "searchValue": "국내 홍차 선호도",
"value": "궁서체", "value": "휴먼옛체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/① 글씨체 (궁서체)" "item": "제목 문구 (국내 홍차 선호도)/① 글씨체 (휴먼옛체)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "지역별 갯벌 면적", "searchValue": "국내 홍차 선호도",
"value": "1200", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/② 크기 (1200)" "item": "제목 문구 (국내 홍차 선호도)/② 크기 (1300)"
}, },
"52": { "52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "i", "option": "b",
"searchValue": "지역별 갯벌 면적", "searchValue": "국내 홍차 선호도",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/③ 기울임", "item": "제목 문구 (국내 홍차 선호도)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface | //c:catAx/c:txPr//a:latin/@typeface",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
@@ -784,7 +784,7 @@
}, },
"55": { "55": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}", "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
"option": "b", "option": "i",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
@@ -792,7 +792,7 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"56": { "56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface | //c:valAx/c:txPr//a:latin/@typeface",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
@@ -807,7 +807,7 @@
}, },
"58": { "58": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}", "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
"option": "b", "option": "i",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
@@ -815,7 +815,7 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"59": { "59": {
"chart_xpath": "//c:legend//a:ea/@typeface", "chart_xpath": "//c:legend//a:ea/@typeface | //c:legend//a:latin/@typeface",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
@@ -830,7 +830,7 @@
}, },
"61": { "61": {
"chart_xpath": "//c:legend//a:defRPr/@{option}", "chart_xpath": "//c:legend//a:defRPr/@{option}",
"option": "b", "option": "i",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",

View File

@@ -46,65 +46,65 @@
"1": { "1": {
"1": { "1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "한국전통공예박람회", "searchValue": "한국평생교육학회학술포럼",
"value": "굴림체", "value": "궁서체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한국전통공예박람회)/① 글씨체 (굴림체)" "item": "문구 (한국평생교육학회학술포럼)/① 글씨체 (궁서체)"
}, },
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "한국전통공예박람회", "searchValue": "한국평생교육학회학술포럼",
"value": "28,61,98", "value": "48,117,196",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (한국전통공예박람회)/② 채우기 : 색상(RGB:28,61,98)" "item": "문구 (한국평생교육학회학술포럼)/② 채우기 : 색상(RGB:48,117,196)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "한국전통공예박람회", "searchValue": "한국평생교육학회학술포럼",
"value": "110", "value": "130",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (한국전통공예박람회)/③ 크기-너비 (110 mm)" "item": "문구 (한국평생교육학회학술포럼)/③ 크기-너비 (130 mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "한국전통공예박람회", "searchValue": "한국평생교육학회학술포럼",
"value": "20", "value": "20",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (한국전통공예박람회)/④ 크기-높이 (20 mm)" "item": "문구 (한국평생교육학회학술포럼)/④ 크기-높이 (20 mm)"
}, },
"5": { "5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "한국전통공예박람회", "searchValue": "한국평생교육학회학술포럼",
"value": "true", "value": "true",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한국전통공예박람회)/⑤ 위치 (글자처럼 취급)" "item": "문구 (한국평생교육학회학술포럼)/⑤ 위치 (글자처럼 취급)"
}, },
"6": { "6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "한국전통공예박람회", "searchValue": "한국평생교육학회학술포럼",
"value": "Center", "value": "Center",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한국전통공예박람회)/⑥ 정렬 (가운데 정렬)" "item": "문구 (한국평생교육학회학술포럼)/⑥ 정렬 (가운데 정렬)"
}, },
"7": { "7": {
"path": "//TEXTART[@Text='{searchValue}']", "path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "한국전통공예박람회", "searchValue": "한국평생교육학회학술포럼",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (한국전통공예박람회)/⑦ 글맵시모양 (육안확인)" "item": "문구 (한국평생교육학회학술포럼)/⑦ 글맵시모양 (육안확인)"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "", "searchValue": "",
"value": { "value": {
"Height": 2800, "Height": 2800,
"Width": 2800 "Width": 2800
@@ -116,23 +116,23 @@
}, },
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "", "searchValue": "",
"value": "궁서체", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "어/② 글씨체 (궁서체)" "item": "어/② 글씨체 (굴림)"
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "", "searchValue": "",
"value": "236,217,74", "value": "248,190,122",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "어/③ 면색 : 색상(RGB:236,217,74)" "item": "어/③ 면색 : 색상(RGB:248,190,122)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "", "searchValue": "",
"value": "3.0", "value": "3.0",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
@@ -141,31 +141,31 @@
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "다양한 분야의 장인과 예술가들이 참여", "searchValue": "평생교육사 양성 교육과정 현황과 개선 방안 탐색",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (다양한 분야의 장인과 예술가들이 참여)/① BOLD" "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/① BOLD"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "다양한 분야의 장인과 예술가들이 참여", "searchValue": "평생교육사 양성 교육과정 현황과 개선 방안 탐색",
"value": "UNDERLINE", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (다양한 분야의 장인과 예술가들이 참여)/② UNDERLINE" "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/② UNDERLINE"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "", "char1": "",
"char2": "", "char2": "",
"char3": "※", "char3": "※",
"value": 3, "value": 3,
"points": 3, "points": 3,
"category": "SpecialChar", "category": "SpecialChar",
"item": "① , ② , ③ ※" "item": "① , ② , ③ ※"
}, },
"15": { "15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
@@ -173,7 +173,7 @@
"value": "궁서", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 ( 행사안내 )/① 글씨체 (궁서)" "item": "문구 ( 행사안내 )/① 글씨체 (궁서)"
}, },
"16": { "16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
@@ -181,25 +181,25 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Align", "category": "Align",
"item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)" "item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)"
}, },
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "한국 전통공예 박람회 홈페이지 (http://www.ihd.or.kr)", "searchValue": "한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조",
"value": "ITALIC", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (한국 전통공예 박람회 홈페이지 (http://www.ihd.or.kr))/① ITALIC" "item": "문구 (한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조)/① ITALIC"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "한국 전통공예 박람회 홈페이지 (http://www.ihd.or.kr)", "searchValue": "한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조",
"value": "UNDERLINE", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (한국 전통공예 박람회 홈페이지 (http://www.ihd.or.kr))/② UNDERLINE" "item": "문구 (한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조)/② UNDERLINE"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
@@ -215,52 +215,52 @@
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 12. 20.", "searchValue": "2026. 01. 24.",
"value": "1400", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/① 크기 (1400)", "item": "문구 (2026. 01. 24.)/① 크기 (1300)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 12. 20.", "searchValue": "2026. 01. 24.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/② 정렬 (가운데 정렬)" "item": "문구 (2026. 01. 24.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "한국 전통공예 협의회", "searchValue": "한국평생교육학회",
"value": "굴림", "value": "견고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (한국 전통공예 협의회)/① 글씨체 (굴림)" "item": "문구 (한국평생교육학회)/① 글씨체 (견고딕)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "한국 전통공예 협의회", "searchValue": "한국평생교육학회",
"value": "2600", "value": "2500",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한국 전통공예 협의회)/② 크기 (2600)" "item": "문구 (한국평생교육학회)/② 크기 (2500)"
}, },
"24": { "24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "한국 전통공예 협의회", "searchValue": "한국평생교육학회",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한국 전통공예 협의회)/③ 정렬 (가운데 정렬)" "item": "문구 (한국평생교육학회)/③ 정렬 (가운데 정렬)"
}, },
"25": { "25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT", "searchValue": "DIAT",
"value": "궁서", "value": "굴림체",
"points": 1, "points": 1,
"category": "Header.FontName", "category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (궁서)" "item": "문구 (DIAT)/① 글꼴 (굴림체)"
}, },
"26": { "26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
@@ -283,7 +283,7 @@
"value": "LatinCapital", "value": "LatinCapital",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기", "item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": { "desc1": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
"1,2,3": "Digit", "1,2,3": "Digit",
@@ -311,7 +311,7 @@
"value": "BottomRight", "value": "BottomRight",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "가운데 아래", "item": "오른쪽 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여", "desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": { "desc2": {
"가운데 아래": "BottomCenter", "가운데 아래": "BottomCenter",
@@ -331,7 +331,7 @@
"31": { "31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "200", "value": "200",
"first_word": "", "first_word": "",
"points": 2, "points": 2,
"category": "LineSpacing", "category": "LineSpacing",
"item": "문제 1 줄간격 200% 설정", "item": "문제 1 줄간격 200% 설정",
@@ -370,14 +370,14 @@
"value": "65", "value": "65",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (한국 전통공예)/① 크기-너비 (65 mm)" "item": "문구 (평생교육시대)/① 크기-너비 (65 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12", "value": "12",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (한국 전통공예)/② 크기-높이 (12 mm)" "item": "문구 (평생교육시대)/② 크기-높이 (12 mm)"
}, },
"6": { "6": {
"path": "//RECTANGLE//LINESHAPE", "path": "//RECTANGLE//LINESHAPE",
@@ -387,51 +387,51 @@
}, },
"points": 2, "points": 2,
"category": "Rectangle.LineShape", "category": "Rectangle.LineShape",
"item": "문구 (한국 전통공예)/③ 테두리 : 이중 실선(1.00mm)", "item": "문구 (평생교육시대)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력" "desc": "1mm = 283pt value['Width']에 pt값 입력"
}, },
"7": { "7": {
"path": "//RECTANGLE/@Ratio", "path": "//RECTANGLE/@Ratio",
"value": "50", "value": "20",
"points": 2, "points": 2,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (한국 전통공예)/④ 글상자 모서리 (반원)", "item": "문구 (평생교육시대)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20" "desc": "모서리 비율 반원:50 / 둥근모양:20"
}, },
"8": { "8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "202,86,167", "value": "224,122,146",
"points": 2, "points": 2,
"category": "Rectangle.Color", "category": "Rectangle.Color",
"item": "문구 (한국 전통공예)/⑤ 채우기 : 색상(RGB:202,86,167)" "item": "문구 (평생교육시대)/⑤ 채우기 : 색상(RGB:224,122,146)"
}, },
"9": { "9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true", "value": "true",
"points": 1, "points": 1,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (한국 전통공예)/⑥ 글상자 위치 (글자처럼 취급)" "item": "문구 (평생교육시대)/⑥ 글상자 위치 (글자처럼 취급)"
}, },
"10": { "10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align", "path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (한국 전통공예)/⑦ 글상자 정렬 (가운데 정렬)" "item": "문구 (평생교육시대)/⑦ 글상자 정렬 (가운데 정렬)"
}, },
"11": { "11": {
"path": ".//RECTANGLE//TEXT/@CharShape", "path": ".//RECTANGLE//TEXT/@CharShape",
"value": "견고딕", "value": "휴먼옛체",
"points": 1, "points": 1,
"category": "Rectangle.FontName", "category": "Rectangle.FontName",
"item": "문구 (한국 전통공예)/⑧ 글씨체 (견고딕)" "item": "문구 (평생교육시대)/⑧ 글씨체 (휴먼옛체)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height", "path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "2000", "value": "2000",
"points": 1, "points": 1,
"category": "Rectangle.FontSize", "category": "Rectangle.FontSize",
"item": "문구 (한국 전통공예)/⑨ 글씨크기 (2000)", "item": "문구 (평생교육시대)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"13": { "13": {
@@ -439,14 +439,14 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (한국 전통공예)/⑩ 정렬 (가운데 정렬)" "item": "문구 (평생교육시대)/⑩ 정렬 (가운데 정렬)"
}, },
"14": { "14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']", "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "① 파일명 \"그림C.jpg\" 삽입", "item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)" "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
}, },
"15": { "15": {
@@ -479,81 +479,81 @@
}, },
"19": { "19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 전통공예", "searchValue": "1. 평생교육이란?",
"value": "굴림", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구① (1. 전통공예)/① 글씨체 (굴림)" "item": "문구① (1. 평생교육이란?)/① 글씨체 (굴림)"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 전통공예", "searchValue": "1. 평생교육이란?",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구① (1. 전통공예)/② 크기 (1200)" "item": "문구① (1. 평생교육이란?)/② 크기 (1200)"
}, },
"21": { "21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 전통공예", "searchValue": "1. 평생교육이란?",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구① (1. 전통공예)/③ 진하게" "item": "문구① (1. 평생교육이란?)/③ 진하게"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 전통 공예 산업", "searchValue": "2. 평생교육사의 개념",
"value": "굴림", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구② (2. 전통 공예 산업)/① 글씨체 (굴림)" "item": "문구② (2. 평생교육사의 개념)/① 글씨체 (굴림)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 전통 공예 산업", "searchValue": "2. 평생교육사의 개념",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구② (2. 전통 공예 산업)/② 크기 (1200)" "item": "문구② (2. 평생교육사의 개념)/② 크기 (1200)"
}, },
"24": { "24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 전통 공예 산업", "searchValue": "2. 평생교육사의 개념",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구② (2. 전통 공예 산업)/③ 진하게" "item": "문구② (2. 평생교육사의 개념)/③ 진하게"
}, },
"25": { "25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "업사이클링", "option": "유네스코",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (업사이클링)/① 각주 설정 및 문구 입력" "item": "문구 (유네스코)/① 각주 설정 및 문구 입력"
}, },
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "이미 쓸모없거나 버려지는 자원을 재활용해 새로운 가치를 부여하는 것을 의미함", "searchValue": "교육, 과학, 문화의 보급 및 교류를 통하여 국가 간의 협력 증진을 목적으로 설립된 국제연합전문기구",
"value": "중고딕", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (업사이클링)/② 글씨체 (중고딕)" "item": "문구 (유네스코)/② 글씨체 (궁서)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "이미 쓸모없거나 버려지는 자원을 재활용해 새로운 가치를 부여하는 것을 의미함", "searchValue": "교육, 과학, 문화의 보급 및 교류를 통하여 국가 간의 협력 증진을 목적으로 설립된 국제연합전문기구",
"value": "900", "value": "900",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (업사이클링)/③ 크기 (9pt)" "item": "문구 (유네스코)/③ 크기 (9pt)"
}, },
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "이미 쓸모없거나 버려지는 자원을 재활용해 새로운 가치를 부여하는 것을 의미함", "searchValue": "교육, 과학, 문화의 보급 및 교류를 통하여 국가 간의 협력 증진을 목적으로 설립된 국제연합전문기구",
"value": "CircledIdeograph", "value": "UserChar",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
@@ -579,81 +579,81 @@
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Upcycling')])", "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Upcycling", "ignoreWord": "Development",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Upcycling/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Development/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [ "word": [
["차원", "次元"], ["평생", "平生"],
["사례", "事例"], ["교육", "敎育"],
["주목", "注目"], ["신념", "信念"],
["소비", "消費"], ["현장", "現場"],
["명장", "名匠"] ["자격", "資格"]
], ],
"value": 10, "value": 10,
"points": 10, "points": 10,
"category": "Hanja", "category": "Hanja",
"item": "① 차원(次元), ② 사례(事例), ③ 주목(注目), ④ 소비(消費), ⑤ 명장(名匠)" "item": "① 평생(平生), ② 교육(敎育), ③ 신념(信念), ④ 현장(現場), ⑤ 자격(資格)"
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'국인관광')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'하는사람')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (...활성화되면서 관광객과 외국인 일반...)>'관광객과 / 외국인' 순서바꿈" "item": "문구 (…어느 하나에 사람에게 해당하는 평생교육사의…)>'사람에게' / '해당하는' 순서바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'예품등이')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'21과목이다')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (...디지털 아트 공예품 통이...)>'' → '' 글자바꿈" "item": "문구 (…총 21종목이다…)>'' → '' 글자바꿈"
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "전통 공예 산업 성장률(단위: %)", "searchValue": "평생교육사 자격증 발급(단위: )",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (전통 공예 산업 성장률(단위: %))/① 글씨체 (돋움)" "item": "제목 문구 (평생교육사 자격증 발급(단위: ))/① 글씨체 (돋움)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "전통 공예 산업 성장률(단위: %)", "searchValue": "평생교육사 자격증 발급(단위: )",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통 공예 산업 성장률(단위: %))/② 크기 (1200)" "item": "제목 문구 (평생교육사 자격증 발급(단위: ))/② 크기 (1200)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "전통 공예 산업 성장률(단위: %)", "searchValue": "평생교육사 자격증 발급(단위: )",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (전통 공예 산업 성장률(단위: %))/③ 진하게" "item": "제목 문구 (평생교육사 자격증 발급(단위: ))/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "전통 공예 산업 성장률(단위: %)", "searchValue": "평생교육사 자격증 발급(단위: )",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통 공예 산업 성장률(단위: %))/④ 정렬 (가운데 정렬)" "item": "제목 문구 (평생교육사 자격증 발급(단위: ))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "138,194,217", "value": "233,174,43",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:138,194,217)" "item": "위쪽 제목 셀/① 색상(RGB:233,174,43)"
}, },
"38": { "38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -714,11 +714,11 @@
}, },
"45": { "45": {
"chart_xpath": "", "chart_xpath": "",
"chart_type": "표식만 있는 분산형", "chart_type": "묶은 세로 막대형",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "ChartType", "category": "ChartType",
"item": "① 종류 (표식만 있는 분산형)", "item": "① 종류 (묶은 세로 막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
}, },
"46": { "46": {
@@ -753,28 +753,28 @@
}, },
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "전통 공예 산업 성장률(단위: %)", "searchValue": "평생교육사 자격증 발급",
"value": "굴림", "value": "바탕체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통 공예 산업 성장률(단위: %))/① 글씨체 (굴림)" "item": "제목 문구 (평생교육사 자격증 발급)/① 글씨체 (바탕체)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "전통 공예 산업 성장률(단위: %)", "searchValue": "평생교육사 자격증 발급",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통 공예 산업 성장률(단위: %))/② 크기 (1300)" "item": "제목 문구 (평생교육사 자격증 발급)/② 크기 (1300)"
}, },
"52": { "52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b", "option": "b",
"searchValue": "전통 공예 산업 성장률(단위: %)", "searchValue": "평생교육사 자격증 발급",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통 공예 산업 성장률(단위: %))/③ 기울임", "item": "제목 문구 (평생교육사 자격증 발급)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {

View File

@@ -55,19 +55,19 @@
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "전통주페어링특강안내", "searchValue": "전통주페어링특강안내",
"value": "187,57,49", "value": "28,145,110",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (전통주페어링특강안내)/② 채우기 : 색상(RGB:187,57,49)" "item": "문구 (전통주페어링특강안내)/② 채우기 : 색상(RGB:28,145,110)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "전통주페어링특강안내", "searchValue": "전통주페어링특강안내",
"value": "110", "value": "120",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (전통주페어링특강안내)/③ 크기-너비 (110 mm)" "item": "문구 (전통주페어링특강안내)/③ 크기-너비 (120 mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
@@ -117,18 +117,18 @@
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "혼", "searchValue": "혼",
"value": "중고딕", "value": "돋움체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "어/② 글씨체 (중고딕)" "item": "어/② 글씨체 (돋움체)"
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "혼", "searchValue": "혼",
"value": "252,231,95", "value": "250,167,83",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "어/③ 면색 : 색상(RGB:252,231,95)" "item": "어/③ 면색 : 색상(RGB:250,167,83)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
@@ -141,19 +141,19 @@
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "전통주는 단순히 전통만 고집하는 오래된 것이 아니라는 것", "searchValue": "한식에 가장 잘 어울리는 전통주를 추천",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (전통주는 단순히 전통만 고집하는 오래된 것이 아니라는 것)/① BOLD" "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/① BOLD"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "전통주는 단순히 전통만 고집하는 오래된 것이 아니라는 것", "searchValue": "한식에 가장 잘 어울리는 전통주를 추천",
"value": "UNDERLINE", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (전통주는 단순히 전통만 고집하는 오래된 것이 아니라는 것)/② UNDERLINE" "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/② UNDERLINE"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
@@ -170,10 +170,10 @@
"15": { "15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내", "searchValue": "행사안내",
"value": "굴림체", "value": "중고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (★ 행사안내 ★)/① 글씨체 (굴림체)" "item": "문구 (★ 행사안내 ★)/① 글씨체 (중고딕)"
}, },
"16": { "16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
@@ -186,49 +186,49 @@
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 11월 23일(일) 18:00까지 온라인으로 등록(http://www.ihd.or.kr)", "searchValue": "서울 목동 현대백화점 요리실 1호, 2호, 3호",
"value": "ITALIC", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (2025년 11월 23일(일) 18:00까지 온라인으로 등록(http://www.ihd.or.kr))/① ITALIC" "item": "문구 (서울 목동 현대백화점 요리실 1호, 2호, 3호)/① BOLD"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 11월 23일(일) 18:00까지 온라인으로 등록(http://www.ihd.or.kr)", "searchValue": "서울 목동 현대백화점 요리실 1호, 2호, 3호",
"value": "UNDERLINE", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (2025년 11월 23일(일) 18:00까지 온라인으로 등록(http://www.ihd.or.kr))/② UNDERLINE" "item": "문구 (서울 목동 현대백화점 요리실 1호, 2호, 3호)/② ITALIC"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "기타사항", "searchValue": "기타사항",
"value": { "value": {
"Left": 12, "Left": 10,
"Indent": 14 "Indent": 12
}, },
"points": 2, "points": 2,
"category": "ParaShape", "category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (12), 내어쓰기 (14)", "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 11. 22.", "searchValue": "2026. 03. 28.",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 11. 22.)/① 크기 (1300)", "item": "문구 (2026. 03. 28.)/① 크기 (1300)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 11. 22.", "searchValue": "2026. 03. 28.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 11. 22.)/② 정렬 (가운데 정렬)" "item": "문구 (2026. 03. 28.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
@@ -367,10 +367,10 @@
}, },
"4": { "4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "60", "value": "55",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (한국의 전통주)/① 크기-너비 (60 mm)" "item": "문구 (한국의 전통주)/① 크기-너비 (55 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
@@ -395,15 +395,15 @@
"value": "20", "value": "20",
"points": 2, "points": 2,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (한국의 전통주)/④ 글상자 모서리 (반원)", "item": "문구 (한국의 전통주)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20" "desc": "모서리 비율 반원:50 / 둥근모양:20"
}, },
"8": { "8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "53,135,145", "value": "119,214,225",
"points": 2, "points": 2,
"category": "Rectangle.Color", "category": "Rectangle.Color",
"item": "문구 (한국의 전통주)/⑤ 채우기 : 색상(RGB:53,135,145)" "item": "문구 (한국의 전통주)/⑤ 채우기 : 색상(RGB:119,214,225)"
}, },
"9": { "9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
@@ -421,10 +421,10 @@
}, },
"11": { "11": {
"path": ".//RECTANGLE//TEXT/@CharShape", "path": ".//RECTANGLE//TEXT/@CharShape",
"value": "궁서", "value": "궁서",
"points": 1, "points": 1,
"category": "Rectangle.FontName", "category": "Rectangle.FontName",
"item": "문구 (한국의 전통주)/⑧ 글씨체 (궁서)" "item": "문구 (한국의 전통주)/⑧ 글씨체 (궁서)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height", "path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
@@ -446,15 +446,15 @@
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "① 파일명 \"그림B.jpg\" 삽입", "item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)" "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
}, },
"15": { "15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "85", "value": "80",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "② 크기-너비 (85 mm)" "item": "② 크기-너비 (80 mm)"
}, },
"16": { "16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
@@ -537,10 +537,10 @@
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "밀레니얼 세대와 Z세대를 통틀어 지칭하는 신조어", "searchValue": "밀레니얼 세대와 Z세대를 통틀어 지칭하는 신조어",
"value": "바탕체", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (MZ세대)/② 글씨체 (바탕체)" "item": "문구 (MZ세대)/② 글씨체 (굴림)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
@@ -553,9 +553,9 @@
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "밀레니얼 세대와 Z세대를 통틀어 지칭하는 신조어", "searchValue": "밀레니얼 세대와 Z세대를 통틀어 지칭하는 신조어",
"value": "UserChar", "value": "CircledHangulJamo",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "PageNumber",
"item": "문구 (전당)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
"desc": { "desc": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
@@ -579,13 +579,13 @@
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Paradigm')])", "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Paradigm", "ignoreWord": "Paradigm",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Paradigm/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Paradigm/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": ""
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
@@ -602,11 +602,11 @@
"item": "① 양조(釀造), ② 노동자(勞動者), ③ 문인(文人), ④ 백주(白酒), ⑤ 음미(吟味)" "item": "① 양조(釀造), ② 노동자(勞動者), ③ 문인(文人), ④ 백주(白酒), ⑤ 음미(吟味)"
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'있는술을')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'에도막걸')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…즐길 수 있게 술을 찾아 마시는 것이…)>'' → '' 글자바꿈" "item": "문구 (…문인(文人)들의 문집에토 막걸리로…)>'' → '' 글자바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'하는문화')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'하는문화')])",
@@ -617,35 +617,35 @@
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "연도별 전통주 산업(단위:억원)", "searchValue": "월평균 주종별 음주(단위:%)",
"value": "돋움체", "value": "돋움체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (연도별 전통주 산업(단위:억원))/① 글씨체 (돋움체)" "item": "제목 문구 (월평균 주종별 음주(단위:%))/① 글씨체 (돋움체)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "연도별 전통주 산업(단위:억원)", "searchValue": "월평균 주종별 음주(단위:%)",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연도별 전통주 산업(단위:억원))/② 크기 (1200)" "item": "제목 문구 (월평균 주종별 음주(단위:%))/② 크기 (1200)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "연도별 전통주 산업(단위:억원)", "searchValue": "월평균 주종별 음주(단위:%)",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (연도별 전통주 산업(단위:억원))/③ 진하게" "item": "제목 문구 (월평균 주종별 음주(단위:%))/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "연도별 전통주 산업(단위:억원)", "searchValue": "월평균 주종별 음주(단위:%)",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연도별 전통주 산업(단위:억원))/④ 정렬 (가운데 정렬)" "item": "제목 문구 (월평균 주종별 음주(단위:%))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
@@ -704,8 +704,8 @@
"item": "글자모양/③ 정렬 (가운데 정렬)" "item": "글자모양/③ 정렬 (가운데 정렬)"
}, },
"44": { "44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "AVG", "option": "SUM",
"value": true, "value": true,
"points": 4, "points": 4,
"category": "Boolean", "category": "Boolean",
@@ -714,11 +714,11 @@
}, },
"45": { "45": {
"chart_xpath": "", "chart_xpath": "",
"chart_type": "누적 세로 막대형", "chart_type": "곡선이 있는 분산형",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "ChartType", "category": "ChartType",
"item": "① 종류 (누적 세로 막대형)", "item": "① 종류 (곡선이 있는 분산형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
}, },
"46": { "46": {
@@ -753,36 +753,36 @@
}, },
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "연도별 전통주 산업", "searchValue": "월평균 주종별 음주",
"value": "굴림체", "value": "궁서",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연도별 전통주 산업)/① 글씨체 (굴림체)" "item": "제목 문구 (월평균 주종별 음주)/① 글씨체 (궁서)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "연도별 전통주 산업", "searchValue": "월평균 주종별 음주",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연도별 전통주 산업)/② 크기 (1300)" "item": "제목 문구 (월평균 주종별 음주)/② 크기 (1300)"
}, },
"52": { "52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b", "option": "b",
"searchValue": "연도별 전통주 산업", "searchValue": "월평균 주종별 음주",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연도별 전통주 산업)/③ 기울임", "item": "제목 문구 (월평균 주종별 음주)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface | //c:catAx/c:txPr//a:latin/@typeface",
"value": "바탕", "value": "맑은 고딕",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "X축/① 글꼴 (바탕)" "item": "X축/① 글꼴 (맑은 고딕)"
}, },
"54": { "54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
@@ -801,11 +801,11 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"56": { "56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface | //c:valAx/c:txPr//a:latin/@typeface",
"value": "바탕", "value": "맑은 고딕",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (바탕)" "item": "Y축/① 글꼴 (맑은 고딕)"
}, },
"57": { "57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
@@ -824,11 +824,11 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"59": { "59": {
"chart_xpath": "//c:legend//a:ea/@typeface", "chart_xpath": "//c:legend//a:ea/@typeface | //c:legend//a:latin/@typeface",
"value": "바탕", "value": "맑은 고딕",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "범례/① 글꼴 (바탕)" "item": "범례/① 글꼴 (맑은 고딕)"
}, },
"60": { "60": {
"chart_xpath": "//c:legend//a:defRPr/@sz", "chart_xpath": "//c:legend//a:defRPr/@sz",

850
JSON/2603/DIW_2603B.json Normal file
View File

@@ -0,0 +1,850 @@
{
"0": {
"0": {
"path": "",
"path2": "",
"points": 0,
"category": "파일저장",
"item": "파일명 (수검번호.hwp/hwpx)"
},
"1": {
"path": "//PAGEMARGIN",
"value": {
"Top": 20,
"Bottom": 20,
"Left": 20,
"Right": 20,
"Header": 10,
"Footer": 10,
"Gutter": 0
},
"tolerance": 1,
"points": 4,
"category": "PageSetting",
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
},
"2": {
"path": "",
"value": {
"FontName": "바탕",
"FontSize": "1000",
"Alignment": "Justify",
"LineSpacing": "160"
},
"points": 4,
"category": "BasicSetting",
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
},
"3": {
"path": "",
"value": null,
"points": 40,
"category": "오타감점",
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
}
},
"1": {
"1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "슬기로운미디어생활특강안내",
"value": "돋움체",
"points": 1,
"category": "OneAnswer",
"item": "문구 (슬기로운미디어생활특강안내)/① 글씨체 (돋움체)"
},
"2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "슬기로운미디어생활특강안내",
"value": "146,44,137",
"points": 2,
"category": "Color",
"item": "문구 (슬기로운미디어생활특강안내)/② 채우기 : 색상(RGB:146,44,137)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "슬기로운미디어생활특강안내",
"value": "130",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (슬기로운미디어생활특강안내)/③ 크기-너비 (130 mm)"
},
"4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "슬기로운미디어생활특강안내",
"value": "20",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (슬기로운미디어생활특강안내)/④ 크기-높이 (20 mm)"
},
"5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "슬기로운미디어생활특강안내",
"value": "true",
"points": 2,
"category": "OneAnswer",
"item": "문구 (슬기로운미디어생활특강안내)/⑤ 위치 (글자처럼 취급)"
},
"6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "슬기로운미디어생활특강안내",
"value": "Center",
"points": 2,
"category": "OneAnswer",
"item": "문구 (슬기로운미디어생활특강안내)/⑥ 정렬 (가운데 정렬)"
},
"7": {
"path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "슬기로운미디어생활특강안내",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (슬기로운미디어생활특강안내)/⑦ 글맵시모양 (육안확인)"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "이",
"value": {
"Height": 2800,
"Width": 2800
},
"tolerance": 200,
"points": 1,
"category": "TwoLineSize",
"item": "어/① 모양 (2줄)"
},
"9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "이",
"value": "궁서",
"points": 1,
"category": "FontName",
"item": "어/② 글씨체 (궁서)"
},
"10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "이",
"value": "172,235,62",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:172,235,62)"
},
"11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "이",
"value": "3.0",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "어/④ 본문과의 간격 : 3.0mm"
},
"12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "동영상 콘텐츠의 현재와 미래",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (동영상 콘텐츠의 현재와 미래)/① ITALIC"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "동영상 콘텐츠의 현재와 미래",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (동영상 콘텐츠의 현재와 미래)/② UNDERLINE"
},
"14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "◎",
"char2": "◎",
"char3": "※",
"value": 3,
"points": 3,
"category": "SpecialChar",
"item": "① ◎, ② ◎, ③ ※"
},
"15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내",
"value": "맑은 고딕",
"points": 1,
"category": "FontName",
"item": "문구 (◎ 행사안내 ◎)/① 글씨체 (맑은 고딕)"
},
"16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "행사안내",
"value": "Center",
"points": 1,
"category": "Align",
"item": "문구 (◎ 행사안내 ◎)/② 정렬 (가운데 정렬)"
},
"17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활)/① BOLD"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활)/② ITALIC"
},
"19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "기타사항",
"value": {
"Left": 15,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2026. 03. 28.",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2026. 03. 28.)/① 크기 (1300)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2026. 03. 28.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2026. 03. 28.)/② 정렬 (가운데 정렬)"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "중랑미디어센터",
"value": "휴먼옛체",
"points": 1,
"category": "FontName",
"item": "문구 (중랑미디어센터)/① 글씨체 (휴먼옛체)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "중랑미디어센터",
"value": "2300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (중랑미디어센터)/② 크기 (2300)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "중랑미디어센터",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (중랑미디어센터)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "중고딕",
"points": 1,
"category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (중고딕)"
},
"26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "RomanCapital",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (I,II,III 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomLeft",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight",
"왼쪽 아래": "BottomLeft"
}
},
"30": {
"path": "//CHAR[contains(text(),'{searchValue}')]",
"searchValue": "http",
"value": true,
"points": 2,
"category": "hyperlink",
"item": "문구 (http://www.ihd.or.kr)/하이퍼링크 없이 작성",
"desc": "searchValue에 해당하는 주소 문구에 하이퍼링크가 하나라도 설정되어 있으면 오답"
},
"31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "190",
"first_word": "이",
"points": 2,
"category": "LineSpacing",
"item": "문제 1 줄간격 190% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
}
},
"2": {
"1": {
"path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside",
"path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]",
"value": {
"header_inside": true,
"all_double_slim": true
},
"points": 4,
"category": "PageBorder",
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
},
"2": {
"path": "count(//SECTION)>1",
"value": true,
"points": 3,
"category": "Boolean",
"item": "① 구역나누기",
"desc": "섹션이 1개 이상이면 점수부여"
},
"3": {
"path": "./TEXT/COLDEF/@Count",
"value": "2",
"points": 3,
"category": "TwoColumn",
"item": "② 다단 2단"
},
"4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "60",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (방송 콘텐츠)/① 크기-너비 (60 mm)"
},
"5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (방송 콘텐츠)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE//LINESHAPE",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "Rectangle.LineShape",
"item": "문구 (방송 콘텐츠)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE/@Ratio",
"value": "50",
"points": 2,
"category": "Rectangle.OneAnswer",
"item": "문구 (방송 콘텐츠)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "227,220,193",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (방송 콘텐츠)/⑤ 채우기 : 색상(RGB:227,220,193)"
},
"9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true",
"points": 1,
"category": "Rectangle.OneAnswer",
"item": "문구 (방송 콘텐츠)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (방송 콘텐츠)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": ".//RECTANGLE//TEXT/@CharShape",
"value": "견고딕",
"points": 1,
"category": "Rectangle.FontName",
"item": "문구 (방송 콘텐츠)/⑧ 글씨체 (견고딕)"
},
"12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "2000",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (방송 콘텐츠)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id={rect_parashape_id}]/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (방송 콘텐츠)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림B.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "24",
"points": 2,
"category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)"
},
"19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 최근 콘텐츠 동향",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구① (1. 최근 콘텐츠 동향)/① 글씨체 (돋움)"
},
"20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 최근 콘텐츠 동향",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구① (1. 최근 콘텐츠 동향)/② 크기 (1200)"
},
"21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 최근 콘텐츠 동향",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구① (1. 최근 콘텐츠 동향)/③ 진하게"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. OTT 서비스의 미래",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구② (2. OTT 서비스의 미래)/① 글씨체 (돋움)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. OTT 서비스의 미래",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구② (2. OTT 서비스의 미래)/② 크기 (1200)"
},
"24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. OTT 서비스의 미래",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구② (2. OTT 서비스의 미래)/③ 진하게"
},
"25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "코로나",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (코로나)/① 각주 설정 및 문구 입력"
},
"26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "새로운 유형의 바이러스에 의한 급성 호흡기 전염병",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구 (코로나)/② 글씨체 (중고딕)"
},
"27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "새로운 유형의 바이러스에 의한 급성 호흡기 전염병",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (코로나)/③ 크기 (9pt)"
},
"28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "새로운 유형의 바이러스에 의한 급성 호흡기 전염병",
"value": "DecagonCircle",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Streaming",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Streaming/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
},
"30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [
["시청", "視聽"],
["송출", "送出"],
["취향", "趣向"],
["성장", "成長"],
["근절", "根絶"]
],
"value": 10,
"points": 10,
"category": "Hanja",
"item": "① 시청(視聽), ② 송출(送出), ③ 취향(趣向), ④ 성장(成長), ⑤ 근절(根絶)"
},
"31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'간에원하')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…언제든지 원하는 원하는 시간에 순서로…)>'원하는' / '시간에' 순서바꿈"
},
"32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'수익구조')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…이익구조가 열악하다.…)>'이' → '수' 글자바꿈"
},
"33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "동영상 플랫폼 이용률(%)",
"value": "굴림체",
"points": 1,
"category": "FontName",
"item": "제목 문구 (동영상 플랫폼 이용률(%))/① 글씨체 (굴림체)"
},
"34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "동영상 플랫폼 이용률(%)",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (동영상 플랫폼 이용률(%))/② 크기 (1200)"
},
"35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "동영상 플랫폼 이용률(%)",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "제목 문구 (동영상 플랫폼 이용률(%))/③ 진하게"
},
"36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "동영상 플랫폼 이용률(%)",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (동영상 플랫폼 이용률(%))/④ 정렬 (가운데 정렬)"
},
"37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "95,229,218",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:95,229,218)"
},
"38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "위쪽 제목 셀/② 진하게",
"desc": "글자 속성이라 CELLZONE으로 적용 되지 않음"
},
"39": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type",
"value": "DoubleSlim",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/① 이중실선"
},
"40": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width",
"value": "0.5mm",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/② 0.5mm"
},
"41": {
"path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "궁서체",
"points": 1,
"category": "TableFontName",
"category_tmp": "FontName",
"item": "글자모양/① 글씨체 (궁서체)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
},
"42": {
"path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
"value": "1000",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/② 크기 (1000)"
},
"43": {
"path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
"value": "Center",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/③ 정렬 (가운데 정렬)"
},
"44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "AVG",
"value": true,
"points": 4,
"category": "Boolean",
"item": "블록 계산식/합계",
"desc": "option값에 합계는 SUM / 평균은 AVG"
},
"45": {
"chart_xpath": "",
"chart_type": "묶은 세로 막대형",
"value": true,
"points": 2,
"category": "ChartType",
"item": "① 종류 (묶은 세로 막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
},
"46": {
"chart_xpath": "//c:valAx/c:majorTickMark/@val",
"value": "out",
"points": 2,
"category": "ChartOneAnswer",
"item": "② 값 축 주 눈금선",
"desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
},
"47": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "③ 크기-너비 (80 mm)"
},
"48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "90",
"points": 2,
"category": "mmSize",
"item": "④ 크기-높이 (90 mm)"
},
"49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
"value": true,
"points": 2,
"category": "Boolean",
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
"desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "동영상 플랫폼 이용률",
"value": "굴림",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (동영상 플랫폼 이용률)/① 글씨체 (굴림)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "동영상 플랫폼 이용률",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (동영상 플랫폼 이용률)/② 크기 (1400)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b",
"searchValue": "동영상 플랫폼 이용률",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (동영상 플랫폼 이용률)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface | //c:catAx/c:txPr//a:latin/@typeface",
"value": "바탕체",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/① 글꼴 (바탕체)"
},
"54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/② 크기 (9pt)"
},
"55": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface | //c:valAx/c:txPr//a:latin/@typeface",
"value": "바탕체",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (바탕체)"
},
"57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/② 크기 (9pt)"
},
"58": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"59": {
"chart_xpath": "//c:legend//a:ea/@typeface | //c:legend//a:latin/@typeface",
"value": "바탕체",
"points": 1,
"category": "OneAnswer",
"item": "범례/① 글꼴 (바탕체)"
},
"60": {
"chart_xpath": "//c:legend//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "범례/② 크기 (9pt)"
},
"61": {
"chart_xpath": "//c:legend//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "범례/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}
}
}

View File

@@ -46,61 +46,61 @@
"1": { "1": {
"1": { "1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "전통된장만들기체험교실", "searchValue": "천혜의비경철쭉",
"value": "맑은 고딕", "value": "맑은고딕",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전통된장만들기체험교실)/① 글씨체 (맑은 고딕)" "item": "문구 (천혜의비경철쭉)/① 글씨체 (맑은고딕)"
}, },
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "전통된장만들기체험교실", "searchValue": "천혜의비경철쭉",
"value": "153,51,102", "value": "23,48,108",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (전통된장만들기체험교실)/② 채우기 : 색상(RGB:153,51,102)" "item": "문구 (천혜의비경철쭉)/② 채우기 : 색상(RGB:23,48,108)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "전통된장만들기체험교실", "searchValue": "천혜의비경철쭉",
"value": "120", "value": "110",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (전통된장만들기체험교실)/③ 크기-너비 (120 mm)" "item": "문구 (천혜의비경철쭉)/③ 크기-너비 (120 mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "전통된장만들기체험교실", "searchValue": "천혜의비경철쭉",
"value": "20", "value": "20",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (전통된장만들기체험교실)/④ 크기-높이 (20 mm)" "item": "문구 (천혜의비경철쭉)/④ 크기-높이 (20 mm)"
}, },
"5": { "5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "전통된장만들기체험교실", "searchValue": "천혜의비경철쭉",
"value": "true", "value": "true",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전통된장만들기체험교실)/⑤ 위치 (글자처럼 취급)" "item": "문구 (천혜의비경철쭉)/⑤ 위치 (글자처럼 취급)"
}, },
"6": { "6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "전통된장만들기체험교실", "searchValue": "천혜의비경철쭉",
"value": "Center", "value": "Center",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전통된장만들기체험교실)/⑥ 정렬 (가운데 정렬)" "item": "문구 (천혜의비경철쭉)/⑥ 정렬 (가운데 정렬)"
}, },
"7": { "7": {
"path": "//TEXTART[@Text='{searchValue}']", "path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "전통된장만들기체험교실", "searchValue": "천혜의비경철쭉",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (전통된장만들기체험교실)/⑦ 글맵시모양 (육안확인)" "item": "문구 (슬기로운국제사진공모전)/⑦ 글맵시모양 (육안확인)"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
@@ -117,18 +117,18 @@
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "전", "searchValue": "전",
"value": "돋움체", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "어/② 글씨체 (돋움체)" "item": "어/② 글씨체 (굴림)"
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "전", "searchValue": "전",
"value": "83,246,225", "value": "237,134,232",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "어/③ 면색 : 색상(RGB:83,246,225)" "item": "어/③ 면색 : 색상(RGB:237,134,232)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
@@ -141,65 +141,65 @@
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "전통된장 만들기 체험교실", "searchValue": "바래봉 해발 약 500m에서 시작해 점점 정상으로",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (전통된장 만들기 체험교실)/① BOLD" "item": "문구 (바래봉 해발 약 500m에서 시작해 점점 정상으로)/① BOLD"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "전통된장 만들기 체험교실", "searchValue": "바래봉 해발 약 500m에서 시작해 점점 정상으로",
"value": "ITALIC", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (전통된장 만들기 체험교실)/② ITALIC" "item": "문구 (바래봉 해발 약 500m에서 시작해 점점 정상으로)/② ITALIC"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "", "char1": "",
"char2": "", "char2": "",
"char3": "※", "char3": "※",
"value": 3, "value": 3,
"points": 3, "points": 3,
"category": "SpecialChar", "category": "SpecialChar",
"item": "① , ② , ③ ※" "item": "① , ② , ③ ※"
}, },
"15": { "15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "체험안내", "searchValue": "참여안내",
"value": "굴림체", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (★ 체험안내 )/① 글씨체 (굴림체)" "item": "문구 (● 참여안내 )/① 글씨체 (궁서)"
}, },
"16": { "16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "체험안내", "match_str": "참여안내",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Align", "category": "Align",
"item": "문구 (★ 체험안내 )/② 정렬 (가운데 정렬)" "item": "문구 (● 참여안내 )/② 정렬 (가운데 정렬)"
}, },
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "초등학생 자녀를 둔 학부모 30명(자녀 2인까지 동반 가능", "searchValue": "홈페이지(http://www.ihd.or.kr) 참고",
"value": "ITALIC", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (초등학생 자녀를 둔 학부모 30명(자녀 2인까지 동반 가능)/① ITALIC" "item": "문구 (홈페이지(http://www.ihd.or.kr) 참고)/① ITALIC"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "초등학생 자녀를 둔 학부모 30명(자녀 2인까지 동반 가능", "searchValue": "홈페이지(http://www.ihd.or.kr) 참고",
"value": "UNDERLINE", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (초등학생 자녀를 둔 학부모 30명(자녀 2인까지 동반 가능)/② UNDERLINE" "item": "문구 (홈페이지(http://www.ihd.or.kr) 참고)/② UNDERLINE"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
@@ -215,44 +215,44 @@
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 11. 22.", "searchValue": "2026. 03. 28.",
"value": "1400", "value": "1400",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 11. 22.)/① 크기 (1400)", "item": "문구 (2026. 03. 28.)/① 크기 (1400)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 11. 22.", "searchValue": "2026. 03. 28.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 11. 22.)/② 정렬 (가운데 정렬)" "item": "문구 (2026. 03. 28.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "전통음식관광협회", "searchValue": "운봉바래봉철쭉제",
"value": "견고딕", "value": "궁서체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (전통음식관광협회)/① 글씨체 (견고딕)" "item": "문구 (운봉바래봉철쭉제)/① 글씨체 (궁서체)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "전통음식관광협회", "searchValue": "운봉바래봉철쭉제",
"value": "2400", "value": "2600",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전통음식관광협회)/② 크기 (2400)" "item": "문구 (운봉바래봉철쭉제)/② 크기 (2600)"
}, },
"24": { "24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "전통음식관광협회", "searchValue": "운봉바래봉철쭉제",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전통음식관광협회)/③ 정렬 (가운데 정렬)" "item": "문구 (운봉바래봉철쭉제)/③ 정렬 (가운데 정렬)"
}, },
"25": { "25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
@@ -283,7 +283,7 @@
"value": "LatinCapital", "value": "LatinCapital",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)", "item": "① 쪽 번호 매기기 (I,II,III 순으로)",
"desc1": { "desc1": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
"1,2,3": "Digit", "1,2,3": "Digit",
@@ -308,7 +308,7 @@
}, },
"29": { "29": {
"path": "//PAGENUM/@Pos", "path": "//PAGENUM/@Pos",
"value": "BottomLeft", "value": "BottomRight",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "왼쪽 아래", "item": "왼쪽 아래",
@@ -330,7 +330,7 @@
}, },
"31": { "31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "180", "value": "200",
"first_word": "전", "first_word": "전",
"points": 2, "points": 2,
"category": "LineSpacing", "category": "LineSpacing",
@@ -367,17 +367,17 @@
}, },
"4": { "4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "60", "value": "50",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (된장의 역사와 종류)/① 크기-너비 (60 mm)" "item": "문구 (철쭉과 진달래)/① 크기-너비 (50 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12", "value": "12",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (된장의 역사와 종류)/② 크기-높이 (12 mm)" "item": "문구 (철쭉과 진달래)/② 크기-높이 (12 mm)"
}, },
"6": { "6": {
"path": "//RECTANGLE//LINESHAPE", "path": "//RECTANGLE//LINESHAPE",
@@ -387,51 +387,51 @@
}, },
"points": 2, "points": 2,
"category": "Rectangle.LineShape", "category": "Rectangle.LineShape",
"item": "문구 (된장의 역사와 종류)/③ 테두리 : 이중 실선(1.00mm)", "item": "문구 (철쭉과 진달래)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력" "desc": "1mm = 283pt value['Width']에 pt값 입력"
}, },
"7": { "7": {
"path": "//RECTANGLE/@Ratio", "path": "//RECTANGLE/@Ratio",
"value": "50", "value": "20",
"points": 2, "points": 2,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (된장의 역사와 종류)/④ 글상자 모서리 (반원)", "item": "문구 (철쭉과 진달래)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20" "desc": "모서리 비율 반원:50 / 둥근모양:20"
}, },
"8": { "8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "247,227,169", "value": "247,226,144",
"points": 2, "points": 2,
"category": "Rectangle.Color", "category": "Rectangle.Color",
"item": "문구 (된장의 역사와 종류)/⑤ 채우기 : 색상(RGB:247,227,169)" "item": "문구 (철쭉과 진달래)/⑤ 채우기 : 색상(RGB:247,226,144)"
}, },
"9": { "9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true", "value": "true",
"points": 1, "points": 1,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (된장의 역사와 종류)/⑥ 글상자 위치 (글자처럼 취급)" "item": "문구 (철쭉과 진달래)/⑥ 글상자 위치 (글자처럼 취급)"
}, },
"10": { "10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align", "path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (된장의 역사와 종류)/⑦ 글상자 정렬 (가운데 정렬)" "item": "문구 (철쭉과 진달래)/⑦ 글상자 정렬 (가운데 정렬)"
}, },
"11": { "11": {
"path": ".//RECTANGLE//TEXT/@CharShape", "path": ".//RECTANGLE//TEXT/@CharShape",
"value": "궁서체", "value": "굴림체",
"points": 1, "points": 1,
"category": "Rectangle.FontName", "category": "Rectangle.FontName",
"item": "문구 (된장의 역사와 종류)/⑧ 글씨체 (궁서체)" "item": "문구 (철쭉과 진달래)/⑧ 글씨체 (굴림체)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height", "path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "1700", "value": "1800",
"points": 1, "points": 1,
"category": "Rectangle.FontSize", "category": "Rectangle.FontSize",
"item": "문구 (된장의 역사와 종류)/⑨ 글씨크기 (1700)", "item": "문구 (철쭉과 진달래)/⑨ 글씨크기 (1800)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"13": { "13": {
@@ -439,14 +439,14 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (된장의 역사와 종류)/⑩ 정렬 (가운데 정렬)" "item": "문구 (철쭉과 진달래)/⑩ 정렬 (가운데 정렬)"
}, },
"14": { "14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']", "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "① 파일명 \"그림D.jpg\" 삽입", "item": "① 파일명 \"그림C.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)" "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
}, },
"15": { "15": {
@@ -479,81 +479,81 @@
}, },
"19": { "19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 된장의 역사", "searchValue": "1. 철쭉의 특징",
"value": "굴림", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구① (1. 된장의 역사)/① 글씨체 (굴림)" "item": "문구① (1. 철쭉의 특징)/① 글씨체 (궁서)"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 된장의 역사", "searchValue": "1. 철쭉의 특징",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구① (1. 된장의 역사)/② 크기 (1200)" "item": "문구① (1. 철쭉의 특징)/② 크기 (1200)"
}, },
"21": { "21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 된장의 역사", "searchValue": "1. 철쭉의 특징",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구① (1. 된장의 역사)/③ 진하게" "item": "문구① (1. 철쭉의 특징)/③ 진하게"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 된장의 종류", "searchValue": "2. 봄의 전령 진달래",
"value": "굴림", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구② (2. 된장의 종류)/① 글씨체 (굴림)" "item": "문구② (2. 봄의 전령 진달래)/① 글씨체 (궁서)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 된장의 종류", "searchValue": "2. 봄의 전령 진달래",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구② (2. 된장의 종류)/② 크기 (1200)" "item": "문구② (2. 봄의 전령 진달래)/② 크기 (1200)"
}, },
"24": { "24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 된장의 종류", "searchValue": "2. 봄의 전령 진달래",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구② (2. 된장의 종류)/③ 진하게" "item": "문구② (2. 사진 산업의 가치)/③ 진하게"
}, },
"25": { "25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "절구", "option": "거름",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (절구)/① 각주 설정 및 문구 입력" "item": "문구 (거름)/① 각주 설정 및 문구 입력"
}, },
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "곡식을 빻거나 찧으며 떡을 치기도 하는 기구", "searchValue": "땅을 기름지게 하기 위해 사용하는 유기물질",
"value": "돋움", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (절구)/② 글씨체 (돋움)" "item": "문구 (거름)/② 글씨체 (굴림)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "곡식을 빻거나 찧으며 떡을 치기도 하는 기구", "searchValue": "땅을 기름지게 하기 위해 사용하는 유기물질",
"value": "900", "value": "900",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (절구)/③ 크기 (9pt)" "item": "문구 (거름)/③ 크기 (9pt)"
}, },
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "곡식을 빻거나 찧으며 떡을 치기도 하는 기구", "searchValue": "땅을 기름지게 하기 위해 사용하는 유기물질",
"value": "CircledDigit", "value": "Ideograph",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
@@ -579,81 +579,81 @@
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Fermentation')])", "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Fermentation", "ignoreWord": "Breeding",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Fermentation/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Breeding/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [ "word": [
["기록", "記錄"], ["생육", "生育"],
["추정", "推定"], ["유년", "幼年"],
["속성", "速成"], ["허기", "虛飢"],
["단점", "短點"], ["풍류", "風流"],
["숙성", "熟成"] ["식물", "植物"]
], ],
"value": 10, "value": 10,
"points": 10, "points": 10,
"category": "Hanja", "category": "Hanja",
"item": "① 기록(記錄), ② 추정(推定), ③ 속성(速成), ④ 단점(短點), ⑤ 숙성(熟成)" "item": "① 생육(生育), ② 유년(幼年), ③ 허기(虛飢), ④ 풍류(風流), ⑤ 식물(植物)"
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'장의제조')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'지를잘라')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…된장에 제조를…)>'' 글자바꿈" "item": "문구 (…새로 나온 가지가 잘라…)>'' 글자바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'크게다르')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'보다참꽃')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…메주와 다르며 크게…)>'다르며 / 크게' 순서바꿈" "item": "문구 (…참꽃나무란 진달래보다 이름에 더…)>'참꽃나무란 / 진달래보다' 순서바꿈"
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "전통된장 총매출(단위 : 억원)", "searchValue": "철쭉 관광객 현황(단위 : 천 명)",
"value": "바탕체", "value": "돋움체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (전통된장 총매출(단위 : 억원))/① 글씨체 (바탕체)" "item": "제목 문구 (철쭉 관광객 현황(단위 : 천 명))/① 글씨체 (돋움체)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "전통된장 총매출(단위 : 억원)", "searchValue": "철쭉 관광객 현황(단위 : 천 명)",
"value": "1100", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통된장 총매출(단위 : 억원))/② 크기 (1100)" "item": "제목 문구 (철쭉 관광객 현황(단위 : 천 명))/② 크기 (1200)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "전통된장 총매출(단위 : 억원)", "searchValue": "철쭉 관광객 현황(단위 : 천 명)",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (전통된장 총매출(단위 : 억원))/③ 진하게" "item": "제목 문구 (철쭉 관광객 현황(단위 : 천 명))/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "전통된장 총매출(단위 : 억원)", "searchValue": "철쭉 관광객 현황(단위 : 천 명)",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통된장 총매출(단위 : 억원))/④ 정렬 (가운데 정렬)" "item": "제목 문구 (연령별 축제 만족도(단위:%))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "212,131,154", "value": "160,221,234",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:212,131,154)" "item": "위쪽 제목 셀/① 색상(RGB:160,221,234)"
}, },
"38": { "38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -682,11 +682,11 @@
"41": { "41": {
"path": "//TABLE//TEXT/@CharShape", "path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "돋움체", "value": "중고딕",
"points": 1, "points": 1,
"category": "TableFontName", "category": "TableFontName",
"category_tmp": "FontName", "category_tmp": "FontName",
"item": "글자모양/① 글씨체 (돋움체)", "item": "글자모양/① 글씨체 (중고딕)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
}, },
"42": { "42": {
@@ -704,8 +704,8 @@
"item": "글자모양/③ 정렬 (가운데 정렬)" "item": "글자모양/③ 정렬 (가운데 정렬)"
}, },
"44": { "44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "SUM", "option": "AVG",
"value": true, "value": true,
"points": 4, "points": 4,
"category": "Boolean", "category": "Boolean",
@@ -714,11 +714,11 @@
}, },
"45": { "45": {
"chart_xpath": "", "chart_xpath": "",
"chart_type": "묶은 가로 막대형", "chart_type": "누적 세로 막대형",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "ChartType", "category": "ChartType",
"item": "① 종류 (묶은 가로 막대형)", "item": "① 종류 (누적 세로 막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
}, },
"46": { "46": {
@@ -753,36 +753,36 @@
}, },
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "전통된장 총매출", "searchValue": "철쭉 관광객 현황",
"value": "궁서", "value": "휴먼옛체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통된장 총매출)/① 글씨체 (궁서)" "item": "제목 문구 (철쭉 관광객 현황)/① 글씨체 (휴먼옛체)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "전통된장 총매출", "searchValue": "철쭉 관광객 현황",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통된장 총매출)/② 크기 (1300)" "item": "제목 문구 (철쭉 관광객 현황)/② 크기 (1300)"
}, },
"52": { "52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b", "option": "b",
"searchValue": "전통된장 총매출", "searchValue": "철쭉 관광객 현황",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (전통된장 총매출)/③ 기울임", "item": "제목 문구 (철쭉 관광객 현황)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface | //c:catAx/c:txPr//a:latin/@typeface",
"value": "바탕", "value": "돋움",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "X축/① 글꼴 (바탕)" "item": "X축/① 글꼴 (돋움)"
}, },
"54": { "54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
@@ -801,11 +801,11 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"56": { "56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface | //c:valAx/c:txPr//a:latin/@typeface",
"value": "바탕", "value": "돋움",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (바탕)" "item": "Y축/① 글꼴 (돋움)"
}, },
"57": { "57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
@@ -824,11 +824,11 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"59": { "59": {
"chart_xpath": "//c:legend//a:ea/@typeface", "chart_xpath": "//c:legend//a:ea/@typeface | //c:legend//a:latin/@typeface",
"value": "바탕", "value": "돋움",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "범례/① 글꼴 (바탕)" "item": "범례/① 글꼴 (돋움)"
}, },
"60": { "60": {
"chart_xpath": "//c:legend//a:defRPr/@sz", "chart_xpath": "//c:legend//a:defRPr/@sz",

850
JSON/2604/DIW_2604A.json Normal file
View File

@@ -0,0 +1,850 @@
{
"0": {
"0": {
"path": "",
"path2": "",
"points": 0,
"category": "파일저장",
"item": "파일명 (수검번호.hwp/hwpx)"
},
"1": {
"path": "//PAGEMARGIN",
"value": {
"Top": 20,
"Bottom": 20,
"Left": 20,
"Right": 20,
"Header": 10,
"Footer": 10,
"Gutter": 0
},
"tolerance": 1,
"points": 4,
"category": "PageSetting",
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
},
"2": {
"path": "",
"value": {
"FontName": "바탕",
"FontSize": "1000",
"Alignment": "Justify",
"LineSpacing": "160"
},
"points": 4,
"category": "BasicSetting",
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
},
"3": {
"path": "",
"value": null,
"points": 40,
"category": "오타감점",
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
}
},
"1": {
"1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "디지털노마드창업자모집",
"value": "휴먼옛체",
"points": 1,
"category": "OneAnswer",
"item": "문구 (디지털노마드창업자모집)/① 글씨체 (휴먼옛체)"
},
"2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "디지털노마드창업자모집",
"value": "202,86,167",
"points": 2,
"category": "Color",
"item": "문구 (디지털노마드창업자모집)/② 채우기 : 색상(RGB:202,86,167)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "디지털노마드창업자모집",
"value": "120",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (디지털노마드창업자모집)/③ 크기-너비 (120 mm)"
},
"4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "디지털노마드창업자모집",
"value": "20",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (디지털노마드창업자모집)/④ 크기-높이 (20 mm)"
},
"5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "디지털노마드창업자모집",
"value": "true",
"points": 2,
"category": "OneAnswer",
"item": "문구 (디지털노마드창업자모집)/⑤ 위치 (글자처럼 취급)"
},
"6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "디지털노마드창업자모집",
"value": "Center",
"points": 2,
"category": "OneAnswer",
"item": "문구 (디지털노마드창업자모집)/⑥ 정렬 (가운데 정렬)"
},
"7": {
"path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "디지털노마드창업자모집",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (디지털노마드창업자모집)/⑦ 글맵시모양 (육안확인)"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "서",
"value": {
"Height": 2800,
"Width": 2800
},
"tolerance": 200,
"points": 1,
"category": "TwoLineSize",
"item": "어/① 모양 (2줄)"
},
"9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "서",
"value": "궁서체",
"points": 1,
"category": "FontName",
"item": "어/② 글씨체 (궁서체)"
},
"10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "서",
"value": "238,219,98",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:238,219,98)"
},
"11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "서",
"value": "3.0",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "어/④ 본문과의 간격 : 3.0mm"
},
"12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "디지털노마드 형태의 근무와 창업에 관심 있는 분들의",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/① BOLD"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "디지털노마드 형태의 근무와 창업에 관심 있는 분들의",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/② UNDERLINE"
},
"14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "◎",
"char2": "◎",
"char3": "※",
"value": 3,
"points": 3,
"category": "SpecialChar",
"item": "① ◎ , ② ◎ , ③ ※"
},
"15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "참여안내",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구 (◎ 참여안내 ◎)/① 글씨체 (돋움)"
},
"16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "참여안내",
"value": "Center",
"points": 1,
"category": "Align",
"item": "문구 (◎ 참여안내 ◎)/② 정렬 (가운데 정렬)"
},
"17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "서면심사 및 대면심사",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (서면심사 및 대면심사)/① BOLD"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "서면심사 및 대면심사",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (서면심사 및 대면심사)/② ITALIC"
},
"19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "기타사항",
"value": {
"Left": 15,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2026. 04. 25.",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2026. 04. 25.)/① 크기 (1300)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2026. 04. 25.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2026. 04. 25.)/② 정렬 (가운데 정렬)"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "디지털노마드센터",
"value": "굴림체",
"points": 1,
"category": "FontName",
"item": "문구 (디지털노마드센터)/① 글씨체 (굴림체)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "디지털노마드센터",
"value": "2500",
"points": 1,
"category": "OneAnswer",
"item": "문구 (디지털노마드센터)/② 크기 (2500)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "디지털노마드센터",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (디지털노마드센터)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "굴림",
"points": 1,
"category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (굴림)"
},
"26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "HangulSyllable",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomCenter",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight",
"왼쪽 아래": "BottomLeft"
}
},
"30": {
"path": "//CHAR[contains(text(),'{searchValue}')]",
"searchValue": "http",
"value": true,
"points": 2,
"category": "hyperlink",
"item": "문구 (http://www.ihd.or.kr)/하이퍼링크 없이 작성",
"desc": "searchValue에 해당하는 주소 문구에 하이퍼링크가 하나라도 설정되어 있으면 오답"
},
"31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "190",
"first_word": "서",
"points": 2,
"category": "LineSpacing",
"item": "문제 1 줄간격 190% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
}
},
"2": {
"1": {
"path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside",
"path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]",
"value": {
"header_inside": true,
"all_double_slim": true
},
"points": 4,
"category": "PageBorder",
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
},
"2": {
"path": "count(//SECTION)>1",
"value": true,
"points": 3,
"category": "Boolean",
"item": "① 구역나누기",
"desc": "섹션이 1개 이상이면 점수부여"
},
"3": {
"path": "./TEXT/COLDEF/@Count",
"value": "2",
"points": 3,
"category": "TwoColumn",
"item": "② 다단 2단"
},
"4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "60",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (디지털노마드)/① 크기-너비 (60 mm)"
},
"5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (디지털노마드)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE//LINESHAPE",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "Rectangle.LineShape",
"item": "문구 (디지털노마드)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE/@Ratio",
"value": "50",
"points": 2,
"category": "Rectangle.OneAnswer",
"item": "문구 (디지털노마드)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "192,205,239",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (디지털노마드)/⑤ 채우기 : 색상(RGB:192,205,239)"
},
"9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true",
"points": 1,
"category": "Rectangle.OneAnswer",
"item": "문구 (디지털노마드)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (디지털노마드)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": ".//RECTANGLE//TEXT/@CharShape",
"value": "견고딕",
"points": 1,
"category": "Rectangle.FontName",
"item": "문구 (디지털노마드)/⑧ 글씨체 (견고딕)"
},
"12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "1900",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (디지털노마드)/⑨ 글씨크기 (1900)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id={rect_parashape_id}]/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (디지털노마드)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "85",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (85 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "22",
"points": 2,
"category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)"
},
"19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 디지털노마드란?",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구① (1. 디지털노마드란?)/① 글씨체 (돋움)"
},
"20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 디지털노마드란?",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구① (1. 디지털노마드란?)/② 크기 (1200)"
},
"21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 디지털노마드란?",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구① (1. 디지털노마드란?)/③ 진하게"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 디지털노마드의 장단점",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구② (2. 디지털노마드의 장단점)/① 글씨체 (돋움)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 디지털노마드의 장단점",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구② (2. 디지털노마드의 장단점)/② 크기 (1200)"
},
"24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 디지털노마드의 장단점",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구② (2. 디지털노마드의 장단점)/③ 진하게"
},
"25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "공유오피스",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (공유오피스)/① 각주 설정 및 문구 입력"
},
"26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "함께 사용할 수 있는 사무공간",
"value": "돋움체",
"points": 1,
"category": "FontName",
"item": "문구 (공유오피스)/② 글씨체 (돋움체)"
},
"27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "함께 사용할 수 있는 사무공간",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (공유오피스)/③ 크기 (9pt)"
},
"28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "함께 사용할 수 있는 사무공간",
"value": "UserChar",
"points": 2,
"category": "PageNumber",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Digital",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Digital/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": ""
},
"30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [
["원격", "遠隔"],
["환경", "環境"],
["문화", "文化"],
["형성", "形成"],
["부여", "附與"]
],
"value": 10,
"points": 10,
"category": "Hanja",
"item": "① 원격(遠隔), ② 환경(環境), ③ 문화(文化), ④ 형성(形成), ⑤ 부여(附與)"
},
"31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'소에구애')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…기기를 활용해 장소는 구애받지 않고…)>'는' → '에' 글자바꿈"
},
"32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'무나원격')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…원격근무를 재택근무나 하는 사람들을 말한다.…)>'원격근무를 / 재택근무나' 순서바꿈"
},
"33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "전 세계 디지털노마드 추이(단위:만명)",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "제목 문구 (전 세계 디지털노마드 추이(단위:만명))/① 글씨체 (중고딕)"
},
"34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "전 세계 디지털노마드 추이(단위:만명)",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (전 세계 디지털노마드 추이(단위:만명))/② 크기 (1200)"
},
"35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "전 세계 디지털노마드 추이(단위:만명)",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "제목 문구 (전 세계 디지털노마드 추이(단위:만명))/③ 진하게"
},
"36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "전 세계 디지털노마드 추이(단위:만명)",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (전 세계 디지털노마드 추이(단위:만명))/④ 정렬 (가운데 정렬)"
},
"37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "175,232,239",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:175,232,239)"
},
"38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "위쪽 제목 셀/② 진하게",
"desc": "글자 속성이라 CELLZONE으로 적용 되지 않음"
},
"39": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type",
"value": "DoubleSlim",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/① 이중실선"
},
"40": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width",
"value": "0.5mm",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/② 0.5mm"
},
"41": {
"path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "바탕체",
"points": 1,
"category": "TableFontName",
"category_tmp": "FontName",
"item": "글자모양/① 글씨체 (바탕체)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
},
"42": {
"path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
"value": "1000",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/② 크기 (1000)"
},
"43": {
"path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
"value": "Center",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/③ 정렬 (가운데 정렬)"
},
"44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "SUM",
"value": true,
"points": 4,
"category": "Boolean",
"item": "블록 계산식/합계",
"desc": "option값에 합계는 SUM / 평균은 AVG"
},
"45": {
"chart_xpath": "",
"chart_type": "곡선이 있는 분산형",
"value": true,
"points": 2,
"category": "ChartType",
"item": "① 종류 (곡선이 있는 분산형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
},
"46": {
"chart_xpath": "//c:valAx/c:majorTickMark/@val",
"value": "out",
"points": 2,
"category": "ChartOneAnswer",
"item": "② 값 축 주 눈금선",
"desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
},
"47": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "③ 크기-너비 (80 mm)"
},
"48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "90",
"points": 2,
"category": "mmSize",
"item": "④ 크기-높이 (90 mm)"
},
"49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
"value": true,
"points": 2,
"category": "Boolean",
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
"desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "전 세계 디지털노마드 추이",
"value": "궁서",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (전 세계 디지털노마드 추이)/① 글씨체 (궁서)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "전 세계 디지털노마드 추이",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (전 세계 디지털노마드 추이)/② 크기 (1300)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b",
"searchValue": "전 세계 디지털노마드 추이",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (전 세계 디지털노마드 추이)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface | //c:catAx/c:txPr//a:latin/@typeface",
"value": "굴림체",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/① 글꼴 (굴림체)"
},
"54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/② 크기 (9pt)"
},
"55": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface | //c:valAx/c:txPr//a:latin/@typeface",
"value": "굴림체",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (굴림체)"
},
"57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/② 크기 (9pt)"
},
"58": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"59": {
"chart_xpath": "//c:legend//a:ea/@typeface | //c:legend//a:latin/@typeface",
"value": "굴림체",
"points": 1,
"category": "OneAnswer",
"item": "범례/① 글꼴 (굴림체)"
},
"60": {
"chart_xpath": "//c:legend//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "범례/② 크기 (9pt)"
},
"61": {
"chart_xpath": "//c:legend//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "범례/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}
}
}

View File

@@ -46,65 +46,65 @@
"1": { "1": {
"1": { "1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "청소년창작음악페스티벌", "searchValue": "세계문화체험페스티벌",
"value": "궁서체", "value": "굴림",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (청소년창작음악페스티벌)/① 글씨체 (궁서체)" "item": "문구 (세계문화체험페스티벌)/① 글씨체 (굴림)"
}, },
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "청소년창작음악페스티벌", "searchValue": "세계문화체험페스티벌",
"value": "48,117,97", "value": "28,61,98",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (청소년창작음악페스티벌)/② 채우기 : 색상(RGB:48,117,97)" "item": "문구 (세계문화체험페스티벌)/② 채우기 : 색상(RGB:28,61,98)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "청소년창작음악페스티벌", "searchValue": "세계문화체험페스티벌",
"value": "110", "value": "130",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (청소년창작음악페스티벌)/③ 크기-너비 (110 mm)" "item": "문구 (세계문화체험페스티벌)/③ 크기-너비 (130 mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "청소년창작음악페스티벌", "searchValue": "세계문화체험페스티벌",
"value": "20", "value": "20",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (청소년창작음악페스티벌)/④ 크기-높이 (20 mm)" "item": "문구 (세계문화체험페스티벌)/④ 크기-높이 (20 mm)"
}, },
"5": { "5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "청소년창작음악페스티벌", "searchValue": "세계문화체험페스티벌",
"value": "true", "value": "true",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (청소년창작음악페스티벌)/⑤ 위치 (글자처럼 취급)" "item": "문구 (세계문화체험페스티벌)/⑤ 위치 (글자처럼 취급)"
}, },
"6": { "6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "청소년창작음악페스티벌", "searchValue": "세계문화체험페스티벌",
"value": "Center", "value": "Center",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (청소년창작음악페스티벌)/⑥ 정렬 (가운데 정렬)" "item": "문구 (세계문화체험페스티벌)/⑥ 정렬 (가운데 정렬)"
}, },
"7": { "7": {
"path": "//TEXTART[@Text='{searchValue}']", "path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "청소년창작음악페스티벌", "searchValue": "세계문화체험페스티벌",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (전통주페어링특강안내)/⑦ 글맵시모양 (육안확인)" "item": "문구 (세계문화체험페스티벌)/⑦ 글맵시모양 (육안확인)"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "", "searchValue": "",
"value": { "value": {
"Height": 2800, "Height": 2800,
"Width": 2800 "Width": 2800
@@ -116,23 +116,23 @@
}, },
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "", "searchValue": "",
"value": "굴림체", "value": "맑은 고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "어/② 글씨체 (굴림체)" "item": "어/② 글씨체 (맑은 고딕)"
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "", "searchValue": "",
"value": "248,132,58", "value": "245,132,58",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "어/③ 면색 : 색상(RGB:248,132,58)" "item": "어/③ 면색 : 색상(RGB:245,132,58)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "", "searchValue": "",
"value": "3.0", "value": "3.0",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
@@ -141,39 +141,39 @@
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "행사의 주제는 ‘음악, 꿈을 노래하다’", "searchValue": "전통 공연, 의상 체험, 음식 시식, 공예 체험",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (행사의 주제는 ‘음악, 꿈을 노래하다’)/① BOLD" "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/① BOLD"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "행사의 주제는 ‘음악, 꿈을 노래하다’", "searchValue": "전통 공연, 의상 체험, 음식 시식, 공예 체험",
"value": "UNDERLINE", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (행사의 주제는 ‘음악, 꿈을 노래하다’)/② UNDERLINE" "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/② ITALIC"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "", "char1": "",
"char2": "", "char2": "",
"char3": "※", "char3": "※",
"value": 3, "value": 3,
"points": 3, "points": 3,
"category": "SpecialChar", "category": "SpecialChar",
"item": "① , ② , ③ ※" "item": "① , ② , ③ ※"
}, },
"15": { "15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내", "searchValue": "행사안내",
"value": "중고딕", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 ( 행사안내 )/① 글씨체 (중고딕)" "item": "문구 ( 행사안내 )/① 글씨체 (궁서)"
}, },
"16": { "16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
@@ -181,25 +181,25 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Align", "category": "Align",
"item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)" "item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)"
}, },
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "자세한 내용은 홈페이지(http://www.ihd.or.kr)에서 확인", "searchValue": "2026년 5월 1일(금) 18:00까지 온라인으로 등록(http://www.ihd.or.kr)",
"value": "BOLD", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (자세한 내용은 홈페이지(http://www.ihd.or.kr)에서 확인)/① BOLD" "item": "문구 (2026년 5월 1일(금) 18:00까지 온라인으로 등록(http://www.ihd.or.kr))/① BOLD"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "자세한 내용은 홈페이지(http://www.ihd.or.kr)에서 확인", "searchValue": "2026년 5월 1일(금) 18:00까지 온라인으로 등록(http://www.ihd.or.kr)",
"value": "ITALIC", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (자세한 내용은 홈페이지(http://www.ihd.or.kr)에서 확인)/② ITALIC" "item": "문구 (2026년 5월 1일(금) 18:00까지 온라인으로 등록(http://www.ihd.or.kr))/② UNDERLINE"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
@@ -215,52 +215,52 @@
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 12. 20.", "searchValue": "2026. 04. 25.",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/① 크기 (1300)", "item": "문구 (2026. 04. 25.)/① 크기 (1300)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 12. 20.", "searchValue": "2026. 04. 25.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/② 정렬 (가운데 정렬)" "item": "문구 (2026. 04. 25.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "청소년 창작 음악 사무국", "searchValue": "세계도시문화축제협회",
"value": "돋움", "value": "견고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (청소년 창작 음악 사무국)/① 글씨체 (돋움)" "item": "문구 (세계도시문화축제협회)/① 글씨체 (견고딕)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "청소년 창작 음악 사무국", "searchValue": "세계도시문화축제협회",
"value": "2700", "value": "2500",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (청소년 창작 음악 사무국)/② 크기 (2700)" "item": "문구 (세계도시문화축제협회)/② 크기 (2500)"
}, },
"24": { "24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "청소년 창작 음악 사무국", "searchValue": "세계도시문화축제협회",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (청소년 창작 음악 사무국)/③ 정렬 (가운데 정렬)" "item": "문구 (한국대학교육협의회)/③ 정렬 (가운데 정렬)"
}, },
"25": { "25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT", "searchValue": "DIAT",
"value": "굴림", "value": "중고딕",
"points": 1, "points": 1,
"category": "Header.FontName", "category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (굴림)" "item": "문구 (DIAT)/① 글꼴 (중고딕)"
}, },
"26": { "26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
@@ -280,7 +280,7 @@
}, },
"28": { "28": {
"path": "//PAGENUM/@FormatType", "path": "//PAGENUM/@FormatType",
"value": "HangulSyllable", "value": "RomanSmall",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)", "item": "① 쪽 번호 매기기 (가,나,다 순으로)",
@@ -331,7 +331,7 @@
"31": { "31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "180", "value": "180",
"first_word": "", "first_word": "",
"points": 2, "points": 2,
"category": "LineSpacing", "category": "LineSpacing",
"item": "문제 1 줄간격 180% 설정", "item": "문제 1 줄간격 180% 설정",
@@ -367,17 +367,17 @@
}, },
"4": { "4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "60", "value": "65",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (청소년 음악 창작)/① 크기-너비 (60 mm)" "item": "문구 (글로벌 문화 교류)/① 크기-너비 (65 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12", "value": "12",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (청소년 음악 창작)/② 크기-높이 (12 mm)" "item": "문구 (글로벌 문화 교류)/② 크기-높이 (12 mm)"
}, },
"6": { "6": {
"path": "//RECTANGLE//LINESHAPE", "path": "//RECTANGLE//LINESHAPE",
@@ -387,7 +387,7 @@
}, },
"points": 2, "points": 2,
"category": "Rectangle.LineShape", "category": "Rectangle.LineShape",
"item": "문구 (청소년 음악 창작)/③ 테두리 : 이중 실선(1.00mm)", "item": "문구 (글로벌 문화 교류)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력" "desc": "1mm = 283pt value['Width']에 pt값 입력"
}, },
"7": { "7": {
@@ -395,43 +395,43 @@
"value": "20", "value": "20",
"points": 2, "points": 2,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (청소년 음악 창작)/④ 글상자 모서리 (반원)", "item": "문구 (글로벌 문화 교류)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20" "desc": "모서리 비율 반원:50 / 둥근모양:20"
}, },
"8": { "8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "53,135,145", "value": "199,231,245",
"points": 2, "points": 2,
"category": "Rectangle.Color", "category": "Rectangle.Color",
"item": "문구 (청소년 음악 창작)/⑤ 채우기 : 색상(RGB:53,135,145)" "item": "문구 (글로벌 문화 교류)/⑤ 채우기 : 색상(RGB:199,231,245)"
}, },
"9": { "9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true", "value": "true",
"points": 1, "points": 1,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (청소년 음악 창작)/⑥ 글상자 위치 (글자처럼 취급)" "item": "문구 (글로벌 문화 교류)/⑥ 글상자 위치 (글자처럼 취급)"
}, },
"10": { "10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align", "path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (청소년 음악 창작)/⑦ 글상자 정렬 (가운데 정렬)" "item": "문구 (글로벌 문화 교류)/⑦ 글상자 정렬 (가운데 정렬)"
}, },
"11": { "11": {
"path": ".//RECTANGLE//TEXT/@CharShape", "path": ".//RECTANGLE//TEXT/@CharShape",
"value": "궁서", "value": "궁서",
"points": 1, "points": 1,
"category": "Rectangle.FontName", "category": "Rectangle.FontName",
"item": "문구 (청소년 음악 창작)/⑧ 글씨체 (궁서)" "item": "문구 (글로벌 문화 교류)/⑧ 글씨체 (궁서)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height", "path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "2000", "value": "2000",
"points": 1, "points": 1,
"category": "Rectangle.FontSize", "category": "Rectangle.FontSize",
"item": "문구 (청소년 음악 창작)/⑨ 글씨크기 (2000)", "item": "문구 (글로벌 문화 교류)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"13": { "13": {
@@ -439,7 +439,7 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (청소년 음악 창작)/⑩ 정렬 (가운데 정렬)" "item": "문구 (글로벌 문화 교류)/⑩ 정렬 (가운데 정렬)"
}, },
"14": { "14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']", "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
@@ -479,84 +479,84 @@
}, },
"19": { "19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 청소년 음악 창작", "searchValue": "1. 글로벌 문화 트렌드",
"value": "돋움체", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구① (1. 청소년 음악 창작)/① 글씨체 (돋움체)" "item": "문구① (1. 글로벌 문화 트렌드)/① 글씨체 (굴림)"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 청소년 음악 창작", "searchValue": "1. 글로벌 문화 트렌드",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구① (1. 청소년 음악 창작)/② 크기 (1200)" "item": "문구① (1. 글로벌 문화 트렌드)/② 크기 (1200)"
}, },
"21": { "21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 청소년 음악 창작", "searchValue": "1. 글로벌 문화 트렌드",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구① (1. 청소년 음악 창작)/③ 진하게" "item": "문구① (1. 글로벌 문화 트렌드)/③ 진하게"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 청소년 음악 산업", "searchValue": "2. 문화 산업의 가치",
"value": "돋움체", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구② (2. 청소년 음악 산업)/① 글씨체 (돋움체)" "item": "문구② (2. 문화 산업의 가치)/① 글씨체 (굴림)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 청소년 음악 산업", "searchValue": "2. 문화 산업의 가치",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구② (2. 청소년 음악 산업)/② 크기 (1200)" "item": "문구② (2. 문화 산업의 가치)/② 크기 (1200)"
}, },
"24": { "24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 청소년 음악 산업", "searchValue": "2. 문화 산업의 가치",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구② (2. 청소년 음악 산업)/③ 진하게" "item": "문구② (2. 문화 산업의 가치)/③ 진하게"
}, },
"25": { "25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "스트리밍", "option": "브랜드",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (스트리밍)/① 각주 설정 및 문구 입력" "item": "문구 (브랜드)/① 각주 설정 및 문구 입력"
}, },
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "인터넷에 연결된 장치에서 동영상이나 음악 등의 콘텐츠를 재생하는 기술을 의미함", "searchValue": "경제적인 생산자를 구별하는 지각된 이미지와 경험의 집합으로 상품이나 회사를 나타내는 상표임",
"value": "굴림", "value": "바탕체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (스트리밍)/② 글씨체 (굴림)" "item": "문구 (브랜드)/② 글씨체 (바탕체)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "인터넷에 연결된 장치에서 동영상이나 음악 등의 콘텐츠를 재생하는 기술을 의미함", "searchValue": "경제적인 생산자를 구별하는 지각된 이미지와 경험의 집합으로 상품이나 회사를 나타내는 상표임",
"value": "900", "value": "900",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (스트리밍)/③ 크기 (9pt)" "item": "문구 (브랜드)/③ 크기 (9pt)"
}, },
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "인터넷에 연결된 장치에서 동영상이나 음악 등의 콘텐츠를 재생하는 기술을 의미함", "searchValue": "경제적인 생산자를 구별하는 지각된 이미지와 경험의 집합으로 상품이나 회사를 나타내는 상표임",
"value": "CircledHangulJamo", "value": "DecagonCircleHanja",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "PageNumber",
"item": "문구 (스트리밍)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
"desc": { "desc": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
"1,2,3": "Digit", "1,2,3": "Digit",
@@ -579,81 +579,81 @@
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Artist')])", "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Artist", "ignoreWord": "Pandemic",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Artist/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Pandemic/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": ""
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [ "word": [
["작곡", "作曲"], ["문화", "文化"],
["유통", "流通"], ["인기", "人氣"],
["창작", "創作"], ["초월", "超越"],
["발표", "發表"], ["미식", "美食"],
["수익", "受益"] ["정부", "政府"]
], ],
"value": 10, "value": 10,
"points": 10, "points": 10,
"category": "Hanja", "category": "Hanja",
"item": "① 작곡(作曲), ② 유통(流通), ③ 창작(創作), ④ 발표(發表), ⑤ 수익(受益)" "item": "① 문화(文化), ② 인기(人氣), ③ 초월(超越), ④ 미식(美食), ⑤ 정부(政府)"
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'이고실험')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'전시,문화')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…벗어나 자율적이구 실험적인…)>'구' → '고' 글자바꿈" "item": "문구 (…온라인 문화 전시, 가상 체험, 디지털 공연 등이…)>'문화 / 전시,' 순서바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'로운기회')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'화를현대')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…뮤지션들에게도 기회가 새로운 열리고…)>'기회가 / 새로운' 순서바꿈" "item": "문구 (…전통문화는 현대적으로…)>'는 → 를' 글자바꿈"
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "청소년 음악 성장률(단위:%)", "searchValue": "문화 산업 시장 성장률(단위:%)",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (청소년 음악 성장률(단위:%))/① 글씨체 (돋움)" "item": "제목 문구 (문화 산업 시장 성장률(단위:%))/① 글씨체 (돋움)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "청소년 음악 성장률(단위:%)", "searchValue": "문화 산업 시장 성장률(단위:%)",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (청소년 음악 성장률(단위:%))/② 크기 (1200)" "item": "제목 문구 (문화 산업 시장 성장률(단위:%))/② 크기 (1200)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "청소년 음악 성장률(단위:%)", "searchValue": "문화 산업 시장 성장률(단위:%)",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (청소년 음악 성장률(단위:%))/③ 진하게" "item": "제목 문구 (문화 산업 시장 성장률(단위:%))/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "청소년 음악 성장률(단위:%)", "searchValue": "문화 산업 시장 성장률(단위:%)",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (청소년 음악 성장률(단위:%))/④ 정렬 (가운데 정렬)" "item": "제목 문구 (문화 산업 시장 성장률(단위:%))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "202,86,167", "value": "233,62,98",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:202,86,167)" "item": "위쪽 제목 셀/① 색상(RGB:233,62,98)"
}, },
"38": { "38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -704,7 +704,7 @@
"item": "글자모양/③ 정렬 (가운데 정렬)" "item": "글자모양/③ 정렬 (가운데 정렬)"
}, },
"44": { "44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "AVG", "option": "AVG",
"value": true, "value": true,
"points": 4, "points": 4,
@@ -714,11 +714,11 @@
}, },
"45": { "45": {
"chart_xpath": "", "chart_xpath": "",
"chart_type": "꺾은선형", "chart_type": "표식만 있는 분산형",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "ChartType", "category": "ChartType",
"item": "① 종류 (꺾은선형)", "item": "① 종류 (표식만 있는 분산형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
}, },
"46": { "46": {
@@ -753,36 +753,36 @@
}, },
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "청소년 음악 성장률(단위:%)", "searchValue": "문화 산업 시장 성장률(단위:%)",
"value": "맑은 고딕", "value": "굴림체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (청소년 음악 성장률(단위:%))/① 글씨체 (맑은 고딕)" "item": "제목 문구 (문화 산업 시장 성장률(단위:%))/① 글씨체 (굴림체)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "청소년 음악 성장률(단위:%)", "searchValue": "문화 산업 시장 성장률(단위:%)",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (청소년 음악 성장률(단위:%))/② 크기 (1300)" "item": "제목 문구 (문화 산업 시장 성장률(단위:%))/② 크기 (1300)"
}, },
"52": { "52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b", "option": "b",
"searchValue": "청소년 음악 성장률(단위:%)", "searchValue": "문화 산업 시장 성장률(단위:%)",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (청소년 음악 성장률(단위:%))/③ 기울임", "item": "제목 문구 (문화 산업 시장 성장률(단위:%))/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface | //c:catAx/c:txPr//a:latin/@typeface",
"value": "바탕", "value": "돋움",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "X축/① 글꼴 (바탕)" "item": "X축/① 글꼴 (돋움)"
}, },
"54": { "54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
@@ -801,11 +801,11 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"56": { "56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface | //c:valAx/c:txPr//a:latin/@typeface",
"value": "바탕", "value": "돋움",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (바탕)" "item": "Y축/① 글꼴 (돋움)"
}, },
"57": { "57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
@@ -824,11 +824,11 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"59": { "59": {
"chart_xpath": "//c:legend//a:ea/@typeface", "chart_xpath": "//c:legend//a:ea/@typeface | //c:legend//a:latin/@typeface",
"value": "바탕", "value": "돋움",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "범례/① 글꼴 (바탕)" "item": "범례/① 글꼴 (돋움)"
}, },
"60": { "60": {
"chart_xpath": "//c:legend//a:defRPr/@sz", "chart_xpath": "//c:legend//a:defRPr/@sz",

850
JSON/2604/DIW_2604C.json Normal file
View File

@@ -0,0 +1,850 @@
{
"0": {
"0": {
"path": "",
"path2": "",
"points": 0,
"category": "파일저장",
"item": "파일명 (수검번호.hwp/hwpx)"
},
"1": {
"path": "//PAGEMARGIN",
"value": {
"Top": 20,
"Bottom": 20,
"Left": 20,
"Right": 20,
"Header": 10,
"Footer": 10,
"Gutter": 0
},
"tolerance": 1,
"points": 4,
"category": "PageSetting",
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
},
"2": {
"path": "",
"value": {
"FontName": "바탕",
"FontSize": "1000",
"Alignment": "Justify",
"LineSpacing": "160"
},
"points": 4,
"category": "BasicSetting",
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
},
"3": {
"path": "",
"value": null,
"points": 40,
"category": "오타감점",
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
}
},
"1": {
"1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "인상파예술특별기획전",
"value": "휴먼명조",
"points": 1,
"category": "OneAnswer",
"item": "문구 (인상파예술특별기획전)/① 글씨체 (휴먼명조)"
},
"2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "인상파예술특별기획전",
"value": "95,172,34",
"points": 2,
"category": "Color",
"item": "문구 (인상파예술특별기획전)/② 채우기 : 색상(RGB:95,172,34)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "인상파예술특별기획전",
"value": "130",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (인상파예술특별기획전)/③ 크기-너비 (130 mm)"
},
"4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "인상파예술특별기획전",
"value": "20",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (인상파예술특별기획전)/④ 크기-높이 (20 mm)"
},
"5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "인상파예술특별기획전",
"value": "true",
"points": 2,
"category": "OneAnswer",
"item": "문구 (인상파예술특별기획전)/⑤ 위치 (글자처럼 취급)"
},
"6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "인상파예술특별기획전",
"value": "Center",
"points": 2,
"category": "OneAnswer",
"item": "문구 (인상파예술특별기획전)/⑥ 정렬 (가운데 정렬)"
},
"7": {
"path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "인상파예술특별기획전",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (대학교육정책포럼)/⑦ 글맵시모양 (육안확인)"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "빛",
"value": {
"Height": 2800,
"Width": 2800
},
"tolerance": 200,
"points": 1,
"category": "TwoLineSize",
"item": "어/① 모양 (2줄)"
},
"9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "빛",
"value": "맑은 고딕",
"points": 1,
"category": "FontName",
"item": "어/② 글씨체 (맑은 고딕)"
},
"10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "빛",
"value": "244,82,29",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:244,82,29)"
},
"11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "빛",
"value": "3.0",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "어/④ 본문과의 간격 : 3.0mm"
},
"12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "인상파 미술에 대한 깊이 있는 이해를 도와드립니다.",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/① ITALIC"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "인상파 미술에 대한 깊이 있는 이해를 도와드립니다.",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/② UNDERLINE"
},
"14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "◉",
"char2": "◉",
"char3": "※",
"value": 3,
"points": 3,
"category": "SpecialChar",
"item": "① ◉ , ② ◉ , ③ ※"
},
"15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "전시정보",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구 (◉ 전시정보 ◉)/① 글씨체 (돋움)"
},
"16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "전시정보",
"value": "Center",
"points": 1,
"category": "Align",
"item": "문구 (◉ 전시정보 ◉)/② 정렬 (가운데 정렬)"
},
"17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "나만의 키링 만들기 체험",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (나만의 키링 만들기 체험)/① BOLD"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "나만의 키링 만들기 체험",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (나만의 키링 만들기 체험)/② ITALIC"
},
"19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "기타사항",
"value": {
"Left": 15,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2026. 04. 25.",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2026. 04. 25.)/① 크기 (1300)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2026. 04. 25.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2026. 04. 25.)/② 정렬 (가운데 정렬)"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "성남오아시스예술센터",
"value": "돋움체",
"points": 1,
"category": "FontName",
"item": "문구 (성남오아시스예술센터)/① 글씨체 (돋움체)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "성남오아시스예술센터",
"value": "2600",
"points": 1,
"category": "OneAnswer",
"item": "문구 (성남오아시스예술센터)/② 크기 (2600)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "성남오아시스예술센터",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (성남오아시스예술센터)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "굴림",
"points": 1,
"category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (굴림)"
},
"26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "HangulSyllable",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomRight",
"points": 2,
"category": "PageNumber",
"item": "오른쪽 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight",
"왼쪽 아래": "BottomLeft"
}
},
"30": {
"path": "//CHAR[contains(text(),'{searchValue}')]",
"searchValue": "http",
"value": true,
"points": 2,
"category": "hyperlink",
"item": "문구 (http://www.ihd.or.kr)/하이퍼링크 없이 작성",
"desc": "searchValue에 해당하는 주소 문구에 하이퍼링크가 하나라도 설정되어 있으면 오답"
},
"31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "200",
"first_word": "빛",
"points": 2,
"category": "LineSpacing",
"item": "문제 1 줄간격 200% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
}
},
"2": {
"1": {
"path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside",
"path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]",
"value": {
"header_inside": true,
"all_double_slim": true
},
"points": 4,
"category": "PageBorder",
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
},
"2": {
"path": "count(//SECTION)>1",
"value": true,
"points": 3,
"category": "Boolean",
"item": "① 구역나누기",
"desc": "섹션이 1개 이상이면 점수부여"
},
"3": {
"path": "./TEXT/COLDEF/@Count",
"value": "2",
"points": 3,
"category": "TwoColumn",
"item": "② 다단 2단"
},
"4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "50",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (인상주의)/① 크기-너비 (50 mm)"
},
"5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (인상주의)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE//LINESHAPE",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "Rectangle.LineShape",
"item": "문구 (인상주의)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE/@Ratio",
"value": "50",
"points": 2,
"category": "Rectangle.OneAnswer",
"item": "문구 (인상주의)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "245,177,248",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (인상주의)/⑤ 채우기 : 색상(RGB:245,177,248)"
},
"9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true",
"points": 1,
"category": "Rectangle.OneAnswer",
"item": "문구 (인상주의)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (인상주의)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": ".//RECTANGLE//TEXT/@CharShape",
"value": "견고딕",
"points": 1,
"category": "Rectangle.FontName",
"item": "문구 (인상주의)/⑧ 글씨체 (견고딕)"
},
"12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "2200",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (인상주의)/⑨ 글씨크기 (2200)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id={rect_parashape_id}]/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (인상주의)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림C.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "85",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (85 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "22",
"points": 2,
"category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)"
},
"19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 인상주의란?",
"value": "돋움체",
"points": 1,
"category": "FontName",
"item": "문구① (1. 인상주의란?)/① 글씨체 (중고딕)"
},
"20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 인상주의란?",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구① (1. 인상주의란?)/② 크기 (1200)"
},
"21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 인상주의란?",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구① (1. 인상주의란?)/③ 진하게"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 인상파 화가",
"value": "돋움체",
"points": 1,
"category": "FontName",
"item": "문구② (2. 인상파 화가)/① 글씨체 (돋움체)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 인상파 화가",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구② (2. 인상파 화가)/② 크기 (1200)"
},
"24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 인상파 화가",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구② (2. 인상파 화가)/③ 진하게"
},
"25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "연작",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (연작)/① 각주 설정 및 문구 입력"
},
"26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "변화 포착을 위해 같은 풍경을 반복적으로 그림",
"value": "굴림체",
"points": 1,
"category": "FontName",
"item": "문구 (연작)/② 글씨체 (굴림체)"
},
"27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "변화 포착을 위해 같은 풍경을 반복적으로 그림",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (연작)/③ 크기 (9pt)"
},
"28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "변화 포착을 위해 같은 풍경을 반복적으로 그림",
"value": "CircledIdeograph",
"points": 2,
"category": "PageNumber",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Expression",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Expression/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": ""
},
"30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [
["규범", "規範"],
["관찰", "觀察"],
["화가", "畫家"],
["탐구", "探究"],
["여성", "女性"]
],
"value": 10,
"points": 10,
"category": "Hanja",
"item": "① 규범(規範), ② 관찰(觀察), ③ 화가(畫家), ④ 탐구(探究), ⑤ 여성(女性)"
},
"31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'화를가져')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…큰 변화를 갖져왔다.…)>'갖' → '가' 글자바꿈"
},
"32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'료로활용')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…문화 상품과 교육 활용되며 자료로 대중문화에도…)>'활용되며 / 자료로' 순서바꿈"
},
"33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "인상파 작품 소장 현황",
"value": "돋움체",
"points": 1,
"category": "FontName",
"item": "제목 문구 (인상파 작품 소장 현황)/① 글씨체 (돋움체)"
},
"34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "인상파 작품 소장 현황",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (인상파 작품 소장 현황)/② 크기 (1200)"
},
"35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "인상파 작품 소장 현황",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "제목 문구 (인상파 작품 소장 현황)/③ 진하게"
},
"36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "인상파 작품 소장 현황",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (인상파 작품 소장 현황(단위: 천 명))/④ 정렬 (가운데 정렬)"
},
"37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "84,207,228",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:84,207,228)"
},
"38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "위쪽 제목 셀/② 진하게",
"desc": "글자 속성이라 CELLZONE으로 적용 되지 않음"
},
"39": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type",
"value": "DoubleSlim",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/① 이중실선"
},
"40": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width",
"value": "0.5mm",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/② 0.5mm"
},
"41": {
"path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "중고딕",
"points": 1,
"category": "TableFontName",
"category_tmp": "FontName",
"item": "글자모양/① 글씨체 (중고딕)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
},
"42": {
"path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
"value": "1000",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/② 크기 (1000)"
},
"43": {
"path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
"value": "Center",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/③ 정렬 (가운데 정렬)"
},
"44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "SUM",
"value": true,
"points": 4,
"category": "Boolean",
"item": "블록 계산식/합계",
"desc": "option값에 합계는 SUM / 평균은 AVG"
},
"45": {
"chart_xpath": "",
"chart_type": "100% 기준 누적 세로 막대형",
"value": true,
"points": 2,
"category": "ChartType",
"item": "① 종류 (100% 기준 누적 세로 막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
},
"46": {
"chart_xpath": "//c:valAx/c:majorTickMark/@val",
"value": "out",
"points": 2,
"category": "ChartOneAnswer",
"item": "② 값 축 주 눈금선",
"desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
},
"47": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "③ 크기-너비 (80 mm)"
},
"48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "④ 크기-높이 (80 mm)"
},
"49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
"value": true,
"points": 2,
"category": "Boolean",
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
"desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "인상파 작품 소장 현황",
"value": "궁서체",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (인상파 작품 소장 현황)/① 글씨체 (궁서체)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "인상파 작품 소장 현황",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (인상파 작품 소장 현황)/② 크기 (1200)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b",
"searchValue": "인상파 작품 소장 현황",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (인상파 작품 소장 현황)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface | //c:catAx/c:txPr//a:latin/@typeface",
"value": "궁서",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/① 글꼴 (궁서)"
},
"54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/② 크기 (9pt)"
},
"55": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface | //c:valAx/c:txPr//a:latin/@typeface",
"value": "궁서",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (궁서)"
},
"57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/② 크기 (9pt)"
},
"58": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"59": {
"chart_xpath": "//c:legend//a:ea/@typeface | //c:legend//a:latin/@typeface",
"value": "궁서",
"points": 1,
"category": "OneAnswer",
"item": "범례/① 글꼴 (궁서)"
},
"60": {
"chart_xpath": "//c:legend//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "범례/② 크기 (9pt)"
},
"61": {
"chart_xpath": "//c:legend//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "범례/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}
}
}

View File

@@ -0,0 +1,840 @@
{
"0": {
"0": {
"path": "",
"path2": "",
"points": 0,
"category": "파일저장",
"item": "파일명 (수검번호.hwp/hwpx)"
},
"1": {
"path": "//PAGEMARGIN",
"value": {
"Top": 20,
"Bottom": 20,
"Left": 20,
"Right": 20,
"Header": 10,
"Footer": 10,
"Gutter": 0
},
"tolerance": 1,
"points": 4,
"category": "PageSetting",
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
},
"2": {
"path": "",
"value": {
"FontName": "바탕",
"FontSize": "1000",
"Alignment": "Justify",
"LineSpacing": "160"
},
"points": 4,
"category": "BasicSetting",
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
},
"3": {
"path": "",
"value": null,
"points": 40,
"category": "오타감점",
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
}
},
"1": {
"1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "소셜네트워킹전략컨퍼런스",
"value": "견고딕",
"points": 1,
"category": "OneAnswer",
"item": "문구 (소셜네트워킹전략컨퍼런스)/① 글씨체 (견고딕)"
},
"2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "소셜네트워킹전략컨퍼런스",
"value": "201,102,248",
"points": 2,
"category": "Color",
"item": "문구 (소셜네트워킹전략컨퍼런스)/② 채우기 : 색상(RGB:201,102,248)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "소셜네트워킹전략컨퍼런스",
"value": "120",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (소셜네트워킹전략컨퍼런스)/③ 크기-너비 (120 mm)"
},
"4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "소셜네트워킹전략컨퍼런스",
"value": "20",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (소셜네트워킹전략컨퍼런스)/④ 크기-높이 (20 mm)"
},
"5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "소셜네트워킹전략컨퍼런스",
"value": "true",
"points": 2,
"category": "OneAnswer",
"item": "문구 (소셜네트워킹전략컨퍼런스)/⑤ 위치 (글자처럼 취급)"
},
"6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "소셜네트워킹전략컨퍼런스",
"value": "Center",
"points": 2,
"category": "OneAnswer",
"item": "문구 (소셜네트워킹전략컨퍼런스)/⑥ 정렬 (가운데 정렬)"
},
"7": {
"path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "소셜네트워킹전략컨퍼런스",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (소셜네트워킹전략컨퍼런스)/⑦ 글맵시모양 (육안확인)"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "최",
"value": {
"Height": 2800,
"Width": 2800
},
"tolerance": 200,
"points": 1,
"category": "TwoLineSize",
"item": "어/① 모양 (2줄)"
},
"9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "최",
"value": "궁서",
"points": 1,
"category": "FontName",
"item": "어/② 글씨체 (궁서)"
},
"10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "최",
"value": "218,202,48",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:218,202,48)"
},
"11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "최",
"value": "3.0",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "어/④ 본문과의 간격 : 3.0mm"
},
"12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "소셜 네트워킹 서비스",
"value": "BOLD",
"points": 2,
"category": "FontAttribute",
"item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/① BOLD"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "소셜 네트워킹 서비스",
"value": "ITALIC",
"points": 2,
"category": "FontAttribute",
"item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/② ITALIC"
},
"14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "□",
"char2": "□",
"char3": "※",
"value": 3,
"points": 3,
"category": "SpecialChar",
"item": "① □, ② □, ③ ※"
},
"15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "문구 (□ 행사안내 □)/① 글씨체 (굴림)"
},
"16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "행사안내",
"value": "Center",
"points": 1,
"category": "Align",
"item": "문구 (□ 행사안내 □)/② 정렬 (가운데 정렬)"
},
"17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "서울 강남구 한국정보기술협력센터 3층 대회의장",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (서울 강남구 한국정보기술협력센터 3층 대회의장)/① ITALIC"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "서울 강남구 한국정보기술협력센터 3층 대회의장",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (서울 강남구 한국정보기술협력센터 3층 대회의장)/② UNDERLINE"
},
"19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "기타사항",
"value": {
"Left": 10,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2026. 04. 07.",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2026. 04. 07.)/① 크기 (1400)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2026. 04. 07.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2026. 04. 07.)/② 정렬 (가운데 정렬)"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "한국정보서비스학회장",
"value": "궁서체",
"points": 1,
"category": "FontName",
"item": "문구 (한국정보서비스학회장)/① 글씨체 (궁서체)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "한국정보서비스학회장",
"value": "2000",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한국정보서비스학회장)/② 크기 (2000)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "한국정보서비스학회장",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한국정보서비스학회장)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "돋움",
"points": 1,
"category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (돋움)"
},
"26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "Digit",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomCenter",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight",
"왼쪽 아래": "BottomLeft"
}
},
"30": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "180",
"points": 2,
"category": "LineSpacing",
"item": "문제 1 줄간격 180% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점)"
}
},
"2": {
"1": {
"path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside",
"path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]",
"value": {
"header_inside": true,
"all_double_slim": true
},
"points": 4,
"category": "PageBorder",
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
},
"2": {
"path": "count(//SECTION)>1",
"value": true,
"points": 3,
"category": "Boolean",
"item": "① 구역나누기",
"desc": "섹션이 1개 이상이면 점수부여"
},
"3": {
"path": "./TEXT/COLDEF/@Count",
"value": "2",
"points": 3,
"category": "TwoColumn",
"item": "② 다단 2단"
},
"4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "70",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (소셜 네트워킹 서비스)/① 크기-너비 (70 mm)"
},
"5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (소셜 네트워킹 서비스)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE//LINESHAPE",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "Rectangle.LineShape",
"item": "문구 (소셜 네트워킹 서비스)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE/@Ratio",
"value": "50",
"points": 2,
"category": "Rectangle.OneAnswer",
"item": "문구 (소셜 네트워킹 서비스)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "90,233,53",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (소셜 네트워킹 서비스)/⑤ 채우기 : 색상(RGB:90,233,53)"
},
"9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true",
"points": 1,
"category": "Rectangle.OneAnswer",
"item": "문구 (소셜 네트워킹 서비스)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (소셜 네트워킹 서비스)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": ".//RECTANGLE//TEXT/@CharShape",
"value": "궁서체",
"points": 1,
"category": "Rectangle.FontName",
"item": "문구 (소셜 네트워킹 서비스)/⑧ 글씨체 (궁서체)"
},
"12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "1800",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (소셜 네트워킹 서비스)/⑨ 글씨크기 (1800)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id={rect_parashape_id}]/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (소셜 네트워킹 서비스)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "45",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (45 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "22",
"points": 2,
"category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)"
},
"19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 소셜 네트워킹 서비스",
"value": "굴림체",
"points": 1,
"category": "FontName",
"item": "문구① (1. 소셜 네트워킹 서비스)/① 글씨체 (굴림체)"
},
"20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 소셜 네트워킹 서비스",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구① (1. 소셜 네트워킹 서비스)/② 크기 (1200)"
},
"21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 소셜 네트워킹 서비스",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구① (1. 소셜 네트워킹 서비스)/③ 진하게"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 소셜 네트워킹 서비스 활용",
"value": "굴림체",
"points": 1,
"category": "FontName",
"item": "문구② (2. 소셜 네트워킹 서비스 활용)/① 글씨체 (굴림체)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 소셜 네트워킹 서비스 활용",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구② (2. 소셜 네트워킹 서비스 활용)/② 크기 (1200)"
},
"24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 소셜 네트워킹 서비스 활용",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구② (2. 소셜 네트워킹 서비스 활용)/③ 진하게"
},
"25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "마이크로블로깅",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (마이크로블로깅)/① 각주 설정 및 문구 입력"
},
"26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "블로거가 한두 문장 정도의 단편적 정보를 관심이 있는 개인들에게 전달하는 통신방식",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구 (마이크로블로깅)/② 글씨체 (돋움)"
},
"27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "블로거가 한두 문장 정도의 단편적 정보를 관심이 있는 개인들에게 전달하는 통신방식",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (마이크로블로깅)/③ 크기 (9pt)"
},
"28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "블로거가 한두 문장 정도의 단편적 정보를 관심이 있는 개인들에게 전달하는 통신방식",
"value": "CircledIdeograph",
"points": 2,
"category": "PageNumber",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Marketing",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Marketing/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": ""
},
"30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [
["방식", "方式"],
["관계", "關係"],
["획득", "獲得"],
["정보", "情報"],
["절감", "節減"]
],
"value": 10,
"points": 10,
"category": "Hanja",
"item": "① 방식(方式), ② 관계(關係), ③ 획득(獲得), ④ 정보(情報), ⑤ 절감(節減)"
},
"31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'적인매체')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…대표적의 매체로…)>'의' → '인' 글자바꿈"
},
"32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'인이필요')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…필요한 개인이 정보를…)>'필요한' / '개인이' 순서바꿈"
},
"33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "스마트폰 가입자 수(단위 : 만 명)",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "제목 문구 (스마트폰 가입자 수(단위 : 만 명))/① 글씨체 (중고딕)"
},
"34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "스마트폰 가입자 수(단위 : 만 명)",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (스마트폰 가입자 수(단위 : 만 명))/② 크기 (1200)"
},
"35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "스마트폰 가입자 수(단위 : 만 명)",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "제목 문구 (스마트폰 가입자 수(단위 : 만 명))/③ 진하게"
},
"36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "스마트폰 가입자 수(단위 : 만 명)",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (스마트폰 가입자 수(단위 : 만 명))/④ 정렬 (가운데 정렬)"
},
"37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "248,203,169",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:248,203,169)"
},
"38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "위쪽 제목 셀/② 진하게",
"desc": "글자 속성이라 CELLZONE으로 적용 되지 않음"
},
"39": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type",
"value": "DoubleSlim",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/① 이중실선"
},
"40": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width",
"value": "0.5mm",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/② 0.5mm"
},
"41": {
"path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "굴림",
"points": 1,
"category": "TableFontName",
"category_tmp": "FontName",
"item": "글자모양/① 글씨체 (굴림)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
},
"42": {
"path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
"value": "1000",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/② 크기 (1000)"
},
"43": {
"path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
"value": "Center",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/③ 정렬 (가운데 정렬)"
},
"44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "AVG",
"value": true,
"points": 4,
"category": "Boolean",
"item": "블록 계산식/합계",
"desc": "option값에 합계는 SUM / 평균은 AVG"
},
"45": {
"chart_xpath": "",
"chart_type": "꺾은선형",
"value": true,
"points": 2,
"category": "ChartType",
"item": "① 종류 (꺾은선형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
},
"46": {
"chart_xpath": "//c:valAx/c:majorTickMark/@val",
"value": "out",
"points": 2,
"category": "ChartOneAnswer",
"item": "② 값 축 주 눈금선",
"desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
},
"47": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "③ 크기-너비 (80 mm)"
},
"48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "90",
"points": 2,
"category": "mmSize",
"item": "④ 크기-높이 (90 mm)"
},
"49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
"value": true,
"points": 2,
"category": "Boolean",
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
"desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "스마트폰 가입자 수",
"value": "궁서체",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (스마트폰 가입자 수)/① 글씨체 (궁서체)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "스마트폰 가입자 수",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (스마트폰 가입자 수)/② 크기 (1200)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b",
"searchValue": "스마트폰 가입자 수",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (스마트폰 가입자 수)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface | //c:catAx/c:txPr//a:latin/@typeface",
"value": "돋움체",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/① 글꼴 (돋움체)"
},
"54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/② 크기 (9pt)"
},
"55": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface | //c:valAx/c:txPr//a:latin/@typeface",
"value": "돋움체",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (돋움체)"
},
"57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/② 크기 (9pt)"
},
"58": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"59": {
"chart_xpath": "//c:legend//a:ea/@typeface | //c:legend//a:latin/@typeface",
"value": "돋움체",
"points": 1,
"category": "OneAnswer",
"item": "범례/① 글꼴 (돋움체)"
},
"60": {
"chart_xpath": "//c:legend//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "범례/② 크기 (9pt)"
},
"61": {
"chart_xpath": "//c:legend//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "범례/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}
}
}

View File

@@ -145,7 +145,7 @@
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (대학 퇴출 및 통폐합의 방향과 과제를 주제)/① BOLD" "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/① BOLD"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
@@ -153,7 +153,7 @@
"value": "UNDERLINE", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (대학 퇴출 및 통폐합의 방향과 과제를 주제)/② UNDERLINE" "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/② UNDERLINE"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
@@ -186,20 +186,20 @@
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025. 11. 28.(금) 18:00까지 온라인 사전 등록(http://www.ihd.or.kr)", "searchValue": "2026. 05. 01.(금) 18:00까지 온라인 사전 등록(http://www.ihd.or.kr)",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (2025. 11. 28.(금) 18:00까지 온라인 사전 등록(http://www.ihd.or.kr))/① BOLD" "item": "문구 (2026. 05. 01.(금) 18:00까지 온라인 사전 등록(http://www.ihd.or.kr))/① BOLD"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025. 11. 28.(금) 18:00까지 온라인 사전 등록(http://www.ihd.or.kr)", "searchValue": "2026. 05. 01.(금) 18:00까지 온라인 사전 등록(http://www.ihd.or.kr)",
"value": "ITALIC", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (2025. 11. 28.(금) 18:00까지 온라인 사전 등록(http://www.ihd.or.kr))/② ITALIC" "item": "문구 (2026. 05. 01.(금) 18:00까지 온라인 사전 등록(http://www.ihd.or.kr))/② ITALIC"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
@@ -215,20 +215,20 @@
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 11. 22.", "searchValue": "2026. 04. 22.",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 11. 22.)/① 크기 (1300)", "item": "문구 (2026. 04. 22.)/① 크기 (1300)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 11. 22.", "searchValue": "2026. 04. 22.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 11. 22.)/② 정렬 (가운데 정렬)" "item": "문구 (2026. 04. 22.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
@@ -283,7 +283,7 @@
"value": "LatinCapital", "value": "LatinCapital",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기 (A,B,C 순으로)", "item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": { "desc1": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
"1,2,3": "Digit", "1,2,3": "Digit",
@@ -325,7 +325,7 @@
"value": true, "value": true,
"points": 2, "points": 2,
"category": "hyperlink", "category": "hyperlink",
"item": "문구 (https://www.ihd.or.kr)/하이퍼링크 없이 작성", "item": "문구 (http://www.ihd.or.kr)/하이퍼링크 없이 작성",
"desc": "searchValue에 해당하는 주소 문구에 하이퍼링크가 하나라도 설정되어 있으면 오답" "desc": "searchValue에 해당하는 주소 문구에 하이퍼링크가 하나라도 설정되어 있으면 오답"
}, },
"31": { "31": {
@@ -395,7 +395,7 @@
"value": "20", "value": "20",
"points": 2, "points": 2,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (대학 구조조정)/④ 글상자 모서리 (반원)", "item": "문구 (대학 구조조정)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20" "desc": "모서리 비율 반원:50 / 둥근모양:20"
}, },
"8": { "8": {
@@ -553,9 +553,9 @@
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "유치원 : 만 3~5세, 초등학교 : 만 6~11세, 중학교 : 만 12~14세, 고등학교 : 만 15~17세", "searchValue": "유치원 : 만 3~5세, 초등학교 : 만 6~11세, 중학교 : 만 12~14세, 고등학교 : 만 15~17세",
"value": "CircledHangulJamo", "value": "DecagonCircleHanja",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "PageNumber",
"item": "문구 (전당)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
"desc": { "desc": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
@@ -579,13 +579,13 @@
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Management')])", "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Management", "ignoreWord": "Management",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Management/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Management/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": ""
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
@@ -617,35 +617,35 @@
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "학령인구 변동 추계(단위:명)", "searchValue": "학령인구 변동 추계(단위:명)",
"value": "맑은고딕", "value": "맑은고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (학령인구 변동 추계(단위:명))/① 글씨체 (맑은고딕)" "item": "제목 문구 (학령인구 변동 추계(단위:명))/① 글씨체 (맑은고딕)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "학령인구 변동 추계(단위:명)", "searchValue": "학령인구 변동 추계(단위:명)",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (학령인구 변동 추계(단위:명))/② 크기 (1200)" "item": "제목 문구 (학령인구 변동 추계(단위:명))/② 크기 (1200)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "학령인구 변동 추계(단위:명)", "searchValue": "학령인구 변동 추계(단위:명)",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (학령인구 변동 추계(단위:명))/③ 진하게" "item": "제목 문구 (학령인구 변동 추계(단위:명))/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "학령인구 변동 추계(단위:명)", "searchValue": "학령인구 변동 추계(단위:명)",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (핀테크 산업 성장률(단위 : g))/④ 정렬 (가운데 정렬)" "item": "제목 문구 (학령인구 변동 추계(단위: 천 명))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
@@ -704,7 +704,7 @@
"item": "글자모양/③ 정렬 (가운데 정렬)" "item": "글자모양/③ 정렬 (가운데 정렬)"
}, },
"44": { "44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "AVG", "option": "AVG",
"value": true, "value": true,
"points": 4, "points": 4,
@@ -778,7 +778,7 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface | //c:catAx/c:txPr//a:latin/@typeface",
"value": "궁서", "value": "궁서",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
@@ -801,7 +801,7 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"56": { "56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface | //c:valAx/c:txPr//a:latin/@typeface",
"value": "궁서", "value": "궁서",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
@@ -824,7 +824,7 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"59": { "59": {
"chart_xpath": "//c:legend//a:ea/@typeface", "chart_xpath": "//c:legend//a:ea/@typeface | //c:legend//a:latin/@typeface",
"value": "궁서", "value": "궁서",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",

View File

@@ -46,65 +46,65 @@
"1": { "1": {
"1": { "1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "생성형 인공지능 세미나 안내", "searchValue": "대학교육정책포럼",
"value": "궁서체", "value": "휴먼옛체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (생성형 인공지능 세미나 안내)/① 글씨체 (궁서체)" "item": "문구 (대학교육정책포럼)/① 글씨체 (휴먼옛체)"
}, },
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "생성형 인공지능 세미나 안내", "searchValue": "대학교육정책포럼",
"value": "233,190,46", "value": "53,135,145",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (생성형 인공지능 세미나 안내)/② 채우기 : 색상(RGB:233,190,46)" "item": "문구 (대학교육정책포럼)/② 채우기 : 색상(RGB:53,135,145)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "생성형 인공지능 세미나 안내", "searchValue": "대학교육정책포럼",
"value": "110", "value": "120",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (생성형 인공지능 세미나 안내)/③ 크기-너비 (110 mm)" "item": "문구 (대학교육정책포럼)/③ 크기-너비 (120 mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "생성형 인공지능 세미나 안내", "searchValue": "대학교육정책포럼",
"value": "20", "value": "20",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (생성형 인공지능 세미나 안내)/④ 크기-높이 (20 mm)" "item": "문구 (대학교육정책포럼)/④ 크기-높이 (20 mm)"
}, },
"5": { "5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "생성형 인공지능 세미나 안내", "searchValue": "대학교육정책포럼",
"value": "true", "value": "true",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (생성형 인공지능 세미나 안내)/⑤ 위치 (글자처럼 취급)" "item": "문구 (대학교육정책포럼)/⑤ 위치 (글자처럼 취급)"
}, },
"6": { "6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "생성형 인공지능 세미나 안내", "searchValue": "대학교육정책포럼",
"value": "Center", "value": "Center",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (생성형 인공지능 세미나 안내)/⑥ 정렬 (가운데 정렬)" "item": "문구 (대학교육정책포럼)/⑥ 정렬 (가운데 정렬)"
}, },
"7": { "7": {
"path": "//TEXTART[@Text='{searchValue}']", "path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "생성형 인공지능 세미나 안내", "searchValue": "대학교육정책포럼",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (생성형 인공지능 세미나 안내)/⑦ 글맵시모양 (육안확인)" "item": "문구 (대학교육정책포럼)/⑦ 글맵시모양 (육안확인)"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "", "searchValue": "",
"value": { "value": {
"Height": 2800, "Height": 2800,
"Width": 2800 "Width": 2800
@@ -116,7 +116,7 @@
}, },
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "", "searchValue": "",
"value": "굴림체", "value": "굴림체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
@@ -124,15 +124,15 @@
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "", "searchValue": "",
"value": "221,251,229", "value": "192,204,239",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "어/③ 면색 : 색상(RGB:221,251,229)" "item": "어/③ 면색 : 색상(RGB:192,204,239)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "", "searchValue": "",
"value": "3.0", "value": "3.0",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
@@ -141,19 +141,19 @@
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "생성형 인공지능", "searchValue": "대학 퇴출 및 통폐합의 방향과 과제를 주제",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (생성형 인공지능)/① BOLD" "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/① BOLD"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "생성형 인공지능", "searchValue": "대학 퇴출 및 통폐합의 방향과 과제를 주제",
"value": "ITALIC", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (생성형 인공지능)/② ITALIC" "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/② UNDERLINE"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
@@ -186,73 +186,73 @@
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "협회 홈페이지(https://www.ihd.or.kr)", "searchValue": "2026. 05. 01.(금) 18:00까지 온라인 사전 등록(http://www.ihd.or.kr)",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (협회 홈페이지(https://www.ihd.or.kr))/① BOLD" "item": "문구 (2026. 05. 01.(금) 18:00까지 온라인 사전 등록(http://www.ihd.or.kr))/① BOLD"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "협회 홈페이지(https://www.ihd.or.kr)", "searchValue": "2026. 05. 01.(금) 18:00까지 온라인 사전 등록(http://www.ihd.or.kr)",
"value": "UNDERLINE", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (협회 홈페이지(https://www.ihd.or.kr))/② UNDERLINE" "item": "문구 (2026. 05. 01.(금) 18:00까지 온라인 사전 등록(http://www.ihd.or.kr))/② ITALIC"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "기타사항", "searchValue": "기타사항",
"value": { "value": {
"Left": 13, "Left": 10,
"Indent": 10 "Indent": 12
}, },
"points": 2, "points": 2,
"category": "ParaShape", "category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (13), 내어쓰기 (10)", "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 12. 20.", "searchValue": "2026. 04. 22.",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/① 크기 (1300)", "item": "문구 (2026. 04. 22.)/① 크기 (1300)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 12. 20.", "searchValue": "2026. 04. 22.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/② 정렬 (가운데 정렬)" "item": "문구 (2026. 04. 22.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "생성형인공지능협회", "searchValue": "한국대학교육협의회",
"value": "돋움", "value": "견고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (생성형인공지능협회)/① 글씨체 (돋움)" "item": "문구 (한국대학교육협의회)/① 글씨체 (견고딕)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "생성형인공지능협회", "searchValue": "한국대학교육협의회",
"value": "2000", "value": "2500",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (생성형인공지능협회)/② 크기 (2000)" "item": "문구 (한국대학교육협의회)/② 크기 (2500)"
}, },
"24": { "24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "생성형인공지능협회", "searchValue": "한국대학교육협의회",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (생성형인공지능협회)/③ 정렬 (가운데 정렬)" "item": "문구 (한국대학교육협의회)/③ 정렬 (가운데 정렬)"
}, },
"25": { "25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
@@ -283,7 +283,7 @@
"value": "LatinCapital", "value": "LatinCapital",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기", "item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": { "desc1": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
"1,2,3": "Digit", "1,2,3": "Digit",
@@ -308,10 +308,10 @@
}, },
"29": { "29": {
"path": "//PAGENUM/@Pos", "path": "//PAGENUM/@Pos",
"value": "BottomRight", "value": "BottomCenter",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "왼쪽 아래", "item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여", "desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": { "desc2": {
"가운데 아래": "BottomCenter", "가운데 아래": "BottomCenter",
@@ -331,7 +331,7 @@
"31": { "31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "200", "value": "200",
"first_word": "", "first_word": "",
"points": 2, "points": 2,
"category": "LineSpacing", "category": "LineSpacing",
"item": "문제 1 줄간격 200% 설정", "item": "문제 1 줄간격 200% 설정",
@@ -367,17 +367,17 @@
}, },
"4": { "4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "60", "value": "65",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (생성형 인공지능)/① 크기-너비 (60 mm)" "item": "문구 (대학 구조조정)/① 크기-너비 (65 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12", "value": "12",
"points": 2, "points": 2,
"category": "Rectangle.mmSize", "category": "Rectangle.mmSize",
"item": "문구 (생성형 인공지능)/② 크기-높이 (12 mm)" "item": "문구 (대학 구조조정)/② 크기-높이 (12 mm)"
}, },
"6": { "6": {
"path": "//RECTANGLE//LINESHAPE", "path": "//RECTANGLE//LINESHAPE",
@@ -387,51 +387,51 @@
}, },
"points": 2, "points": 2,
"category": "Rectangle.LineShape", "category": "Rectangle.LineShape",
"item": "문구 (생성형 인공지능)/③ 테두리 : 이중 실선(1.00mm)", "item": "문구 (대학 구조조정)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력" "desc": "1mm = 283pt value['Width']에 pt값 입력"
}, },
"7": { "7": {
"path": "//RECTANGLE/@Ratio", "path": "//RECTANGLE/@Ratio",
"value": "0", "value": "20",
"points": 2, "points": 2,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (생성형 인공지능)/④ 글상자 모서리 (직각)", "item": "문구 (대학 구조조정)/④ 글상자 모서리 (둥근모양)",
"desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0" "desc": "모서리 비율 반원:50 / 둥근모양:20"
}, },
"8": { "8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "153,226,253", "value": "227,220,193",
"points": 2, "points": 2,
"category": "Rectangle.Color", "category": "Rectangle.Color",
"item": "문구 (생성형 인공지능)/⑤ 채우기 : 색상(RGB:153,226,253)" "item": "문구 (대학 구조조정)/⑤ 채우기 : 색상(RGB:227,220,193)"
}, },
"9": { "9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true", "value": "true",
"points": 1, "points": 1,
"category": "Rectangle.OneAnswer", "category": "Rectangle.OneAnswer",
"item": "문구 (생성형 인공지능)/⑥ 글상자 위치 (글자처럼 취급)" "item": "문구 (대학 구조조정)/⑥ 글상자 위치 (글자처럼 취급)"
}, },
"10": { "10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align", "path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (생성형 인공지능)/⑦ 글상자 정렬 (가운데 정렬)" "item": "문구 (대학 구조조정)/⑦ 글상자 정렬 (가운데 정렬)"
}, },
"11": { "11": {
"path": ".//RECTANGLE//TEXT/@CharShape", "path": ".//RECTANGLE//TEXT/@CharShape",
"value": "견고딕", "value": "궁서체",
"points": 1, "points": 1,
"category": "Rectangle.FontName", "category": "Rectangle.FontName",
"item": "문구 (생성형 인공지능)/⑧ 글씨체 (견고딕)" "item": "문구 (대학 구조조정)/⑧ 글씨체 (궁서체)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height", "path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "2000", "value": "2000",
"points": 1, "points": 1,
"category": "Rectangle.FontSize", "category": "Rectangle.FontSize",
"item": "문구 (생성형 인공지능)/⑨ 글씨크기 (2000)", "item": "문구 (대학 구조조정)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"13": { "13": {
@@ -439,29 +439,29 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Rectangle.TextBoxAlign", "category": "Rectangle.TextBoxAlign",
"item": "문구 (생성형 인공지능)/⑩ 정렬 (가운데 정렬)" "item": "문구 (대학 구조조정)/⑩ 정렬 (가운데 정렬)"
}, },
"14": { "14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']", "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "① 파일명 \"그림D.jpg\" 삽입", "item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)" "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
}, },
"15": { "15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "85", "value": "80",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "② 크기-너비 (85 mm)" "item": "② 크기-너비 (80 mm)"
}, },
"16": { "16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40", "value": "35",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "③ 크기-높이 (40 mm)" "item": "③ 크기-높이 (35 mm)"
}, },
"17": { "17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
@@ -472,90 +472,90 @@
}, },
"18": { "18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "22", "value": "24",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)" "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)"
}, },
"19": { "19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 서비스 현황", "searchValue": "1. 학령인구 감소",
"value": "돋움체", "value": "중고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구① (1. 서비스 현황)/① 글씨체 (돋움체)" "item": "문구① (1. 학령인구 감소)/① 글씨체 (중고딕)"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 서비스 현황", "searchValue": "1. 학령인구 감소",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구① (1. 서비스 현황)/② 크기 (1200)" "item": "문구① (1. 학령인구 감소)/② 크기 (1200)"
}, },
"21": { "21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 서비스 현황", "searchValue": "1. 학령인구 감소",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구① (1. 서비스 현황)/③ 진하게" "item": "문구① (1. 학령인구 감소)/③ 진하게"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 활용 분야", "searchValue": "2. 한계대학이란?",
"value": "돋움체", "value": "중고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구② (2. 활용 분야)/① 글씨체 (돋움체)" "item": "문구② (2. 한계대학이란?)/① 글씨체 (중고딕)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 활용 분야", "searchValue": "2. 한계대학이란?",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구② (2. 활용 분야)/② 크기 (1200)" "item": "문구② (2. 한계대학이란?)/② 크기 (1200)"
}, },
"24": { "24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 활용 분야", "searchValue": "2. 한계대학이란?",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구② (2. 활용 분야)/③ 진하게" "item": "문구② (2. 한계대학이란?)/③ 진하게"
}, },
"25": { "25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "핀테크", "option": "학령인구",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (핀테크)/① 각주 설정 및 문구 입력" "item": "문구 (학령인구)/① 각주 설정 및 문구 입력"
}, },
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "금융 서비스의 효율성과 접근성을 혁신하는 신산업", "searchValue": "유치원 : 만 3~5세, 초등학교 : 만 6~11세, 중학교 : 만 12~14세, 고등학교 : 만 15~17세",
"value": "굴림", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (핀테크)/② 글씨체 (굴림)" "item": "문구 (학령인구)/② 글씨체 (돋움)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "금융 서비스의 효율성과 접근성을 혁신하는 신산업", "searchValue": "유치원 : 만 3~5세, 초등학교 : 만 6~11세, 중학교 : 만 12~14세, 고등학교 : 만 15~17세",
"value": "900", "value": "900",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (핀테크)/③ 크기 (9pt)" "item": "문구 (학령인구)/③ 크기 (9pt)"
}, },
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "금융 서비스의 효율성과 접근성을 혁신하는 신산업", "searchValue": "유치원 : 만 3~5세, 초등학교 : 만 6~11세, 중학교 : 만 12~14세, 고등학교 : 만 15~17세",
"value": "CircledLatinCapital", "value": "DecagonCircleHanja",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "PageNumber",
"item": "문구 (전당)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
"desc": { "desc": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
@@ -579,81 +579,81 @@
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Generative')])", "path": "boolean(//CHAR[contains(text(),'{ignoreWord}')])",
"ignoreWord": "Generative", "ignoreWord": "Management",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Generative/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Management/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": ""
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [ "word": [
["생성", "生成"], ["환경", "環境"],
["현재", "現在"], ["분석", "分析"],
["조", "造"], ["재무구조", "財務構造"],
["결함", "缺陷"], ["경영", "經營"],
["극대", "極大"] ["상태", "狀態"]
], ],
"value": 10, "value": 10,
"points": 10, "points": 10,
"category": "Hanja", "category": "Hanja",
"item": "① 생성(生成), ② 현재(現在), ③ 창조(創造), ④ 결함(缺陷), ⑤ 극대(極大)" "item": "① 환경(環境), ② 분석(分析), ③ 재무구조(財務構造), ④ 경영(經營), ⑤ 상태(狀態)"
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'성형인공')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'덕적해이')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…사용하는 인공지능 생성형 서비스이다…)>'인공지능 / 생성형' 순서바꿈" "item": "문구 (…비위나 해이가 도덕적 대학…)>'해이가 / 도덕적' 순서바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'률검토를')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'증가추이')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…작성 및 법률 검투를 수행…)>'투''토' 글자바꿈" "item": "문구 (…향후 증강 추이는 가속화될 전망이다…)>'' 글자바꿈"
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "생성형 인공지능 서비스 이용률 현황", "searchValue": "학령인구 변동 추계(단위: 천 명)",
"value": "굴림체", "value": "맑은고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (생성형 인공지능 서비스 이용률 현황)/① 글씨체 (굴림체)" "item": "제목 문구 (학령인구 변동 추계(단위: 천 명))/① 글씨체 (맑은고딕)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "생성형 인공지능 서비스 이용률 현황", "searchValue": "학령인구 변동 추계(단위: 천 명)",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (생성형 인공지능 서비스 이용률 현황)/② 크기 (1200)" "item": "제목 문구 (학령인구 변동 추계(단위: 천 명))/② 크기 (1200)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "생성형 인공지능 서비스 이용률 현황", "searchValue": "학령인구 변동 추계(단위: 천 명)",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (생성형 인공지능 서비스 이용률 현황)/③ 진하게" "item": "제목 문구 (학령인구 변동 추계(단위: 천 명))/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "생성형 인공지능 서비스 이용률 현황", "searchValue": "학령인구 변동 추계(단위: 천 명)",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (생성형 인공지능 서비스 이용률 현황)/④ 정렬 (가운데 정렬)" "item": "제목 문구 (학령인구 변동 추계(단위: 천 명))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "232,250,210", "value": "158,219,98",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:232,250,210)" "item": "위쪽 제목 셀/① 색상(RGB:158,219,98)"
}, },
"38": { "38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -682,11 +682,11 @@
"41": { "41": {
"path": "//TABLE//TEXT/@CharShape", "path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "중고딕", "value": "돋움체",
"points": 1, "points": 1,
"category": "TableFontName", "category": "TableFontName",
"category_tmp": "FontName", "category_tmp": "FontName",
"item": "글자모양/① 글씨체 (중고딕)", "item": "글자모양/① 글씨체 (돋움체)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
}, },
"42": { "42": {
@@ -704,7 +704,7 @@
"item": "글자모양/③ 정렬 (가운데 정렬)" "item": "글자모양/③ 정렬 (가운데 정렬)"
}, },
"44": { "44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) or boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "AVG", "option": "AVG",
"value": true, "value": true,
"points": 4, "points": 4,
@@ -714,11 +714,11 @@
}, },
"45": { "45": {
"chart_xpath": "", "chart_xpath": "",
"chart_type": "묶은 가로 막대형", "chart_type": "꺾은선형",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "ChartType", "category": "ChartType",
"item": "① 종류 (묶은 가로 막대형)", "item": "① 종류 (꺾은선형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
}, },
"46": { "46": {
@@ -738,10 +738,10 @@
}, },
"48": { "48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height", "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "80", "value": "90",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "④ 크기-높이 (80 mm)" "item": "④ 크기-높이 (90 mm)"
}, },
"49": { "49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))", "chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
@@ -753,36 +753,36 @@
}, },
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "생성형 인공지능 이용률 현황", "searchValue": "학령인구 변동 추계",
"value": "휴먼옛체", "value": "굴림체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (생성형 인공지능 이용률 현황)/① 글씨체 (휴먼옛체)" "item": "제목 문구 (학령인구 변동 추계)/① 글씨체 (굴림체)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "생성형 인공지능 이용률 현황", "searchValue": "학령인구 변동 추계",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (생성형 인공지능 이용률 현황)/② 크기 (1300)" "item": "제목 문구 (학령인구 변동 추계)/② 크기 (1300)"
}, },
"52": { "52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b", "option": "b",
"searchValue": "생성형 인공지능 이용률 현황", "searchValue": "학령인구 변동 추계",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (생성형 인공지능 이용률 현황)/③ 기울임", "item": "제목 문구 (학령인구 변동 추계)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface | //c:catAx/c:txPr//a:latin/@typeface",
"value": "돋움", "value": "궁서",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "X축/① 글꼴 (돋움)" "item": "X축/① 글꼴 (궁서)"
}, },
"54": { "54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
@@ -801,11 +801,11 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"56": { "56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface | //c:valAx/c:txPr//a:latin/@typeface",
"value": "돋움", "value": "궁서",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (돋움)" "item": "Y축/① 글꼴 (궁서)"
}, },
"57": { "57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
@@ -824,11 +824,11 @@
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"59": { "59": {
"chart_xpath": "//c:legend//a:ea/@typeface", "chart_xpath": "//c:legend//a:ea/@typeface | //c:legend//a:latin/@typeface",
"value": "돋움", "value": "궁서",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "범례/① 글꼴 (돋움)" "item": "범례/① 글꼴 (궁서)"
}, },
"60": { "60": {
"chart_xpath": "//c:legend//a:defRPr/@sz", "chart_xpath": "//c:legend//a:defRPr/@sz",

View File

@@ -1,52 +0,0 @@
import os
import shutil
import unicodedata
def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, target_root_d, target_root_e):
for root, dirs, files in os.walk(source_root):
for dir_name in dirs:
if dir_name.lower() == 'diw': # DIW 디렉토리 탐색
parent_dir = os.path.basename(os.path.dirname(os.path.join(root, dir_name)))
target_root = None
parent_dir = unicodedata.normalize('NFC', parent_dir)
# 부모 디렉토리가 '2교시'인지, '3교시'인지 확인
if parent_dir == '1교시':
target_root = target_root_a
elif parent_dir == '2교시':
target_root = target_root_b
elif parent_dir == '3교시':
target_root = target_root_c
elif parent_dir == '4교시':
target_root = target_root_d
elif parent_dir == '5교시':
target_root = target_root_e
if target_root:
source_dic_path = os.path.join(root, dir_name)
target_dir_name = dir_name.upper()
target_dic_path = os.path.join(target_root, target_dir_name)
# DIC 하위 디렉토리와 파일 복사
shutil.copytree(source_dic_path, target_dic_path, dirs_exist_ok=True)
print(f"Copied {source_dic_path} to {target_dic_path}")
test_folder_path = os.path.join(target_root, "TEST")
os.makedirs(test_folder_path, exist_ok=True)
else:
print(f"Skipping {dir_name} under {parent_dir}, as it doesn't match '2교시' or '3교시'.")
# 사용법
# exam_round = "2504_2"
exam_round = "2509"
source_directory = r"D:\project\HWP\HWP-Scoring\회차별채점자료\2509"
target_directory_a = f".\\input\\{exam_round}\\A" # '1교시'의 타겟 경로
target_directory_b = f".\\input\\{exam_round}\\B" # '2교시'의 타겟 경로
target_directory_c = f".\\input\\{exam_round}\\C" # '3교시'의 타겟 경로
target_directory_d = f".\\input\\{exam_round}\\D" # '4교시'의 타겟 경로
target_directory_e = f".\\input\\{exam_round}\\E" # '5교시'의 타겟 경로
copy_dic_subdirs(source_directory, target_directory_a, target_directory_b, target_directory_c, target_directory_d, target_directory_e)

View File

@@ -1,43 +0,0 @@
import base64
import re
from lxml import etree as ET
xml_path = r"C:\Users\dra\project\HWP-Scoring\output\워드(한글)-009866-성유나.hml"
tree = ET.parse(xml_path)
root = tree.getroot()
# xpath로 바이너리 부분추출
binary_data = root.xpath('//BINDATA[@Id=//BINITEM[@Format="OLE"]/@BinData]/text()')
binary_data = binary_data[0].encode('utf-8')
# 파일을 읽어들입니다.
# with open('./chartBinData2', 'rb') as file:
# encoded_data = file.read()
# encoded_data 내에 존재하는 <BINDATA ...> ... </BINDATA> 태그를 찾아서 삭제
# <BINDATA ...> 태그는 base64 디코딩을 수행할 때 오류가 발생하므로 삭제합니다.
# <BINDATA ...> 태그와 그 내부 내용을 삭제합니다.
encoded_data = re.sub(b'<BINDATA.*?>', b'', binary_data)
# encoded_data = re.sub(b'<BINDATA.*?>', b'', encoded_data)
# print(encoded_data)
encoded_data = encoded_data.replace(b'</BINDATA>', b'')
encoded_data = encoded_data.replace(b'\r\n', b'')
# print(encoded_data+b'==')
# base64 디코딩을 수행합니다.
decoded_data = base64.b64decode(encoded_data+b'==')
print(decoded_data)
# 디코딩된 데이터 내용 중 xml 형식만 추출할 때 <c:chartSpace>, </c:chartSpace> 사이의 데이터만 추출.
start = decoded_data.find(b'<?xml')
print(start)
end = decoded_data.find(b'</c:chartSpace>')
print(end)
xml_data = decoded_data[start:end+len(b'</c:chartSpace>')]
# 디코딩된 데이터를 파일로 저장합니다.
with open('ext_BinData.xml', 'wb') as file:
file.write(xml_data)
print("Decoding complete. Decoded data saved to 'decoded_chartBinData'.")

View File

@@ -1 +1 @@
[{"kind":1,"language":"markdown","value":"# XPath Notebook\nDate: 2025-01-22     Time: 16:12:58"},{"kind":1,"language":"markdown","value":"* mm > pt 변환비율 = 2.83465 \r\n* 283.465"},{"kind":1,"language":"markdown","value":"- 색상 demical 코드 [1-2] [1-10] [2-8] [2-37]"},{"kind":2,"language":"xpath","value":"//TEXTART[@Text='클라우드컴퓨팅컨퍼런스']/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE[.//CHAR[text()='전']]//WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor"},{"kind":1,"language":"markdown","value":"- [1-10] ① ●, ② ●, ③ ※"},{"kind":2,"language":"xpath","value":"\"path\": \"count(//CHAR[contains(text(),'●')]) + count(//CHAR[contains(text(),'※')])\",\r\n \"path2\": \"string-length(//CHAR[contains(text(),'●')]) - string-length(translate(//CHAR[contains(text(),'●')], '●', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))\","},{"kind":1,"language":"markdown","value":"- [1-28] [2-28] @FormatType 종류\r\n - HangulSyllable : 가나다\r\n - Digit : 123\r\n - DecagonCircle : 갑을병정\r\n - LatinCapital : ABC\r\n - CircledDigit : ①,②,③\r\n - Ideograph : 一,二,三\r\n - CircledHangulJamo : ㉠,㉡,㉢\r\n - CircledLatinSmall : ⓐ,ⓑ,ⓒ\r\n - RomanSmall : i,ii,iii"},{"kind":2,"language":"xpath","value":"//SECTION[1]//PAGENUM/@FormatType"},{"kind":2,"language":"xpath","value":"//P[TEXT[CHAR[contains(text(), '눈으로 읽는 대신 귀로 들을 수 있게 책의 내용(문자)을 음성으로 녹음하여 기록한 것을 의미함')]]]//AUTONUMFORMAT/@Type"},{"kind":1,"language":"markdown","value":"- [2-30] ① 저감(低減), ② 화석(化石), ③ 투자(投資), ④ 달성(達成), ⑤ 세금(稅金)"},{"kind":2,"language":"xpath","value":"(count(//CHAR[contains(text(),'저감')][contains(text(),'低減')])+count(//CHAR[contains(text(),'화석')][contains(text(),'化石')])+count(//CHAR[contains(text(),'투자')][contains(text(),'投資')])+count(//CHAR[contains(text(),'달성')][contains(text(),'達成')])+count(//CHAR[contains(text(),'세금')][contains(text(),'稅金')]))*2"},{"kind":1,"language":"markdown","value":"- [2-37] [2-39] [2-40] @EndColAddr 속성값 \r\n - 표의 열 갯수-1\r\n - 4개=3 / 3개=2 / 2개=1"},{"kind":2,"language":"xpath","value":"@EndColAddr='2'"},{"kind":1,"language":"markdown","value":"- [2-45]\r\n - 꺾은선형 //c:lineChart[c:grouping[@val='standard']]\r\n - 묶은가로막대형 //c:barChart[c:barDir[@val='bar'] and c:grouping[@val='clustered']]\r\n - 묶은세로막대형 //c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']]\r\n - 원형 //c:pieChart\r\n - 분산형 //c:scatterChart"},{"kind":1,"language":"markdown","value":"//c:{chart_type}Chart/"},{"kind":2,"language":"xpath","value":"boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])"},{"kind":2,"language":"xpath","value":"//c:valAx/c:majorTickMark/@val"}] [{"kind":1,"language":"markdown","value":"# XPath Notebook\nDate: 2025-01-22     Time: 16:12:58"},{"kind":2,"language":"xpath","value":""},{"kind":1,"language":"markdown","value":"* mm > pt 변환비율 = 2.83465 \r\n* 283.465"},{"kind":1,"language":"markdown","value":"- 색상 demical 코드 [1-2] [1-10] [2-8] [2-37]"},{"kind":2,"language":"xpath","value":"//TEXTART[@Text='클라우드컴퓨팅컨퍼런스']/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE[.//CHAR[text()='전']]//WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor"},{"kind":1,"language":"markdown","value":"- [1-10] ① ●, ② ●, ③ ※"},{"kind":2,"language":"xpath","value":"\"path\": \"count(//CHAR[contains(text(),'●')]) + count(//CHAR[contains(text(),'※')])\",\r\n \"path2\": \"string-length(//CHAR[contains(text(),'●')]) - string-length(translate(//CHAR[contains(text(),'●')], '●', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))\","},{"kind":1,"language":"markdown","value":"- [1-28] [2-28] @FormatType 종류\r\n - HangulSyllable : 가나다\r\n - Digit : 123\r\n - DecagonCircle : 갑을병정\r\n - LatinCapital : ABC\r\n - CircledDigit : ①,②,③\r\n - Ideograph : 一,二,三\r\n - CircledHangulJamo : ㉠,㉡,㉢\r\n - CircledLatinSmall : ⓐ,ⓑ,ⓒ\r\n - RomanSmall : i,ii,iii"},{"kind":2,"language":"xpath","value":"//SECTION[1]//PAGENUM/@FormatType"},{"kind":2,"language":"xpath","value":"//P[TEXT[CHAR[contains(text(), '눈으로 읽는 대신 귀로 들을 수 있게 책의 내용(문자)을 음성으로 녹음하여 기록한 것을 의미함')]]]//AUTONUMFORMAT/@Type"},{"kind":1,"language":"markdown","value":"- [2-30] ① 저감(低減), ② 화석(化石), ③ 투자(投資), ④ 달성(達成), ⑤ 세금(稅金)"},{"kind":2,"language":"xpath","value":"(count(//CHAR[contains(text(),'저감')][contains(text(),'低減')])+count(//CHAR[contains(text(),'화석')][contains(text(),'化石')])+count(//CHAR[contains(text(),'투자')][contains(text(),'投資')])+count(//CHAR[contains(text(),'달성')][contains(text(),'達成')])+count(//CHAR[contains(text(),'세금')][contains(text(),'稅金')]))*2"},{"kind":1,"language":"markdown","value":"- [2-37] [2-39] [2-40] @EndColAddr 속성값 \r\n - 표의 열 갯수-1\r\n - 4개=3 / 3개=2 / 2개=1"},{"kind":2,"language":"xpath","value":"@EndColAddr='2'"},{"kind":1,"language":"markdown","value":"- [2-45]\r\n - 꺾은선형 //c:lineChart[c:grouping[@val='standard']]\r\n - 묶은가로막대형 //c:barChart[c:barDir[@val='bar'] and c:grouping[@val='clustered']]\r\n - 묶은세로막대형 //c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']]\r\n - 원형 //c:pieChart\r\n - 분산형 //c:scatterChart"},{"kind":1,"language":"markdown","value":"//c:{chart_type}Chart/"},{"kind":2,"language":"xpath","value":"boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])"},{"kind":2,"language":"xpath","value":"//c:valAx/c:majorTickMark/@val"},{"kind":2,"language":"xpath","value":"boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])"},{"kind":2,"language":"xpath","value":"//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '=AVG')]"},{"kind":2,"language":"xpath","value":"//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '=AVG')]"}]

BIN
diff.xlsx

Binary file not shown.

View File

@@ -1,659 +0,0 @@
import tkinter as tk
from tkinter import filedialog, messagebox
from datetime import datetime
import difflib
import json
from pathlib import Path
import os
from lxml import etree as ET
import re
from difflib import SequenceMatcher
import pandas as pd
import base64
# from xpathSearch import XMLPathHandler
class XMLScorer:
# 채점 기준 경로 초기화
def __init__(self, scoring_criteria_path):
# 채점 기준 로드
self.scoring_criteria = self._load_scoring_criteria(scoring_criteria_path)
def set_typo_score(self, score):
self.typo_score = score
def get_typo_score(self):
return self.typo_score
# 채점 기준파일 로드(JSON 파일)
def _load_scoring_criteria(self, file_path):
with open(file_path, 'r', encoding='utf-8') as f:
return json.load(f)
# XML 파일에서 element의 값을 찾아 반환
def query_xml(self, root, *args):
first_xpath = args[0]
second_xpath = args[1]
points = args[2]
category = args[3]
right_answer = args[4]
if "Hyperlink" in category:
is_hyperlink = self.scoring_criteria["1"]["17"]["hyperlink"]
hyperlink_xpath = self.scoring_criteria["1"]["17"]["hyperlink_xpath"]
right_text = self.scoring_criteria["1"]["17"]["searchValue"].replace(" ","")
try:
# 하이퍼링크가 포함된 p태그 인지 확인
p_elements = root.xpath(is_hyperlink)
for p in p_elements:
text_list = p.xpath(".//CHAR/text()")
full_text = ''.join(text_list).replace(" ", "")
# right_text의 첫 문자
first_char = right_text[0]
# full_text에서 첫 문자 위치 찾기
index = full_text.find(first_char)
if index != -1:
trimmed_full_text = full_text[index:]
else:
trimmed_full_text = full_text # 일치 문자 없으면 원본 그대로
similarity = difflib.SequenceMatcher(None, trimmed_full_text, right_text).ratio()
# 두 문자열이 같을 경우만 하이퍼링크 확인
if similarity >= 0.7:
inside_field = False
charshape_values = []
for elem in p.iter():
# 시작 지점 확인
if elem.tag == "FIELDBEGIN":
inside_field = True
elif elem.tag == "FIELDEND":
inside_field = False
elif inside_field and elem.tag == "TEXT":
charshape = elem.get("CharShape")
if charshape:
charshape_values.append(charshape)
# 하이퍼링크에 해당하는 P태그 내 존재하는 charshape ID값 모두를 비교해 해당 속성(ITALIC, BOLD, UNDERLINE) 확인
if charshape_values:
for charshape in charshape_values:
result = root.xpath(hyperlink_xpath.replace('{charshape_id}', charshape))
# 해당 속성이 하나라도 적용되어있지 않으면 False 반환
if not result:
return result
return True
else:
return False
except ET.XPathEvalError as e:
return None
if ("특수문자" in category) and (second_xpath is not None):
try:
result = root.xpath(first_xpath)
# 결과값이 리스트형인데 내부에 정보가 없는경우
# 결과값이 없음
if type(result) is list and len(result) == 0:
return None
elif result < points:
result2 = root.xpath(second_xpath)
return max(result, result2)
else:
return result
except ET.XPathEvalError as e:
return None
# xpath2가 있는 경우
elif second_xpath is not None:
try:
result1 = root.xpath(first_xpath)
result2 = root.xpath(second_xpath)
if (type(result1) is list and len(result1) == 0) and (type(result2) is list and len(result2) == 0):
return None
# xpath1과 xpath2의 결과값이 모두 리스트인 경우
# 두 결과값 중 정답이 포함된 리스트를 반환
if type(result1) is list and type(result2) is list:
if right_answer in result1:
return result1
elif right_answer in result2:
return result2
return result1 if result1 else result2
except ET.XPathEvalError as e:
return None
else:
try:
result = root.xpath(first_xpath)
if type(result) is list and len(result) == 0:
return None
return result
except ET.XPathEvalError as e:
return None
def chart_query_xml(self, tree, xpath, namespaces):
result = tree.xpath(xpath, namespaces=namespaces)
if type(result) is list and len(result) == 0:
return None
return result
# 유사한 텍스트 찾기
def find_similar_text(self, root, target_text, threshold=0.7):
"""
전체 문서에서 유사한 텍스트를 찾아 반환
Args:
root (_type_): xml root element 객체
target_text (_type_): 찾을 텍스트
threshold (float, optional): 유사도 설정 Defaults to 0.3.
Returns:
str: 유사도 기준을 만족하는 텍스트
"""
# 전체 텍스트 추출
# all_text = root.xpath(f"//CHAR/text()")
# all_text.append(root.xpath(f"//TEXTART/@text"))
namespaces = {
'a': 'http://schemas.openxmlformats.org/drawingml/2006/main',
'c': 'http://schemas.openxmlformats.org/drawingml/2006/chart'
}
if type(root) is str:
all_text = root
else:
all_text = root.xpath(f"//BODY//text() | //TEXTART/@Text | //c:chart//text()", namespaces=namespaces)
# 유사도 비교
max_score = 0
similar_text = ''
for text in all_text:
score = SequenceMatcher(None, target_text, text).ratio()
if score > max_score:
max_score = score
similar_text = text
if max_score >= threshold:
return similar_text
else:
return None
# 하나의 XML 파일 채점
def _score_xml_file(self, xml_file, chart_xml):
try:
tree = ET.parse(xml_file)
root = tree.getroot()
# 네임스페이스 정의
namespaces = {
'a': 'http://schemas.openxmlformats.org/drawingml/2006/main',
'c': 'http://schemas.openxmlformats.org/drawingml/2006/chart'
}
# 차트 XML 파일이 없는 경우 0점 채점을 위헤 빈 XML 생성
if chart_xml is None:
chart_tree = ET.fromstring('<xml></xml>')
else:
chart_tree = ET.fromstring(chart_xml)
# 결과값을 Dictionary로 저장
results = {
'filename': os.path.basename(xml_file),
'score_results': [],
'total_score': 0,
'partial_scores': []
}
print(f"File name: {results['filename']}")
total_score = 0
for section_id, section in self.scoring_criteria.items():
partial_score = 0
for criterion_id, criterion in section.items():
id = criterion_id
xpath = criterion['path'] if 'path' in criterion else None
xpath2 = criterion['path2'] if 'path2' in criterion else None
search_value = criterion['searchValue'] if 'searchValue' in criterion else None
right_answer = criterion['value'] if 'value' in criterion else None
points = criterion['points'] if 'points' in criterion else None
category = criterion['category'] if 'category' in criterion else None
item = criterion['item']
similar_text = None
# chart xml 파일에서 채점하는 경우
if "chart_xml" in category:
if search_value is not None:
similar_text = self.find_similar_text(chart_tree, search_value)
if similar_text is None:
xpath = xpath.replace('{searchValue}', search_value)
else:
xpath = xpath.replace('{searchValue}', similar_text)
result = self.chart_query_xml(chart_tree, xpath, namespaces)
# 그 외의 hml 파일에서 채점하는 경우
else:
if search_value is not None:
similar_text = self.find_similar_text(root, search_value)
if similar_text is None:
xpath = xpath.replace('{searchValue}', search_value)
else:
xpath = xpath.replace('{searchValue}', similar_text)
result = self.query_xml(root, xpath, xpath2, points, category, right_answer)
# [ boolean 타입 ]
# 1. 이텔릭체, 굵게, 밑줄 등 효과가 적용 여부에 따라
# [ITALIC] [BOLD] [UNDERLINE] 태그가 있거나 없을 수 있으므로
# 존재 유무에 따라 True, False로 판단
# 2. 두 가지 이상의 조건을 모두 만족해야 하는 경우 and 연산자로 연결되어
# 반환값 True/False로 판단
# [ float 타입 ]
# 1. 부분점수의 합산으로 반환되는 경우 float 타입으로 반환
if type(result) is not list:
if type(result) is float and (result > points):
actual_answer = float(points)
else:
actual_answer = result
else:
if type(right_answer) is int:
actual_answer = int(result[0])
else:
actual_answer = result[0]
if "오타감점" in category:
points = self.get_typo_score()
scoring = {
'section': section_id,
'id': id,
'category': category, # 채점 분류
'item': item, # 채점 항목
'right_answer': right_answer, # 정답
'actual_answer': actual_answer, # 실제 작성 답안
'points': points,
'deductions': [] # 각 기준별 감점 내역
}
# 점수 차감 조건
# 1. 정답이 실수형으로 반환받은 경우는 채점항목의 부분점수 합산 결과이므로
# 반환받은 값 그대로를 점수로 사용
# 2. 정답이 정수형(사이즈 비교)의 경우 오차범위를 넘는다면 감점
# 3. 그 외의 경우 정답과 실제 작성 답안이 다른 경우 점수 차감
if type(actual_answer) is float:
scoring['points'] = actual_answer
elif type(actual_answer) is int:
# 오차범위 3 이상이면 감점
if abs(actual_answer - right_answer) > 3:
scoring['points'] -= points
else:
# right_answer(JSON파일 내 valuer값) null일 경우 점수감점 없이 진행
if right_answer != actual_answer:
scoring['points'] -= points
results['score_results'].append(scoring)
total_score += scoring['points']
partial_score += scoring['points']
print(f'scoring: {scoring}')
results['partial_scores'].append({
'section': section_id,
'score': partial_score
})
results['total_score'] = total_score
return results
except ET.ParseError as e:
return {
'filename': os.path.basename(xml_file),
'error': f"XML 파싱 오류: {str(e)}",
'total_score': 0
}
def binary_to_chartxml(self, xml_path):
tree = ET.parse(xml_path)
root = tree.getroot()
binary_data = root.xpath('//BINDATA[@Id=//BINITEM[@Format="OLE"]/@BinData]/text()')
if not binary_data:
return None
binary_data = binary_data[0].encode('utf-8')
# <BINDATA ...> 태그와 그 내부 내용을 삭제합니다.
encoded_data = re.sub(b'<BINDATA.*?>', b'', binary_data)
encoded_data = encoded_data.replace(b'</BINDATA>', b'')
encoded_data = encoded_data.replace(b'\r\n', b'')
# base64 디코딩을 수행합니다.
decoded_data = base64.b64decode(encoded_data+b'==')
# 디코딩된 데이터 내용 중 xml 형식만 추출할 때 <c:chartSpace>, </c:chartSpace> 사이의 데이터만 추출.
start = decoded_data.find(b'<?xml')
print(start)
end = decoded_data.find(b'</c:chartSpace>')
print(end)
xml_data = decoded_data[start:end+len(b'</c:chartSpace>')]
# xml 데이터가 없는 경우 None을 반환합니다.
if -1 in [start, end]:
return None
# 디코딩된 데이터를 파일로 저장합니다.
base_filename = os.path.splitext(xml_path)[0]
new_filename = f'{base_filename}.xml'
with open(new_filename, 'wb') as file:
file.write(xml_data)
return xml_data
def typo_check(self, correct_answer_file, user_answer_file, chart_xml):
user_answer_tree = ET.parse(user_answer_file)
user_answer_root = user_answer_tree.getroot()
correct_answer_tree = ET.parse(correct_answer_file)
correct_answer_root = correct_answer_tree.getroot()
# xpath로 바이너리 부분추출
user_input_text = user_answer_root.xpath('//CHAR//text()[not(ancestor::HEADER) and not(ancestor::TABLE)]')
user_table_text = user_answer_root.xpath('//TABLE//CHAR//text()')
user_input_text += user_table_text
correct_input_text = correct_answer_root.xpath('//CHAR//text()[not(ancestor::HEADER) and not(ancestor::TABLE)]')
correct_table_text = correct_answer_root.xpath('//TABLE//CHAR//text()')
correct_input_text += correct_table_text
# 차트 XML에서 제목 추출
if chart_xml is not None:
chart_xml_tree = ET.fromstring(chart_xml)
# 차트 제목 추출
user_chart_title = chart_xml_tree.xpath('/c:chartSpace/c:chart/c:title/c:tx/c:rich/a:p/a:r/a:t', namespaces={'c': 'http://schemas.openxmlformats.org/drawingml/2006/chart', 'a': 'http://schemas.openxmlformats.org/drawingml/2006/main'})
# 차트 제목이 존재하는 경우
if user_chart_title:
user_input_text.append(user_chart_title[0].text)
# 차트 제목 정답 텍스트 추출
correct_chart_title = self.scoring_criteria["2"]["50"]["searchValue"]
correct_input_text.append(correct_chart_title)
# 각 요소에서 공백 제거
user_input_text = [text.replace(' ', '') for text in user_input_text]
correct_input_text = [text.replace(' ', '') for text in correct_input_text]
# 숫자와 특정 형식 제거 (예: 1., 2., 3., -)
user_input_text = [re.sub(r'\d+\.\s*|-', '', text) for text in user_input_text]
correct_input_text = [re.sub(r'\d+\.\s*|-', '', text) for text in correct_input_text]
try :
# xpath = self.scoring_criteria["2"]["29"]['path'].split("'")[1]
# ignore_word = xpath.split("'")[1]
ignore_word = self.scoring_criteria["2"]["29"]["ignoreWord"]
# 특정 단어 제거
# 오타와 누락의 경우만 판단하면 정상작동하지만
# 추가 된 단어의 경우를 채점기준에 추가하면 정확하게 채점 되지 않을 수 있음
# [정답] Hybrid [실제작성]
user_input_text = [text.replace(ignore_word, '') for text in user_input_text]
correct_input_text = [text.replace(ignore_word, '') for text in correct_input_text]
except (KeyError, IndexError, AttributeError):
ignore_word = None
print(f"ignore_word: {ignore_word}")
# 리스트를 하나의 문자열로 변경
user_input_text_str = ''.join(user_input_text)
currect_input_text_str = ''.join(correct_input_text)
print("user_input_text as string:")
print(user_input_text_str)
print("\ncurrect_input_text_answer as string:")
print(currect_input_text_str)
# 문자열의 차이를 비교
diff = difflib.ndiff(currect_input_text_str, user_input_text_str)
diff_list = list(diff)
# 차이점을 정리하여 result_diff에 저장
result_diff = []
# 누락 된 단어만 따로 리스트로 저장
missing_list = []
# 오타와 누락된 단어 리스트 저장
error_missing_list = []
skip_next = False
for i, line in enumerate(diff_list):
if skip_next:
skip_next = False
continue
# diff_list의 line 시작이 '-'이면서 다음 line이 '+'이면 두 line을 붙여서 맞춤법이 틀린 단어로 판단
if line.startswith('- '):
# 오타
if i + 1 < len(diff_list) and diff_list[i + 1].startswith('+ '):
line = line.replace('- ', '-')
next = diff_list[i + 1].replace('+ ', '')
result_diff.append(line+'=>'+next)
error_missing_list.append(line+'=>'+next)
skip_next = True
# 누락
else:
line = line.replace('- ', '-')
result_diff.append(line)
missing_list.append(line)
error_missing_list.append(line)
# 없어도 되는 글자가 있는 경우 (추가)
elif line.startswith('+ '):
line = line.replace('+ ', '+')
result_diff.append(line)
# result_diff 출력
# print("\nResult Differences:")
# for diff in result_diff:
# print(diff)
# result_diff 배열의 길이를 맨 앞에 저장
# 모든 차이를 계산해 점수 차감
# temp = 40 - min(len(result_diff)*2, 40)
# 누락된 텍스트만 계산해 점수 차감
# temp = 40 - min(len(missing_list)*2, 40)
# 2503회 기준 오타 1개당 [2점]->[1점] 차감
temp = 40 - min(len(error_missing_list)*1, 40)
self.set_typo_score(temp)
result_diff.insert(0, temp)
return result_diff
# XML 파일 채점
def score_directory(self, xml_directory, correct_answer_file):
# xml 파일 불러오기
xml_files = Path(xml_directory).glob('*.hml')
# 결과 저장할 리스트
results = []
for user_answer_file in xml_files:
result = {}
chart_xml = self.binary_to_chartxml(user_answer_file)
result['typo'] = self.typo_check(correct_answer_file, user_answer_file, chart_xml)
result['score'] = self._score_xml_file(user_answer_file, chart_xml)
# result['score']['score_results'][2]['points'] = result['typo'][0]
results.append(result)
return results
def parse_filename(self, filename):
if isinstance(filename, dict):
filename = filename.get('파일명', '')
match = re.match(r'.*-(\d+)-(.+)\.hml', filename)
if match:
number = match.group(1)
name = match.group(2)
return number, name
return None, None
def export_to_excel(self, results, output_path=None):
if output_path is None:
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") #연월일_시분초
# timestamp = datetime.now().strftime("%Y%m%d") #연월일
output_path = f"scoring_results_{timestamp}.xlsx"
summary_data = []
detail_data = []
typo_data = []
for temp in results:
# 요약 정보
result = temp['score']
summary_row = {
'파일명': result['filename'],
'총점': result.get('total_score', 0)
}
if 'error' in result:
summary_row['오류'] = result['error']
summary_data.append(summary_row)
# 상세 정보
if 'score_results' in result:
filename = {'파일명': result['filename']}
number, name = self.parse_filename(filename)
if (number or name) is None:
detail_row = {'채점항목': result['filename'] }
else:
detail_row = {'채점항목':f"{number}-{name}"}
section_num = None
row_index = []
for i, score_result in enumerate(result['score_results']):
current_section = score_result['section']
if section_num is None:
section_num = current_section
# 다음 섹션(문제0 => 문제1)로 넘어갔을 경우 or 마지막 문제일 경우
if current_section != section_num:
# 이전 섹션의 부분합을 출력
detail_row[f'문제{section_num}'] = result['partial_scores'][int(section_num)]['score']
row_index.append(f'문제{section_num}')
section_num = current_section
detail_row[f'{i+1}'] = score_result['points']
row_index.append(score_result['id'])
# 마지막 섹션(문제2)부분합 점수를 출력
if i == len(result['score_results']) - 1:
detail_row[f'문제{current_section}'] = result['partial_scores'][int(current_section)]['score']
row_index.append(f'문제{current_section}')
detail_row['총점'] = result.get('total_score', 0)
row_index.append('총점')
detail_data.append(detail_row)
summary_df = pd.DataFrame(summary_data)
detail_df = pd.DataFrame(detail_data).transpose()
detail_df.columns = detail_df.iloc[0]
detail_df = detail_df[1:]
detail_df.index = row_index
# detail_df = pd.DataFrame(detail_data)
for temp in results:
result = temp['typo']
typo_data.append(result)
typo_df = pd.DataFrame(typo_data).transpose()
# detail_df = pd.DataFrame(detail_data)
# ExcelWriter 객체 생성
with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
summary_df.to_excel(writer, sheet_name='채점결과요약', index=False)
detail_df.to_excel(writer, sheet_name='채점상세내역', index=True)
typo_df.to_excel(writer, sheet_name='오타내역', index=False)
# 열 너비 자동 조정
# for sheet_name in writer.sheets:
# worksheet = writer.sheets[sheet_name]
# for column_cells in worksheet.columns:
# max_length = 0
# column = column_cells[0].column_letter # 열의 문자
# for cell in column_cells:
# try:
# if cell.value:
# max_length = max(max_length, len(str(cell.value)))
# except:
# pass
# adjusted_width = (max_length + 2)
# worksheet.column_dimensions[column].width = adjusted_width
return output_path
def main():
# 시험회차 및 유형
exam_round = '2504'
# 250429기준 없는 시험 형식(A,B,C..)은 주석처리 하지 않으면 오류 발생
exam_types = [
'A',
# 'B',
# 'C',
]
# test_mode = False
test_mode = True
output_excel_paths = []
for exam_type in exam_types:
# JSON 채점기준표 파일 (예시:DIW_2503A.json)
# scoring_criteria_path = f'./DIW_{exam_round}.json'
scoring_criteria_path = f'./DIW_{exam_round}{exam_type}.json'
# xml(hml)파일 디렉토리 경로 (예시:./output/A/DIW)
# xml_directory = f'./output/{exam_type}/{"TEST" if test_mode else "DIW"}'
# 회차가 여러개인 경우
xml_directory = f'./output/{exam_round}/{exam_type}/{"TEST" if test_mode else "DIW"}'
# 오탈자 체크를 위한 정답 파일 경로 (예시:./output/A/DIW/DIW_2503A.hml)
# correct_answer_file = f'./output/{exam_type}/DIW/DIW_{exam_round}{exam_type}.hml'
correct_answer_file = f'./output/{exam_round}/{exam_type}/DIW/DIW_{exam_round}{exam_type}.hml'
# 엑셀 파일명 (비어있으면 자동생성) (예시:241001_DIW_2503A_채점결과.xlsx)
timestamp = datetime.now().strftime("%y%m%d")
output_path = f'{timestamp}_DIW_{exam_round}회_{exam_type}형_{"TEST" if test_mode else "채점결과"}.xlsx'
# 채점 클래스 초기화
scorer = XMLScorer(scoring_criteria_path)
# 폴더 내 모든 xml 파일 채점
results = scorer.score_directory(xml_directory, correct_answer_file)
# 채점 결과 엑셀로 저장
output_excel_paths.append(scorer.export_to_excel(results, output_path))
print(f"채점 결과 엑셀 파일: {output_excel_paths}")
if __name__ == '__main__':
main()

View File

@@ -236,6 +236,7 @@ class XMLScorer:
category = criterion.get('category', None) category = criterion.get('category', None)
item = criterion.get('item', None) item = criterion.get('item', None)
option = criterion.get('option', None) option = criterion.get('option', None)
ignore_word = criterion.get('ignoreWord', None)
similar_text = None similar_text = None
# search_value가 있는 경우 # search_value가 있는 경우
@@ -253,6 +254,9 @@ class XMLScorer:
xpath2 = xpath2.replace('{option}', option) if xpath2 else "" xpath2 = xpath2.replace('{option}', option) if xpath2 else ""
chart_xpath = chart_xpath.replace('{option}', option) if chart_xpath else "" chart_xpath = chart_xpath.replace('{option}', option) if chart_xpath else ""
if ignore_word:
xpath = xpath.replace('{ignoreWord}', ignore_word) if xpath else ""
# 문항 별 채점 결과 저장 # 문항 별 채점 결과 저장
scoring = { scoring = {
@@ -528,6 +532,7 @@ class XMLScorer:
# 가로 차트일 경우에만 x축과 y축을 바꿔줌 # 가로 차트일 경우에만 x축과 y축을 바꿔줌
# 세로, 꺾은선, 원형 차트의 경우 그대로 사용 # 세로, 꺾은선, 원형 차트의 경우 그대로 사용
if "가로" in chart_type: if "가로" in chart_type:
if "catAx" in chart_xpath: if "catAx" in chart_xpath:
chart_xpath = chart_xpath.replace("catAx", "valAx") chart_xpath = chart_xpath.replace("catAx", "valAx")
@@ -539,10 +544,13 @@ class XMLScorer:
# valAx의 axPos(축의위치) 속성값으로 축의 방향을 구분함 # valAx의 axPos(축의위치) 속성값으로 축의 방향을 구분함
elif "분산형" in chart_type: elif "분산형" in chart_type:
if "catAx" in chart_xpath: if "catAx" in chart_xpath:
# valAx[c:axPos/@val='b'] : 값축의 위치가 bottom (가로,x축) # 분산형 차트는 catAx 대신 valAx를 사용하거나,
chart_xpath = chart_xpath.replace("catAx", "valAx[c:axPos/@val='b']") # catAx를 사용하더라도 bottom 위치의 축만 해당
xpath_with_valax = chart_xpath.replace("catAx", "valAx[c:axPos/@val='b']")
xpath_with_catax = chart_xpath.replace("catAx", "catAx[c:axPos/@val='b']")
# 두 경로를 OR 조건으로 결합
chart_xpath = xpath_with_valax + " | " + xpath_with_catax
elif "valAx" in chart_xpath: elif "valAx" in chart_xpath:
# valAx[c:axPos/@val='l'] : 값축의 위치가 left (세로,y축)
chart_xpath = chart_xpath.replace("valAx", "valAx[c:axPos/@val='l']") chart_xpath = chart_xpath.replace("valAx", "valAx[c:axPos/@val='l']")
chart_items = chart_tree.xpath(chart_xpath, namespaces=namespaces) if chart_xpath else [] chart_items = chart_tree.xpath(chart_xpath, namespaces=namespaces) if chart_xpath else []
@@ -1063,13 +1071,16 @@ class XMLScorer:
'꺾은선형': "//c:lineChart[c:grouping[@val='standard']]", '꺾은선형': "//c:lineChart[c:grouping[@val='standard']]",
'묶은가로막대형': "//c:barChart[c:barDir[@val='bar'] and c:grouping[@val='clustered']]", '묶은가로막대형': "//c:barChart[c:barDir[@val='bar'] and c:grouping[@val='clustered']]",
'누적가로막대형': "//c:barChart[c:barDir[@val='bar'] and c:grouping[@val='stacked']]", '누적가로막대형': "//c:barChart[c:barDir[@val='bar'] and c:grouping[@val='stacked']]",
'100%기준누적가로막대형': "//c:barChart[c:barDir[@val='bar'] and c:grouping[@val='percentStacked']]",
'원뿔형누적가로막대형': "//c:bar3DChart[c:barDir[@val='bar'] and c:grouping[@val='stacked']]", '원뿔형누적가로막대형': "//c:bar3DChart[c:barDir[@val='bar'] and c:grouping[@val='stacked']]",
'묶은세로막대형': "//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']]", '묶은세로막대형': "//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']]",
'누적세로막대형': "//c:barChart[c:barDir[@val='col'] and c:grouping[@val='stacked']]", '누적세로막대형': "//c:barChart[c:barDir[@val='col'] and c:grouping[@val='stacked']]",
'100%기준누적세로막대형': "//c:barChart[c:barDir[@val='col'] and c:grouping[@val='percentStacked']]",
'원형': "//c:pieChart", '원형': "//c:pieChart",
'분산형': "//c:scatterChart", '분산형': "//c:scatterChart",
'표식만있는분산형': "//c:scatterChart[c:scatterStyle[@val='marker']]", '표식만있는분산형': "//c:scatterChart[c:scatterStyle[@val='marker']]",
'곡선이있는분산형': "//c:scatterChart[c:scatterStyle[@val='smooth']]"
} }
chart_type = criterion.get('chart_type').replace(" ","") chart_type = criterion.get('chart_type').replace(" ","")
@@ -1331,7 +1342,15 @@ class XMLScorer:
# XML 파일 채점 # XML 파일 채점
def score_directory(self, xml_directory, correct_answer_file): def score_directory(self, xml_directory, correct_answer_file):
# xml 파일 불러오기 # xml 파일 불러오기
xml_files = Path(xml_directory).glob('*.hml') # xml_files = Path(xml_directory).glob('*.hml')
# 정답파일명(answer_filename)을 기준으로 xml_files 정렬
# 정답 파일이 가장 앞에 오도록)
answer_filename = Path(correct_answer_file).name # 파일명만 추출
xml_files = sorted(
Path(xml_directory).glob('*.hml'),
key=lambda f: (0 if f.name == answer_filename else 1, f.name)
)
# 채점결과 저장할 리스트 # 채점결과 저장할 리스트
score_results = [] score_results = []
@@ -1382,10 +1401,11 @@ class XMLScorer:
if 'score_results' in result: if 'score_results' in result:
filename = {'파일명': result['filename']} filename = {'파일명': result['filename']}
number, name = self.parse_filename(filename) number, name = self.parse_filename(filename)
# 파일명에서 번호와 이름이 추출되지 않는 경우
if (number or name) is None: if (number or name) is None:
detail_row = {'채점항목': result['filename'] } detail_row = {'채점항목': result['filename'] }
else: else:
detail_row = {'채점항목':f"{number}-{name}"} detail_row = {'채점항목': f"{number}-{name}"}
section_num = None section_num = None
row_index = [] row_index = []
@@ -1470,15 +1490,16 @@ class XMLScorer:
def main(): def main():
# 시험회차 및 유형 # 시험회차 및 유형
exam_round = '2512' exam_round = '2604'
# exam_round = '2522' # exam_round = '2522'
# 채점하고자 하는 유형은 주석 해제 # 채점하고자 하는 유형은 주석 해제
exam_types = [ exam_types = [
'A', # 'A',
# 'B', # 'B',
# 'C', 'C',
# 'D', # 'D',
# 'E',
] ]
test_mode = False test_mode = False
@@ -1487,17 +1508,18 @@ def main():
output_excel_paths = [] output_excel_paths = []
for exam_type in exam_types: for exam_type in exam_types:
# JSON 채점기준표 파일 (예시:DIW_2503A.json) # JSON 채점기준표 파일 (예시:DIW_2503A.json)
scoring_criteria_path = f'./DIW_{exam_round}{exam_type}.json' scoring_criteria_path = f'./JSON/{exam_round}/DIW_{exam_round}{exam_type}.json'
# xml(hml)파일 디렉토리 경로 (예시:./output/2503/A/DIW) # xml(hml)파일 디렉토리 경로 (예시:./output/2503/A/DIW)
xml_directory = f'./output/{exam_round}/{exam_type}/{"TEST" if test_mode else "DIW"}' xml_directory = f'./output/{exam_round}/{exam_type}/{"TEST" if test_mode else "DIW"}'
# 오탈자 체크를 위한 정답 파일 경로 (예시:./output/A/DIW/DIW_2503A.hml)
# correct_answer_file = f'./output/{exam_type}/DIW/DIW_{exam_round}{exam_type}.hml' # 오탈자 체크를 위한 정답 파일 경로
correct_answer_file = f'./output/{exam_round}/{exam_type}/{"TEST" if test_mode else "DIW"}/DIW_{exam_round}{exam_type}.hml' correct_answer_file = f'./output/{exam_round}/{exam_type}/{"TEST" if test_mode else "DIW"}/DIW_{exam_round}{exam_type}.hml'
# 엑셀 파일명 (비어있으면 자동생성) (예시:241001_DIW_2503A_채점결과.xlsx) # 엑셀 파일명 (비어있으면 자동생성) (예시:241001_DIW_2503A_채점결과.xlsx)
timestamp = datetime.now().strftime("%y%m%d") timestamp = datetime.now().strftime("%y%m%d")
output_path = f'{timestamp}_DIW_{exam_round}{exam_type}_{"TEST" if test_mode else "채점결과"}.xlsx'
output_path = f'./{timestamp}_DIW_{exam_round}{exam_type}_{"TEST" if test_mode else "채점결과"}.xlsx'
# 채점 클래스 초기화 # 채점 클래스 초기화
scorer = XMLScorer(scoring_criteria_path) scorer = XMLScorer(scoring_criteria_path)

File diff suppressed because it is too large Load Diff

View File

@@ -1,63 +0,0 @@
from hanspell import spell_checker
from lxml import etree as ET
import difflib
# sent = ['서울시 용일동 보건소에서 주최하는 ','즐거운 컬러푸드 영양교실', '은 제8회째 진행하는 행사입니다. 조화로운 식생활과 건강한 삶을 유지하도록 음식 재료의 빛깔만큼이나 다양한 효능이 그 속에 담겨져 있는 컬러푸드에 대한 올바른 영양지식을 제공하고 지역주민들이 직접 참여하여 각각의 맛과 특징을 살펴보고 골고루 먹기의 중요성을 컬러푸드 체험을 통하여 배울 수 있습니다. 이 밖에 아이들을 위한 영양 식단과 고혈압, 당뇨, 비만예방 식단 및 컬러푸드를 이용한 영양 간식 만들기 등 다양한 프로그램이 준비되어 있습니다. 아이들에게는 좋은 경험이 될 수 있는 이번 행사에 많은 참여 부탁드립니다.']
# spelled_check=spell_checker.check(sent)
xml_path_origin = r"/Users/waterdrw/Works/KAIT/HWP-Scoring/output/정답.hml"
xml_path = r"/Users/waterdrw/Works/KAIT/HWP-Scoring/output/워드(한글)-010036-구준호.hml"
tree = ET.parse(xml_path)
root = tree.getroot()
tree_origin = ET.parse(xml_path_origin)
root_origin = tree_origin.getroot()
# xpath로 바이너리 부분추출
input_text = root.xpath('//CHAR/text()')
input_text_origin = root_origin.xpath('//CHAR/text()')
# 각 요소에서 공백 제거
input_text = [text.replace(' ', '') for text in input_text]
input_text_origin = [text.replace(' ', '') for text in input_text_origin]
# 리스트를 하나의 문자열로 변경
input_text_str = ''.join(input_text)
input_text_origin_str = ''.join(input_text_origin)
print("input_text as string:")
print(input_text_str)
print("\ninput_text_origin as string:")
print(input_text_origin_str)
# 문자열의 차이를 비교
diff = difflib.ndiff(input_text_origin_str, input_text_str)
diff_list = list(diff)
# 차이점을 정리하여 result_diff에 저장
result_diff = []
skip_next = False
for i, line in enumerate(diff_list):
if skip_next:
skip_next = False
continue
# diff_list의 line 시작이 '-'이면서 다음 line이 '+'이면 두 line을 붙여서 맞춤법이 틀린 단어로 판단
if line.startswith('- '):
if i + 1 < len(diff_list) and diff_list[i + 1].startswith('+ '):
line = line.replace('- ', '-')
next = diff_list[i + 1].replace('+ ', '')
result_diff.append(line+'=>'+next)
skip_next = True
else:
line = line.replace('- ', '-')
result_diff.append(line)
elif line.startswith('+ '):
line = line.replace('+ ', '+')
result_diff.append(line)
# result_diff 출력
print("\nResult Differences:")
for diff in result_diff:
print(diff)

Binary file not shown.

View File

@@ -1,148 +0,0 @@
from lxml import etree
from difflib import SequenceMatcher
import json
class XMLPathHandler:
def __init__(self, xml_file_path):
"""
XML 파일을 로드하고 처리하는 핸들러
:param xml_file_path: XML 파일 경로
"""
self.tree = etree.parse(xml_file_path)
self.root = self.tree.getroot()
def similar(self, a, b):
"""
두 문자열의 유사도를 계산
:return: 유사도 점수 (0~1)
"""
return SequenceMatcher(None, a, b).ratio()
def find_similar_text(self, search_value, element_name, arg_name, threshold=0.8):
"""
XML에서 유사한 텍스트를 찾음
:param search_value: 찾고자 하는 텍스트
:param element_name: 검색할 요소 이름
:param arg_name: 검색할 속성 이름
:param threshold: 유사도 임계값
:return: 가장 유사한 텍스트와 점수
"""
# 특정 요소의 특정 속성을 가진 모든 요소 검색
xpath = f"//{element_name}[@{arg_name}]"
elements = self.root.xpath(xpath)
best_match = None
best_score = 0
for element in elements:
attr_value = element.get(arg_name)
if attr_value is not None:
score = self.similar(search_value, attr_value)
if score > threshold and score > best_score:
best_match = attr_value
best_score = score
return best_match, best_score
def build_xpath(self, item):
"""
설정 항목을 기반으로 XPath 생성
:param item: 설정 항목
:return: 구성된 XPath와 매칭된 텍스트, 유사도 점수
"""
if not all(key in item for key in ['ele', 'arg', 'searchValue']):
return None, None, 0
# 유사 텍스트 검색
matched_text, score = self.find_similar_text(
item['searchValue'],
item['ele'],
item['arg']
)
if matched_text:
# 기본 XPath 템플릿 구성
xpath = f"//{item['ele']}[@{item['arg']}='{matched_text}']"
# path가 제공된 경우, 해당 path를 기반으로 XPath 구성
if 'path' in item and item['path']:
xpath = item['path'].replace(f"[@{item['arg']}='']", f"[@{item['arg']}='{matched_text}']")
xpath = xpath.replace(f"[@{item['arg']}='searchValue']", f"[@{item['arg']}='{matched_text}']")
return xpath, matched_text, score
return None, None, 0
def process_config(self, config):
"""
설정된 JSON 설정을 처리
:param config: JSON 설정
:return: 처리된 XPath 결과들
"""
results = {}
for key, item in config.items():
results[key] = {
'original_config': item,
'processed_results': {}
}
xpath, matched_text, score = self.build_xpath(item)
if xpath:
try:
xpath_results = self.root.xpath(xpath)
results[key]['processed_results'] = {
'original_value': item['searchValue'],
'matched_value': matched_text,
'similarity_score': score,
'xpath': xpath,
'results': xpath_results
}
except etree.XPathEvalError as e:
results[key]['error'] = f"XPath evaluation error: {str(e)}"
else:
results[key]['error'] = "Unable to build XPath: missing required configuration"
return results
# 사용 예시
def main():
config = {
"0": {
"path": "//TEXTART[@Text='']/TEXTARTSHAPE/@FontName",
"ele": "TEXTART",
"arg": "Text",
"searchValue": "즐거운컬러푸드영양교실",
"value": "궁서체",
"points": 10
},
"1": {
"path": "//PARASHAPE[@Id=//TEXTART[@Text='']/ancestor::P/@ParaShape]/@Align",
"ele": "PARASHAPE",
"arg": "Align",
"searchValue": "Center",
"value": "Center",
"points": 2
}
}
xmlPath = r"C:\Users\dra\project\HWP-Scoring\output\1.hml";
handler = XMLPathHandler(xmlPath)
results = handler.process_config(config)
# 결과 출력
for key, result in results.items():
print(f"\nProcessing config item {key}:")
print(f"Original config: {result['original_config']}")
if 'error' in result:
print(f"Error: {result['error']}")
else:
processed = result['processed_results']
print(f"Generated XPath: {processed['xpath']}")
print(f"Matched text: {processed['matched_value']}")
print(f"Similarity score: {processed['similarity_score']}")
print(f"Results found: {processed['results']}")
if __name__ == "__main__":
main()

View File

@@ -1,49 +0,0 @@
문제2
- 글상자-크기(너비,높이) 채점 안됨 (4, 5)
- 그림삽입-크기(너비,높이) 채점 안됨 (15, 16)
- 그림삽입-위치 (어울림 : 세로-쪽의 위 23mm) 채점 안됨 (18)
>> mm에서 포인트로 변환 후 비교하여 채점하는 과정에서 소수점 단위의 오차가 발생
>> 너비, 높이 등 길이 채점 시 오차범위 추가
- 편집-문구 ("…서로 다른 색과 맛이…") "이" → "을" 글자바꿈 채점 안됨
- 편집-문구 ("…튼튼하게 혈관을…") "튼튼하게" / "혈관을" 순서바꿈 채점 안됨
>> 채점 방식 수정
수시5-002294-우시현
- 1페이지에 문제2 답안 작성, 2페이지는 빈페이지 => 문제2 채점 제외대상
ㄴ> (문제1에 머릿말은 채점해주신대로 점수가 들어가는게 맞을 것 같습니다. 문제2만 채점 점수 없는걸로 해주시면 됩니다)
>> 페이지 별 채점 채점 적용
<워드프로세서>
1. 문제2-쪽테두리 설정은 해당 페이지에 쪽테두리가 지시사항 처럼 설정되어 있으면 정답
> (구역이 나뉘어져 있지 않는 경우, 양쪽이 아닌 짝수로 설정한 경우가 있음)
>> 특정 페이지만 검사하지 않고 쪽테두리 적용이 되어있으면 정상 채점
2. 문제2-속성-문구1-크기 배점 1점인데 2점씩 채점
>> 채점 기준 수정
3. 문제1-특수문자 (009866-성유나) 특수문자 3개 다 있는데 2점
>> 채점 기준 수정
4. 문제2-다단-구역나누기 (009866-성유나) 구역이 나누어져 있지 않은데 점수 3점받음
>> 채점 기준 수정
5. 문제2-다단-다단2단 (009866-성유나),(009890-오지은) 다단이 나누이져 있는데 감점
>> 채점 기준 수정
6. 문제2-속성-문구1,2 (009866-성유나),(009890-오지은) 글씨체(굴림),크기11pt,진하게 다되어있는데 감점
>> 채점 기준 수정
7. 오타(띄어쓰기 개수만큼 차감)
> 문제2의 표내에 오타가 있어서 차트 범주에도 오타가 있더라도, 1번만 차감
8. 쪽테두리는 구역이 나뉘어져 있지 않더라도 해당 페이지(2페이지)에 쪽테두리가 지시사항처럼 설정되었으면 정답
>> 1. 쪽나눔 (한글 내부에서 Control+Enter 혹은 Enter여러번으로 다음 쪽으로 이동)의 경우 SECTION 태그가 생성되지 않음
2. Control+Enter
"path": "sum(//CHAR[contains(text(),'♤')]/string-length(text())) - sum(//CHAR[contains(text(),'♤')]/string-length(translate(text(), '♤', '')))+sum(//CHAR[contains(text(),'※')]/string-length(text()))-//CHAR[contains(text(),'※')]/string-length(translate(text(),'※',''))",
기존 채점 기준은 오탈자가 나면 채점 기준에서 제외
현재 개발과정의 채점 기준은 문구의 오탈자를 포함해 유사한 단어를 찾아 채점 하는 방식이므로
기존 채점방식과 최종 점수가 상이할 가능성이 존재

View File

@@ -1,13 +0,0 @@
# 오류 및 문제점
## 1. 원인 파악이나 해결이 어려운 경우
### 한글문서(.hwpx)에 수험자가 차트 텍스트 속성을 변경해서 저장했지만 차트 xml파일에 옵션이 적용되지 않는 경우가 있음
#### (2-50) 문항 차트 제목 굵게 속성만
1. 정상적으로 텍스트 속성이 적용되는 수험자의 차트를 복사
2. 텍스트 속성이 적용되지 않는 수험자의 한글 파일에 차트를 붙여넣을 경우
3. 정상적으로 XML파일에 텍스트 속성이 적용
- 이로 미루어 볼 때, 차트객체의 문제일 것으로 판단되지만 해결 방안은 현재 없음

View File

@@ -1,850 +0,0 @@
{
"0": {
"0": {
"path": "",
"path2": "",
"points": 0,
"category": "파일저장",
"item": "파일명 (수검번호.hwp/hwpx)"
},
"1": {
"path": "//PAGEMARGIN",
"value": {
"Top": 20,
"Bottom": 20,
"Left": 20,
"Right": 20,
"Header": 10,
"Footer": 10,
"Gutter": 0
},
"tolerance": 1,
"points": 4,
"category": "PageSetting",
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
},
"2": {
"path": "",
"value": {
"FontName": "바탕",
"FontSize": "1000",
"Alignment": "Justify",
"LineSpacing": "160"
},
"points": 4,
"category": "BasicSetting",
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
},
"3": {
"path": "",
"value": null,
"points": 40,
"category": "오타감점",
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
}
},
"1": {
"1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "디지털문서편집컨퍼런스",
"value": "견고딕",
"points": 1,
"category": "OneAnswer",
"item": "문구 (디지털문서편집컨퍼런스)/① 글씨체 (견고딕)"
},
"2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "디지털문서편집컨퍼런스",
"value": "28,61,98",
"points": 2,
"category": "Color",
"item": "문구 (디지털문서편집컨퍼런스)/② 채우기 : 색상(RGB:28,61,98)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "디지털문서편집컨퍼런스",
"value": "120",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (디지털문서편집컨퍼런스)/③ 크기-너비 (120 mm)"
},
"4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "디지털문서편집컨퍼런스",
"value": "20",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (디지털문서편집컨퍼런스)/④ 크기-높이 (20 mm)"
},
"5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "디지털문서편집컨퍼런스",
"value": "true",
"points": 2,
"category": "OneAnswer",
"item": "문구 (디지털문서편집컨퍼런스)/⑤ 위치 (글자처럼 취급)"
},
"6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "디지털문서편집컨퍼런스",
"value": "Center",
"points": 2,
"category": "OneAnswer",
"item": "문구 (디지털문서편집컨퍼런스)/⑥ 정렬 (가운데 정렬)"
},
"7": {
"path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "디지털문서편집컨퍼런스",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (디지털문서편집컨퍼런스)/⑦ 글맵시모양 (육안확인)"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "디",
"value": {
"Height": 2800,
"Width": 2800
},
"tolerance": 200,
"points": 1,
"category": "TwoLineSize",
"item": "어/① 모양 (2줄)"
},
"9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "디",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "어/② 글씨체 (중고딕)"
},
"10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "디",
"value": "157,92,187",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:157,92,187)"
},
"11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "디",
"value": "3.0",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "어/④ 본문과의 간격 : 3.0mm"
},
"12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "다양한 분야의 세미나와 전시",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (다양한 분야의 세미나와 전시)/① BOLD"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "다양한 분야의 세미나와 전시",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (다양한 분야의 세미나와 전시)/② UNDERLINE"
},
"14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "■",
"char2": "■",
"char3": "※",
"value": 3,
"points": 3,
"category": "SpecialChar",
"item": "① ■, ② ■, ③ ※"
},
"15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "문구 (■ 행사안내 ■)/① 글씨체 (굴림)"
},
"16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "행사안내",
"value": "Center",
"points": 1,
"category": "Align",
"item": "문구 (■ 행사안내 ■)/② 정렬 (가운데 정렬)"
},
"17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025.12.24.(수) 18:00까지 전화로 등록 가능(02-1234-5678)",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025.12.24.(수) 18:00까지 전화로 등록 가능(02-1234-5678))/① ITALIC"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025.12.24.(수) 18:00까지 전화로 등록 가능(02-1234-5678)",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025.12.24.(수) 18:00까지 전화로 등록 가능(02-1234-5678))/② UNDERLINE"
},
"19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "기타사항",
"value": {
"Left": 10,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 12. 20.",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/① 크기 (1400)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 12. 20.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 12. 20.)/② 정렬 (가운데 정렬)"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "사단법인 스마트오피스협의회",
"value": "돋움체",
"points": 1,
"category": "FontName",
"item": "문구 (사단법인 스마트오피스협의회)/① 글씨체 (돋움체)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "사단법인 스마트오피스협의회",
"value": "2700",
"points": 1,
"category": "OneAnswer",
"item": "문구 (사단법인 스마트오피스협의회)/② 크기 (2700)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "사단법인 스마트오피스협의회",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (사단법인 스마트오피스협의회)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "궁서",
"points": 1,
"category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (궁서)"
},
"26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "Ideograph",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomCenter",
"points": 2,
"category": "PageNumber",
"item": "왼쪽 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight",
"왼쪽 아래": "BottomLeft"
}
},
"30": {
"path": "//CHAR[contains(text(),'{searchValue}')]",
"searchValue": "http",
"value": true,
"points": 2,
"category": "hyperlink",
"item": "문구 (http://www.ihd.or.kr)/하이퍼링크 없이 작성",
"desc": "searchValue에 해당하는 주소 문구에 하이퍼링크가 하나라도 설정되어 있으면 오답"
},
"31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "190",
"first_word": "디",
"points": 2,
"category": "LineSpacing",
"item": "문제 1 줄간격 190% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
}
},
"2": {
"1": {
"path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside",
"path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]",
"value": {
"header_inside": true,
"all_double_slim": true
},
"points": 4,
"category": "PageBorder",
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
},
"2": {
"path": "count(//SECTION)>1",
"value": true,
"points": 3,
"category": "Boolean",
"item": "① 구역나누기",
"desc": "섹션이 1개 이상이면 점수부여"
},
"3": {
"path": "./TEXT/COLDEF/@Count",
"value": "2",
"points": 3,
"category": "TwoColumn",
"item": "② 다단 2단"
},
"4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "70",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (된장의 역사와 종류)/① 크기-너비 (70 mm)"
},
"5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (된장의 역사와 종류)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE//LINESHAPE",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "Rectangle.LineShape",
"item": "문구 (된장의 역사와 종류)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE/@Ratio",
"value": "50",
"points": 2,
"category": "Rectangle.OneAnswer",
"item": "문구 (된장의 역사와 종류)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "227,220,193",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (된장의 역사와 종류)/⑤ 채우기 : 색상(RGB:227,220,193)"
},
"9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true",
"points": 1,
"category": "Rectangle.OneAnswer",
"item": "문구 (된장의 역사와 종류)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (된장의 역사와 종류)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": ".//RECTANGLE//TEXT/@CharShape",
"value": "맑은 고딕",
"points": 1,
"category": "Rectangle.FontName",
"item": "문구 (된장의 역사와 종류)/⑧ 글씨체 (맑은 고딕)"
},
"12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "2000",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (된장의 역사와 종류)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id={rect_parashape_id}]/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (된장의 역사와 종류)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "85",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (85 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "24",
"points": 2,
"category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)"
},
"19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 디지털 문서 편집 기술",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구① (1. 디지털 문서 편집 기술)/① 글씨체 (중고딕)"
},
"20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 디지털 문서 편집 기술",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구① (1. 디지털 문서 편집 기술)/② 크기 (1200)"
},
"21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 디지털 문서 편집 기술",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구① (1. 디지털 문서 편집 기술)/③ 진하게"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 문서 자동화 솔루션",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구② (2. 문서 자동화 솔루션)/① 글씨체 (중고딕)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 문서 자동화 솔루션",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구② (2. 문서 자동화 솔루션)/② 크기 (1200)"
},
"24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 문서 자동화 솔루션",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구② (2. 문서 자동화 솔루션)/③ 진하게"
},
"25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "전자 서명",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (전자 서명)/① 각주 설정 및 문구 입력"
},
"26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "공개키 암호화 방식을 사용하여 본인인증, 혹은 전자문서의 부인 방지를 위해 사용되는 기술",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구 (전자 서명)/② 글씨체 (돋움)"
},
"27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "공개키 암호화 방식을 사용하여 본인인증, 혹은 전자문서의 부인 방지를 위해 사용되는 기술",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (전자 서명)/③ 크기 (9pt)"
},
"28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "공개키 암호화 방식을 사용하여 본인인증, 혹은 전자문서의 부인 방지를 위해 사용되는 기술",
"value": "CircledDigit",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Security')])",
"ignoreWord": "Security",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Security/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
},
"30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [
["초안", "草案"],
["진위", "眞僞"],
["탑재", "搭載"],
["자동", "自動"],
["극대화", "極大化"]
],
"value": 10,
"points": 10,
"category": "Hanja",
"item": "① 초안(草案), ② 진위(眞僞), ③ 탑재(搭載), ④ 자동(自動), ⑤ 극대화(極大化)"
},
"31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'간과비용')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…대체하면서 비용이 시간과 절감될…)>'비용이 / 시간과' 순서바꿈"
},
"32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'이필요한')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…인력 투입이 필요해 수작업…)>'해' → '한' 글자바꿈"
},
"33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "디지털 문서 편집 기술 성장률(단위:%)",
"value": "굴림체",
"points": 1,
"category": "FontName",
"item": "제목 문구 (디지털 문서 편집 기술 성장률(단위:%))/① 글씨체 (굴림체)"
},
"34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "디지털 문서 편집 기술 성장률(단위:%)",
"value": "1100",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (디지털 문서 편집 기술 성장률(단위:%))/② 크기 (1100)"
},
"35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "디지털 문서 편집 기술 성장률(단위:%)",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "제목 문구 (디지털 문서 편집 기술 성장률(단위:%))/③ 진하게"
},
"36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "디지털 문서 편집 기술 성장률(단위:%)",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (디지털 문서 편집 기술 성장률(단위:%))/④ 정렬 (가운데 정렬)"
},
"37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "233,174,43",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:233,174,43)"
},
"38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "위쪽 제목 셀/② 진하게",
"desc": "글자 속성이라 CELLZONE으로 적용 되지 않음"
},
"39": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type",
"value": "DoubleSlim",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/① 이중실선"
},
"40": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width",
"value": "0.5mm",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/② 0.5mm"
},
"41": {
"path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "굴림",
"points": 1,
"category": "TableFontName",
"category_tmp": "FontName",
"item": "글자모양/① 글씨체 (굴림)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
},
"42": {
"path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
"value": "1000",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/② 크기 (1000)"
},
"43": {
"path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
"value": "Center",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/③ 정렬 (가운데 정렬)"
},
"44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "AVG",
"value": true,
"points": 4,
"category": "Boolean",
"item": "블록 계산식/합계",
"desc": "option값에 합계는 SUM / 평균은 AVG"
},
"45": {
"chart_xpath": "",
"chart_type": "묶은 가로 막대형",
"value": true,
"points": 2,
"category": "ChartType",
"item": "① 종류 (묶은 가로 막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
},
"46": {
"chart_xpath": "//c:valAx/c:majorTickMark/@val",
"value": "out",
"points": 2,
"category": "ChartOneAnswer",
"item": "② 값 축 주 눈금선",
"desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
},
"47": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "③ 크기-너비 (80 mm)"
},
"48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "90",
"points": 2,
"category": "mmSize",
"item": "④ 크기-높이 (90 mm)"
},
"49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
"value": true,
"points": 2,
"category": "Boolean",
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
"desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "디지털 문서 편집 기술 성장률",
"value": "휴먼옛체",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (디지털 문서 편집 기술 성장률)/① 글씨체 (휴먼옛체)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "디지털 문서 편집 기술 성장률",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (디지털 문서 편집 기술 성장률)/② 크기 (1200)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b",
"searchValue": "디지털 문서 편집 기술 성장률",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (디지털 문서 편집 기술 성장률)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface",
"value": "궁서",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/① 글꼴 (궁서)"
},
"54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/② 크기 (9pt)"
},
"55": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface",
"value": "궁서",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (궁서)"
},
"57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/② 크기 (9pt)"
},
"58": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"59": {
"chart_xpath": "//c:legend//a:ea/@typeface",
"value": "궁서",
"points": 1,
"category": "OneAnswer",
"item": "범례/① 글꼴 (궁서)"
},
"60": {
"chart_xpath": "//c:legend//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "범례/② 크기 (9pt)"
},
"61": {
"chart_xpath": "//c:legend//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "범례/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}
}
}

View File

@@ -1,841 +0,0 @@
{
"0": {
"0": {
"path": "",
"path2": "",
"points": 0,
"category": "파일저장",
"item": "파일명 (수검번호.hwp/hwpx)"
},
"1": {
"path": "//PAGEMARGIN",
"value": {
"Top": 20,
"Bottom": 20,
"Left": 20,
"Right": 20,
"Header": 10,
"Footer": 10,
"Gutter": 0
},
"tolerance": 1,
"points": 4,
"category": "PageSetting",
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
},
"2": {
"path": "",
"value": {
"FontName": "바탕",
"FontSize": "1000",
"Alignment": "Justify",
"LineSpacing": "160"
},
"points": 4,
"category": "BasicSetting",
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
},
"3": {
"path": "",
"value": null,
"points": 40,
"category": "오타감점",
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
}
},
"1": {
"1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "한산해안갯벌체험교실",
"value": "견고딕",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/① 글씨체 (견고딕)"
},
"2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "한산해안갯벌체험교실",
"value": "51,69,153",
"points": 2,
"category": "Color",
"item": "문구 (한산해안갯벌체험교실)/② 채우기 : 색상(RGB:51,69,153)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "한산해안갯벌체험교실",
"value": "110",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (한산해안갯벌체험교실)/③ 크기-너비 (110 mm)"
},
"4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "한산해안갯벌체험교실",
"value": "20",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (한산해안갯벌체험교실)/④ 크기-높이 (20 mm)"
},
"5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "한산해안갯벌체험교실",
"value": "true",
"points": 2,
"category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/⑤ 위치 (글자처럼 취급)"
},
"6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "한산해안갯벌체험교실",
"value": "Center",
"points": 2,
"category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/⑥ 정렬 (가운데 정렬)"
},
"7": {
"path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "한산해안갯벌체험교실",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (한산해안갯벌체험교실)/⑦ 글맵시모양 (육안확인)"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "갯",
"value": {
"Height": 2800,
"Width": 2800
},
"tolerance": 200,
"points": 1,
"category": "TwoLineSize",
"item": "어/① 모양 (2줄)"
},
"9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "갯",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "어/② 글씨체 (굴림)"
},
"10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "갯",
"value": "219,207,102",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:219,207,102)"
},
"11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "갯",
"value": "3.0",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "어/④ 본문과의 간격 : 3.0mm"
},
"12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "한산해안 갯벌체험 교실",
"value": "BOLD",
"points": 2,
"category": "FontAttribute",
"item": "문구 (한산해안 갯벌체험 교실)/① BOLD"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "한산해안 갯벌체험 교실",
"value": "ITALIC",
"points": 2,
"category": "FontAttribute",
"item": "문구 (한산해안 갯벌체험 교실)/② ITALIC"
},
"14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "≪",
"char2": "≫",
"char3": "※",
"value": 3,
"points": 3,
"category": "SpecialChar",
"item": "① ≪, ② ≫, ③ ※"
},
"15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구 (≪ 행사안내 ≫)/① 글씨체 (돋움)"
},
"16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "행사안내",
"value": "Center",
"points": 1,
"category": "Align",
"item": "문구 (≪ 행사안내 ≫)/② 정렬 (가운데 정렬)"
},
"17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 12월 20일(토) 13:30 ~ 17:30",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 12월 20일(토) 13:30 ~ 17:30)/① BOLD"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 12월 20일(토) 13:30 ~ 17:30",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 12월 20일(토) 13:30 ~ 17:30)/② UNDERLINE"
},
"19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "신청안내",
"value": {
"Left": 10,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 12. 11.",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 12. 11.)/① 크기 (1400)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 12. 11.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 12. 11.)/② 정렬 (가운데 정렬)"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "한산시청해양자원육성과",
"value": "견고딕",
"points": 1,
"category": "FontName",
"item": "문구 (한산시청해양자원육성과)/① 글씨체 (견고딕)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "한산시청해양자원육성과",
"value": "2200",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한산시청해양자원육성과)/② 크기 (2200)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "한산시청해양자원육성과",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한산시청해양자원육성과)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "돋움체",
"points": 1,
"category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (돋움체)"
},
"26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "DecagonCircle",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (A,B,C 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomCenter",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight",
"왼쪽 아래": "BottomLeft"
}
},
"30": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "200",
"first_word": "갯",
"points": 2,
"category": "LineSpacing",
"item": "문제 1 줄간격 200% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
}
},
"2": {
"1": {
"path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside",
"path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]",
"value": {
"header_inside": true,
"all_double_slim": true
},
"points": 4,
"category": "PageBorder",
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
},
"2": {
"path": "count(//SECTION)>1",
"value": true,
"points": 3,
"category": "Boolean",
"item": "① 구역나누기",
"desc": "섹션이 1개 이상이면 점수부여"
},
"3": {
"path": "./TEXT/COLDEF/@Count",
"value": "2",
"points": 3,
"category": "TwoColumn",
"item": "② 다단 2단"
},
"4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "60",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (살아있는 갯벌)/① 크기-너비 (60 mm)"
},
"5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (살아있는 갯벌)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE//LINESHAPE",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "Rectangle.LineShape",
"item": "문구 (살아있는 갯벌)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE/@Ratio",
"value": "50",
"points": 2,
"category": "Rectangle.OneAnswer",
"item": "문구 (살아있는 갯벌)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "249,173,168",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (살아있는 갯벌)/⑤ 채우기 : 색상(RGB:249,173,168)"
},
"9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true",
"points": 1,
"category": "Rectangle.OneAnswer",
"item": "문구 (살아있는 갯벌)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (살아있는 갯벌)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": ".//RECTANGLE//TEXT/@CharShape",
"value": "굴림체",
"points": 1,
"category": "Rectangle.FontName",
"item": "문구 (살아있는 갯벌)/⑧ 글씨체 (굴림체)"
},
"12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "1700",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (살아있는 갯벌)/⑨ 글씨크기 (1700)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id={rect_parashape_id}]/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (살아있는 갯벌)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "23",
"points": 2,
"category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 23 mm)"
},
"19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 갯벌의 가치",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구① (1. 갯벌의 가치)/① 글씨체 (중고딕)"
},
"20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 갯벌의 가치",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구① (1. 갯벌의 가치)/② 크기 (1200)"
},
"21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 갯벌의 가치",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구① (1. 갯벌의 가치)/③ 진하게"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 우리나라의 갯벌",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구② (2. 우리나라의 갯벌)/① 글씨체 (중고딕)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 우리나라의 갯벌",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구② (2. 우리나라의 갯벌)/② 크기 (1200)"
},
"24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 우리나라의 갯벌",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구② (2. 우리나라의 갯벌)/③ 진하게"
},
"25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "리아스식 해안",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (리아스식 해안)/① 각주 설정 및 문구 입력"
},
"26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안",
"value": "돋움체",
"points": 1,
"category": "FontName",
"item": "문구 (리아스식 해안)/② 글씨체 (돋움체)"
},
"27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (리아스식 해안)/③ 크기 (9pt)"
},
"28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안",
"value": "CircledLatinSmall",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Microorganism')])",
"ignoreWord": "Microorganism",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Microorganism/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
},
"30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [
["조수", "潮水"],
["유기물", "有機物"],
["정화", "淨化"],
["조수", "潮水"],
["분포", "分布"]
],
"value": 10,
"points": 10,
"category": "Hanja",
"item": "① 조수(潮水), ② 유기물(有機物), ③ 정화(淨化), ④ 조수(潮水), ⑤ 분포(分布)"
},
"31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'급이원활')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…산소공급은 원활하고…)>'은' → '이' 글자바꿈"
},
"32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'면이바다')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…바다인 3면이 우리나라는…)>'바다인' / '3면이' 순서바꿈"
},
"33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/① 글씨체 (굴림)"
},
"34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "1100",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/② 크기 (1100)"
},
"35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/③ 진하게"
},
"36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (핀테크 산업 성장률(단위 : g))/④ 정렬 (가운데 정렬)"
},
"37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "154,235,85",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:154,235,85)"
},
"38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "위쪽 제목 셀/② 진하게",
"desc": "글자 속성이라 CELLZONE으로 적용 되지 않음"
},
"39": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type",
"value": "DoubleSlim",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/① 이중실선"
},
"40": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width",
"value": "0.5mm",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/② 0.5mm"
},
"41": {
"path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "궁서",
"points": 1,
"category": "TableFontName",
"category_tmp": "FontName",
"item": "글자모양/① 글씨체 (궁서)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
},
"42": {
"path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
"value": "1000",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/② 크기 (1000)"
},
"43": {
"path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
"value": "Center",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/③ 정렬 (가운데 정렬)"
},
"44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "SUM",
"value": true,
"points": 4,
"category": "Boolean",
"item": "블록 계산식/합계",
"desc": "option값에 합계는 SUM / 평균은 AVG"
},
"45": {
"chart_xpath": "",
"chart_type": "원뿔형 누적 가로 막대형",
"value": true,
"points": 2,
"category": "ChartType",
"item": "① 종류 (원뿔형 누적 가로 막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
},
"46": {
"chart_xpath": "//c:valAx/c:majorTickMark/@val",
"value": "out",
"points": 2,
"category": "ChartOneAnswer",
"item": "② 값 축 주 눈금선",
"desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
},
"47": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "③ 크기-너비 (80 mm)"
},
"48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "90",
"points": 2,
"category": "mmSize",
"item": "④ 크기-높이 (90 mm)"
},
"49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
"value": true,
"points": 2,
"category": "Boolean",
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
"desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "지역별 갯벌 면적",
"value": "궁서체",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/① 글씨체 (궁서체)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "지역별 갯벌 면적",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/② 크기 (1200)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "i",
"searchValue": "지역별 갯벌 면적",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/① 글꼴 (돋움)"
},
"54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/② 크기 (9pt)"
},
"55": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
"option": "b",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (돋움)"
},
"57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/② 크기 (9pt)"
},
"58": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
"option": "b",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"59": {
"chart_xpath": "//c:legend//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "OneAnswer",
"item": "범례/① 글꼴 (돋움)"
},
"60": {
"chart_xpath": "//c:legend//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "범례/② 크기 (9pt)"
},
"61": {
"chart_xpath": "//c:legend//a:defRPr/@{option}",
"option": "b",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "범례/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}
}
}

View File

@@ -1,841 +0,0 @@
{
"0": {
"0": {
"path": "",
"path2": "",
"points": 0,
"category": "파일저장",
"item": "파일명 (수검번호.hwp/hwpx)"
},
"1": {
"path": "//PAGEMARGIN",
"value": {
"Top": 20,
"Bottom": 20,
"Left": 20,
"Right": 20,
"Header": 10,
"Footer": 10,
"Gutter": 0
},
"tolerance": 1,
"points": 4,
"category": "PageSetting",
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
},
"2": {
"path": "",
"value": {
"FontName": "바탕",
"FontSize": "1000",
"Alignment": "Justify",
"LineSpacing": "160"
},
"points": 4,
"category": "BasicSetting",
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
},
"3": {
"path": "",
"value": null,
"points": 40,
"category": "오타감점",
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
}
},
"1": {
"1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "한산해안갯벌체험교실",
"value": "견고딕",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/① 글씨체 (견고딕)"
},
"2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "한산해안갯벌체험교실",
"value": "51,69,153",
"points": 2,
"category": "Color",
"item": "문구 (한산해안갯벌체험교실)/② 채우기 : 색상(RGB:51,69,153)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "한산해안갯벌체험교실",
"value": "110",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (한산해안갯벌체험교실)/③ 크기-너비 (110 mm)"
},
"4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "한산해안갯벌체험교실",
"value": "20",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (한산해안갯벌체험교실)/④ 크기-높이 (20 mm)"
},
"5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "한산해안갯벌체험교실",
"value": "true",
"points": 2,
"category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/⑤ 위치 (글자처럼 취급)"
},
"6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "한산해안갯벌체험교실",
"value": "Center",
"points": 2,
"category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/⑥ 정렬 (가운데 정렬)"
},
"7": {
"path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "한산해안갯벌체험교실",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (한산해안갯벌체험교실)/⑦ 글맵시모양 (육안확인)"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "갯",
"value": {
"Height": 2800,
"Width": 2800
},
"tolerance": 200,
"points": 1,
"category": "TwoLineSize",
"item": "어/① 모양 (2줄)"
},
"9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "갯",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "어/② 글씨체 (굴림)"
},
"10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "갯",
"value": "219,207,102",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:219,207,102)"
},
"11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "갯",
"value": "3.0",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "어/④ 본문과의 간격 : 3.0mm"
},
"12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "한산해안 갯벌체험 교실",
"value": "BOLD",
"points": 2,
"category": "FontAttribute",
"item": "문구 (한산해안 갯벌체험 교실)/① BOLD"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "한산해안 갯벌체험 교실",
"value": "ITALIC",
"points": 2,
"category": "FontAttribute",
"item": "문구 (한산해안 갯벌체험 교실)/② ITALIC"
},
"14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "≪",
"char2": "≫",
"char3": "※",
"value": 3,
"points": 3,
"category": "SpecialChar",
"item": "① ≪, ② ≫, ③ ※"
},
"15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구 (≪ 행사안내 ≫)/① 글씨체 (돋움)"
},
"16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "행사안내",
"value": "Center",
"points": 1,
"category": "Align",
"item": "문구 (≪ 행사안내 ≫)/② 정렬 (가운데 정렬)"
},
"17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 12월 20일(토) 13:30 ~ 17:30",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 12월 20일(토) 13:30 ~ 17:30)/① BOLD"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 12월 20일(토) 13:30 ~ 17:30",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 12월 20일(토) 13:30 ~ 17:30)/② UNDERLINE"
},
"19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "신청안내",
"value": {
"Left": 10,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 12. 11.",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 12. 11.)/① 크기 (1400)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 12. 11.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 12. 11.)/② 정렬 (가운데 정렬)"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "한산시청해양자원육성과",
"value": "견고딕",
"points": 1,
"category": "FontName",
"item": "문구 (한산시청해양자원육성과)/① 글씨체 (견고딕)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "한산시청해양자원육성과",
"value": "2200",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한산시청해양자원육성과)/② 크기 (2200)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "한산시청해양자원육성과",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한산시청해양자원육성과)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "돋움체",
"points": 1,
"category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (돋움체)"
},
"26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "DecagonCircle",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (A,B,C 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomCenter",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight",
"왼쪽 아래": "BottomLeft"
}
},
"30": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "200",
"first_word": "갯",
"points": 2,
"category": "LineSpacing",
"item": "문제 1 줄간격 200% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
}
},
"2": {
"1": {
"path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside",
"path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]",
"value": {
"header_inside": true,
"all_double_slim": true
},
"points": 4,
"category": "PageBorder",
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
},
"2": {
"path": "count(//SECTION)>1",
"value": true,
"points": 3,
"category": "Boolean",
"item": "① 구역나누기",
"desc": "섹션이 1개 이상이면 점수부여"
},
"3": {
"path": "./TEXT/COLDEF/@Count",
"value": "2",
"points": 3,
"category": "TwoColumn",
"item": "② 다단 2단"
},
"4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "60",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (살아있는 갯벌)/① 크기-너비 (60 mm)"
},
"5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (살아있는 갯벌)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE//LINESHAPE",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "Rectangle.LineShape",
"item": "문구 (살아있는 갯벌)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE/@Ratio",
"value": "50",
"points": 2,
"category": "Rectangle.OneAnswer",
"item": "문구 (살아있는 갯벌)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "249,173,168",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (살아있는 갯벌)/⑤ 채우기 : 색상(RGB:249,173,168)"
},
"9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true",
"points": 1,
"category": "Rectangle.OneAnswer",
"item": "문구 (살아있는 갯벌)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (살아있는 갯벌)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": ".//RECTANGLE//TEXT/@CharShape",
"value": "굴림체",
"points": 1,
"category": "Rectangle.FontName",
"item": "문구 (살아있는 갯벌)/⑧ 글씨체 (굴림체)"
},
"12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "1700",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (살아있는 갯벌)/⑨ 글씨크기 (1700)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id={rect_parashape_id}]/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (살아있는 갯벌)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "23",
"points": 2,
"category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 23 mm)"
},
"19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 갯벌의 가치",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구① (1. 갯벌의 가치)/① 글씨체 (중고딕)"
},
"20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 갯벌의 가치",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구① (1. 갯벌의 가치)/② 크기 (1200)"
},
"21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 갯벌의 가치",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구① (1. 갯벌의 가치)/③ 진하게"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 우리나라의 갯벌",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구② (2. 우리나라의 갯벌)/① 글씨체 (중고딕)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 우리나라의 갯벌",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구② (2. 우리나라의 갯벌)/② 크기 (1200)"
},
"24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 우리나라의 갯벌",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구② (2. 우리나라의 갯벌)/③ 진하게"
},
"25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "리아스식 해안",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (리아스식 해안)/① 각주 설정 및 문구 입력"
},
"26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안",
"value": "돋움체",
"points": 1,
"category": "FontName",
"item": "문구 (리아스식 해안)/② 글씨체 (돋움체)"
},
"27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (리아스식 해안)/③ 크기 (9pt)"
},
"28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안",
"value": "CircledLatinSmall",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Microorganism')])",
"ignoreWord": "Microorganism",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Microorganism/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
},
"30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [
["조수", "潮水"],
["유기물", "有機物"],
["정화", "淨化"],
["조수", "潮水"],
["분포", "分布"]
],
"value": 10,
"points": 10,
"category": "Hanja",
"item": "① 조수(潮水), ② 유기물(有機物), ③ 정화(淨化), ④ 조수(潮水), ⑤ 분포(分布)"
},
"31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'급이원활')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…산소공급은 원활하고…)>'은' → '이' 글자바꿈"
},
"32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'면이바다')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…바다인 3면이 우리나라는…)>'바다인' / '3면이' 순서바꿈"
},
"33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/① 글씨체 (굴림)"
},
"34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "1100",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/② 크기 (1100)"
},
"35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/③ 진하게"
},
"36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (핀테크 산업 성장률(단위 : g))/④ 정렬 (가운데 정렬)"
},
"37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "154,235,85",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:154,235,85)"
},
"38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "위쪽 제목 셀/② 진하게",
"desc": "글자 속성이라 CELLZONE으로 적용 되지 않음"
},
"39": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type",
"value": "DoubleSlim",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/① 이중실선"
},
"40": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width",
"value": "0.5mm",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/② 0.5mm"
},
"41": {
"path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "궁서",
"points": 1,
"category": "TableFontName",
"category_tmp": "FontName",
"item": "글자모양/① 글씨체 (궁서)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
},
"42": {
"path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
"value": "1000",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/② 크기 (1000)"
},
"43": {
"path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
"value": "Center",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/③ 정렬 (가운데 정렬)"
},
"44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "SUM",
"value": true,
"points": 4,
"category": "Boolean",
"item": "블록 계산식/합계",
"desc": "option값에 합계는 SUM / 평균은 AVG"
},
"45": {
"chart_xpath": "",
"chart_type": "원뿔형 누적 가로 막대형",
"value": true,
"points": 2,
"category": "ChartType",
"item": "① 종류 (원뿔형 누적 가로 막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
},
"46": {
"chart_xpath": "//c:valAx/c:majorTickMark/@val",
"value": "out",
"points": 2,
"category": "ChartOneAnswer",
"item": "② 값 축 주 눈금선",
"desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
},
"47": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "③ 크기-너비 (80 mm)"
},
"48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "90",
"points": 2,
"category": "mmSize",
"item": "④ 크기-높이 (90 mm)"
},
"49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
"value": true,
"points": 2,
"category": "Boolean",
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
"desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "지역별 갯벌 면적",
"value": "궁서체",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/① 글씨체 (궁서체)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "지역별 갯벌 면적",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/② 크기 (1200)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "i",
"searchValue": "지역별 갯벌 면적",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/① 글꼴 (돋움)"
},
"54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/② 크기 (9pt)"
},
"55": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
"option": "b",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (돋움)"
},
"57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/② 크기 (9pt)"
},
"58": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
"option": "b",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"59": {
"chart_xpath": "//c:legend//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "OneAnswer",
"item": "범례/① 글꼴 (돋움)"
},
"60": {
"chart_xpath": "//c:legend//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "범례/② 크기 (9pt)"
},
"61": {
"chart_xpath": "//c:legend//a:defRPr/@{option}",
"option": "b",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "범례/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}
}
}

View File

@@ -1,841 +0,0 @@
{
"0": {
"0": {
"path": "",
"path2": "",
"points": 0,
"category": "파일저장",
"item": "파일명 (수검번호.hwp/hwpx)"
},
"1": {
"path": "//PAGEMARGIN",
"value": {
"Top": 20,
"Bottom": 20,
"Left": 20,
"Right": 20,
"Header": 10,
"Footer": 10,
"Gutter": 0
},
"tolerance": 1,
"points": 4,
"category": "PageSetting",
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
},
"2": {
"path": "",
"value": {
"FontName": "바탕",
"FontSize": "1000",
"Alignment": "Justify",
"LineSpacing": "160"
},
"points": 4,
"category": "BasicSetting",
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
},
"3": {
"path": "",
"value": null,
"points": 40,
"category": "오타감점",
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
}
},
"1": {
"1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "한산해안갯벌체험교실",
"value": "견고딕",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/① 글씨체 (견고딕)"
},
"2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "한산해안갯벌체험교실",
"value": "51,69,153",
"points": 2,
"category": "Color",
"item": "문구 (한산해안갯벌체험교실)/② 채우기 : 색상(RGB:51,69,153)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "한산해안갯벌체험교실",
"value": "110",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (한산해안갯벌체험교실)/③ 크기-너비 (110 mm)"
},
"4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "한산해안갯벌체험교실",
"value": "20",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (한산해안갯벌체험교실)/④ 크기-높이 (20 mm)"
},
"5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "한산해안갯벌체험교실",
"value": "true",
"points": 2,
"category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/⑤ 위치 (글자처럼 취급)"
},
"6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "한산해안갯벌체험교실",
"value": "Center",
"points": 2,
"category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/⑥ 정렬 (가운데 정렬)"
},
"7": {
"path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "한산해안갯벌체험교실",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (한산해안갯벌체험교실)/⑦ 글맵시모양 (육안확인)"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "갯",
"value": {
"Height": 2800,
"Width": 2800
},
"tolerance": 200,
"points": 1,
"category": "TwoLineSize",
"item": "어/① 모양 (2줄)"
},
"9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "갯",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "어/② 글씨체 (굴림)"
},
"10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "갯",
"value": "219,207,102",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:219,207,102)"
},
"11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "갯",
"value": "3.0",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "어/④ 본문과의 간격 : 3.0mm"
},
"12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "한산해안 갯벌체험 교실",
"value": "BOLD",
"points": 2,
"category": "FontAttribute",
"item": "문구 (한산해안 갯벌체험 교실)/① BOLD"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "한산해안 갯벌체험 교실",
"value": "ITALIC",
"points": 2,
"category": "FontAttribute",
"item": "문구 (한산해안 갯벌체험 교실)/② ITALIC"
},
"14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "≪",
"char2": "≫",
"char3": "※",
"value": 3,
"points": 3,
"category": "SpecialChar",
"item": "① ≪, ② ≫, ③ ※"
},
"15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구 (≪ 행사안내 ≫)/① 글씨체 (돋움)"
},
"16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "행사안내",
"value": "Center",
"points": 1,
"category": "Align",
"item": "문구 (≪ 행사안내 ≫)/② 정렬 (가운데 정렬)"
},
"17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 12월 20일(토) 13:30 ~ 17:30",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 12월 20일(토) 13:30 ~ 17:30)/① BOLD"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 12월 20일(토) 13:30 ~ 17:30",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 12월 20일(토) 13:30 ~ 17:30)/② UNDERLINE"
},
"19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "신청안내",
"value": {
"Left": 10,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 12. 11.",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 12. 11.)/① 크기 (1400)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 12. 11.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 12. 11.)/② 정렬 (가운데 정렬)"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "한산시청해양자원육성과",
"value": "견고딕",
"points": 1,
"category": "FontName",
"item": "문구 (한산시청해양자원육성과)/① 글씨체 (견고딕)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "한산시청해양자원육성과",
"value": "2200",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한산시청해양자원육성과)/② 크기 (2200)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "한산시청해양자원육성과",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한산시청해양자원육성과)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "돋움체",
"points": 1,
"category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (돋움체)"
},
"26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "DecagonCircle",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (A,B,C 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomCenter",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight",
"왼쪽 아래": "BottomLeft"
}
},
"30": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "200",
"first_word": "갯",
"points": 2,
"category": "LineSpacing",
"item": "문제 1 줄간격 200% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
}
},
"2": {
"1": {
"path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside",
"path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]",
"value": {
"header_inside": true,
"all_double_slim": true
},
"points": 4,
"category": "PageBorder",
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
},
"2": {
"path": "count(//SECTION)>1",
"value": true,
"points": 3,
"category": "Boolean",
"item": "① 구역나누기",
"desc": "섹션이 1개 이상이면 점수부여"
},
"3": {
"path": "./TEXT/COLDEF/@Count",
"value": "2",
"points": 3,
"category": "TwoColumn",
"item": "② 다단 2단"
},
"4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "60",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (살아있는 갯벌)/① 크기-너비 (60 mm)"
},
"5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (살아있는 갯벌)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE//LINESHAPE",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "Rectangle.LineShape",
"item": "문구 (살아있는 갯벌)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE/@Ratio",
"value": "50",
"points": 2,
"category": "Rectangle.OneAnswer",
"item": "문구 (살아있는 갯벌)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "249,173,168",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (살아있는 갯벌)/⑤ 채우기 : 색상(RGB:249,173,168)"
},
"9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true",
"points": 1,
"category": "Rectangle.OneAnswer",
"item": "문구 (살아있는 갯벌)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (살아있는 갯벌)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": ".//RECTANGLE//TEXT/@CharShape",
"value": "굴림체",
"points": 1,
"category": "Rectangle.FontName",
"item": "문구 (살아있는 갯벌)/⑧ 글씨체 (굴림체)"
},
"12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "1700",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (살아있는 갯벌)/⑨ 글씨크기 (1700)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id={rect_parashape_id}]/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (살아있는 갯벌)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "23",
"points": 2,
"category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 23 mm)"
},
"19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 갯벌의 가치",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구① (1. 갯벌의 가치)/① 글씨체 (중고딕)"
},
"20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 갯벌의 가치",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구① (1. 갯벌의 가치)/② 크기 (1200)"
},
"21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 갯벌의 가치",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구① (1. 갯벌의 가치)/③ 진하게"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 우리나라의 갯벌",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구② (2. 우리나라의 갯벌)/① 글씨체 (중고딕)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 우리나라의 갯벌",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구② (2. 우리나라의 갯벌)/② 크기 (1200)"
},
"24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 우리나라의 갯벌",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구② (2. 우리나라의 갯벌)/③ 진하게"
},
"25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "리아스식 해안",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (리아스식 해안)/① 각주 설정 및 문구 입력"
},
"26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안",
"value": "돋움체",
"points": 1,
"category": "FontName",
"item": "문구 (리아스식 해안)/② 글씨체 (돋움체)"
},
"27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (리아스식 해안)/③ 크기 (9pt)"
},
"28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안",
"value": "CircledLatinSmall",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Microorganism')])",
"ignoreWord": "Microorganism",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Microorganism/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
},
"30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [
["조수", "潮水"],
["유기물", "有機物"],
["정화", "淨化"],
["조수", "潮水"],
["분포", "分布"]
],
"value": 10,
"points": 10,
"category": "Hanja",
"item": "① 조수(潮水), ② 유기물(有機物), ③ 정화(淨化), ④ 조수(潮水), ⑤ 분포(分布)"
},
"31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'급이원활')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…산소공급은 원활하고…)>'은' → '이' 글자바꿈"
},
"32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'면이바다')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…바다인 3면이 우리나라는…)>'바다인' / '3면이' 순서바꿈"
},
"33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/① 글씨체 (굴림)"
},
"34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "1100",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/② 크기 (1100)"
},
"35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/③ 진하게"
},
"36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (핀테크 산업 성장률(단위 : g))/④ 정렬 (가운데 정렬)"
},
"37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "154,235,85",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:154,235,85)"
},
"38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "위쪽 제목 셀/② 진하게",
"desc": "글자 속성이라 CELLZONE으로 적용 되지 않음"
},
"39": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type",
"value": "DoubleSlim",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/① 이중실선"
},
"40": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width",
"value": "0.5mm",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/② 0.5mm"
},
"41": {
"path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "궁서",
"points": 1,
"category": "TableFontName",
"category_tmp": "FontName",
"item": "글자모양/① 글씨체 (궁서)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
},
"42": {
"path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
"value": "1000",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/② 크기 (1000)"
},
"43": {
"path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
"value": "Center",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/③ 정렬 (가운데 정렬)"
},
"44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "SUM",
"value": true,
"points": 4,
"category": "Boolean",
"item": "블록 계산식/합계",
"desc": "option값에 합계는 SUM / 평균은 AVG"
},
"45": {
"chart_xpath": "",
"chart_type": "원뿔형 누적 가로 막대형",
"value": true,
"points": 2,
"category": "ChartType",
"item": "① 종류 (원뿔형 누적 가로 막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
},
"46": {
"chart_xpath": "//c:valAx/c:majorTickMark/@val",
"value": "out",
"points": 2,
"category": "ChartOneAnswer",
"item": "② 값 축 주 눈금선",
"desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
},
"47": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "③ 크기-너비 (80 mm)"
},
"48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "90",
"points": 2,
"category": "mmSize",
"item": "④ 크기-높이 (90 mm)"
},
"49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
"value": true,
"points": 2,
"category": "Boolean",
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
"desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "지역별 갯벌 면적",
"value": "궁서체",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/① 글씨체 (궁서체)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "지역별 갯벌 면적",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/② 크기 (1200)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "i",
"searchValue": "지역별 갯벌 면적",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/① 글꼴 (돋움)"
},
"54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/② 크기 (9pt)"
},
"55": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
"option": "b",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (돋움)"
},
"57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/② 크기 (9pt)"
},
"58": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
"option": "b",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"59": {
"chart_xpath": "//c:legend//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "OneAnswer",
"item": "범례/① 글꼴 (돋움)"
},
"60": {
"chart_xpath": "//c:legend//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "범례/② 크기 (9pt)"
},
"61": {
"chart_xpath": "//c:legend//a:defRPr/@{option}",
"option": "b",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "범례/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}
}
}

View File

@@ -1,841 +0,0 @@
{
"0": {
"0": {
"path": "",
"path2": "",
"points": 0,
"category": "파일저장",
"item": "파일명 (수검번호.hwp/hwpx)"
},
"1": {
"path": "//PAGEMARGIN",
"value": {
"Top": 20,
"Bottom": 20,
"Left": 20,
"Right": 20,
"Header": 10,
"Footer": 10,
"Gutter": 0
},
"tolerance": 1,
"points": 4,
"category": "PageSetting",
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
},
"2": {
"path": "",
"value": {
"FontName": "바탕",
"FontSize": "1000",
"Alignment": "Justify",
"LineSpacing": "160"
},
"points": 4,
"category": "BasicSetting",
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
},
"3": {
"path": "",
"value": null,
"points": 40,
"category": "오타감점",
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
}
},
"1": {
"1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "한산해안갯벌체험교실",
"value": "견고딕",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/① 글씨체 (견고딕)"
},
"2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "한산해안갯벌체험교실",
"value": "51,69,153",
"points": 2,
"category": "Color",
"item": "문구 (한산해안갯벌체험교실)/② 채우기 : 색상(RGB:51,69,153)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "한산해안갯벌체험교실",
"value": "110",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (한산해안갯벌체험교실)/③ 크기-너비 (110 mm)"
},
"4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "한산해안갯벌체험교실",
"value": "20",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (한산해안갯벌체험교실)/④ 크기-높이 (20 mm)"
},
"5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "한산해안갯벌체험교실",
"value": "true",
"points": 2,
"category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/⑤ 위치 (글자처럼 취급)"
},
"6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "한산해안갯벌체험교실",
"value": "Center",
"points": 2,
"category": "OneAnswer",
"item": "문구 (한산해안갯벌체험교실)/⑥ 정렬 (가운데 정렬)"
},
"7": {
"path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "한산해안갯벌체험교실",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (한산해안갯벌체험교실)/⑦ 글맵시모양 (육안확인)"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "갯",
"value": {
"Height": 2800,
"Width": 2800
},
"tolerance": 200,
"points": 1,
"category": "TwoLineSize",
"item": "어/① 모양 (2줄)"
},
"9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "갯",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "어/② 글씨체 (굴림)"
},
"10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "갯",
"value": "219,207,102",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:219,207,102)"
},
"11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "갯",
"value": "3.0",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "어/④ 본문과의 간격 : 3.0mm"
},
"12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "한산해안 갯벌체험 교실",
"value": "BOLD",
"points": 2,
"category": "FontAttribute",
"item": "문구 (한산해안 갯벌체험 교실)/① BOLD"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "한산해안 갯벌체험 교실",
"value": "ITALIC",
"points": 2,
"category": "FontAttribute",
"item": "문구 (한산해안 갯벌체험 교실)/② ITALIC"
},
"14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "≪",
"char2": "≫",
"char3": "※",
"value": 3,
"points": 3,
"category": "SpecialChar",
"item": "① ≪, ② ≫, ③ ※"
},
"15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구 (≪ 행사안내 ≫)/① 글씨체 (돋움)"
},
"16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "행사안내",
"value": "Center",
"points": 1,
"category": "Align",
"item": "문구 (≪ 행사안내 ≫)/② 정렬 (가운데 정렬)"
},
"17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 12월 20일(토) 13:30 ~ 17:30",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 12월 20일(토) 13:30 ~ 17:30)/① BOLD"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 12월 20일(토) 13:30 ~ 17:30",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 12월 20일(토) 13:30 ~ 17:30)/② UNDERLINE"
},
"19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "신청안내",
"value": {
"Left": 10,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 12. 11.",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 12. 11.)/① 크기 (1400)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 12. 11.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 12. 11.)/② 정렬 (가운데 정렬)"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "한산시청해양자원육성과",
"value": "견고딕",
"points": 1,
"category": "FontName",
"item": "문구 (한산시청해양자원육성과)/① 글씨체 (견고딕)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "한산시청해양자원육성과",
"value": "2200",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한산시청해양자원육성과)/② 크기 (2200)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "한산시청해양자원육성과",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한산시청해양자원육성과)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "돋움체",
"points": 1,
"category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (돋움체)"
},
"26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "Header.OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "DecagonCircle",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (A,B,C 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomCenter",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight",
"왼쪽 아래": "BottomLeft"
}
},
"30": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "200",
"first_word": "갯",
"points": 2,
"category": "LineSpacing",
"item": "문제 1 줄간격 200% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
}
},
"2": {
"1": {
"path": "//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside",
"path2": "//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]",
"value": {
"header_inside": true,
"all_double_slim": true
},
"points": 4,
"category": "PageBorder",
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
},
"2": {
"path": "count(//SECTION)>1",
"value": true,
"points": 3,
"category": "Boolean",
"item": "① 구역나누기",
"desc": "섹션이 1개 이상이면 점수부여"
},
"3": {
"path": "./TEXT/COLDEF/@Count",
"value": "2",
"points": 3,
"category": "TwoColumn",
"item": "② 다단 2단"
},
"4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "60",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (살아있는 갯벌)/① 크기-너비 (60 mm)"
},
"5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (살아있는 갯벌)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE//LINESHAPE",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "Rectangle.LineShape",
"item": "문구 (살아있는 갯벌)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE/@Ratio",
"value": "50",
"points": 2,
"category": "Rectangle.OneAnswer",
"item": "문구 (살아있는 갯벌)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "249,173,168",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (살아있는 갯벌)/⑤ 채우기 : 색상(RGB:249,173,168)"
},
"9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true",
"points": 1,
"category": "Rectangle.OneAnswer",
"item": "문구 (살아있는 갯벌)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (살아있는 갯벌)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": ".//RECTANGLE//TEXT/@CharShape",
"value": "굴림체",
"points": 1,
"category": "Rectangle.FontName",
"item": "문구 (살아있는 갯벌)/⑧ 글씨체 (굴림체)"
},
"12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "1700",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (살아있는 갯벌)/⑨ 글씨크기 (1700)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id={rect_parashape_id}]/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (살아있는 갯벌)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG' or @Format='PNG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG' or @Format='PNG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "23",
"points": 2,
"category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 23 mm)"
},
"19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 갯벌의 가치",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구① (1. 갯벌의 가치)/① 글씨체 (중고딕)"
},
"20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 갯벌의 가치",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구① (1. 갯벌의 가치)/② 크기 (1200)"
},
"21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 갯벌의 가치",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구① (1. 갯벌의 가치)/③ 진하게"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 우리나라의 갯벌",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구② (2. 우리나라의 갯벌)/① 글씨체 (중고딕)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 우리나라의 갯벌",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구② (2. 우리나라의 갯벌)/② 크기 (1200)"
},
"24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 우리나라의 갯벌",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구② (2. 우리나라의 갯벌)/③ 진하게"
},
"25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "리아스식 해안",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (리아스식 해안)/① 각주 설정 및 문구 입력"
},
"26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안",
"value": "돋움체",
"points": 1,
"category": "FontName",
"item": "문구 (리아스식 해안)/② 글씨체 (돋움체)"
},
"27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (리아스식 해안)/③ 크기 (9pt)"
},
"28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "하천에 의해 침식된 육지가 침강하거나 해수면이 상승해 만들어진 해안",
"value": "CircledLatinSmall",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"일,이,삼": "HangulPhonetic",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"Ⓐ,Ⓑ,Ⓒ": "CircledLatinCapital",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"㊀,㊁,㊂": "CircledIdeograph",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Microorganism')])",
"ignoreWord": "Microorganism",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Microorganism/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
},
"30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [
["조수", "潮水"],
["유기물", "有機物"],
["정화", "淨化"],
["조수", "潮水"],
["분포", "分布"]
],
"value": 10,
"points": 10,
"category": "Hanja",
"item": "① 조수(潮水), ② 유기물(有機物), ③ 정화(淨化), ④ 조수(潮水), ⑤ 분포(分布)"
},
"31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'급이원활')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…산소공급은 원활하고…)>'은' → '이' 글자바꿈"
},
"32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'면이바다')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…바다인 3면이 우리나라는…)>'바다인' / '3면이' 순서바꿈"
},
"33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/① 글씨체 (굴림)"
},
"34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "1100",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/② 크기 (1100)"
},
"35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "제목 문구 (지역별 갯벌 면적(단위: 제곱킬로미터))/③ 진하게"
},
"36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "지역별 갯벌 면적(단위: 제곱킬로미터)",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (핀테크 산업 성장률(단위 : g))/④ 정렬 (가운데 정렬)"
},
"37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "154,235,85",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:154,235,85)"
},
"38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "위쪽 제목 셀/② 진하게",
"desc": "글자 속성이라 CELLZONE으로 적용 되지 않음"
},
"39": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type",
"value": "DoubleSlim",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/① 이중실선"
},
"40": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width",
"value": "0.5mm",
"points": 2,
"category": "TableAnswer",
"item": "제목 셀 아래선/② 0.5mm"
},
"41": {
"path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "궁서",
"points": 1,
"category": "TableFontName",
"category_tmp": "FontName",
"item": "글자모양/① 글씨체 (궁서)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
},
"42": {
"path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
"value": "1000",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/② 크기 (1000)"
},
"43": {
"path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
"value": "Center",
"points": 1,
"category": "TableAnswer",
"item": "글자모양/③ 정렬 (가운데 정렬)"
},
"44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "SUM",
"value": true,
"points": 4,
"category": "Boolean",
"item": "블록 계산식/합계",
"desc": "option값에 합계는 SUM / 평균은 AVG"
},
"45": {
"chart_xpath": "",
"chart_type": "원뿔형 누적 가로 막대형",
"value": true,
"points": 2,
"category": "ChartType",
"item": "① 종류 (원뿔형 누적 가로 막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
},
"46": {
"chart_xpath": "//c:valAx/c:majorTickMark/@val",
"value": "out",
"points": 2,
"category": "ChartOneAnswer",
"item": "② 값 축 주 눈금선",
"desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
},
"47": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "③ 크기-너비 (80 mm)"
},
"48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "90",
"points": 2,
"category": "mmSize",
"item": "④ 크기-높이 (90 mm)"
},
"49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
"value": true,
"points": 2,
"category": "Boolean",
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
"desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "지역별 갯벌 면적",
"value": "궁서체",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/① 글씨체 (궁서체)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "지역별 갯벌 면적",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/② 크기 (1200)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "i",
"searchValue": "지역별 갯벌 면적",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (지역별 갯벌 면적)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/① 글꼴 (돋움)"
},
"54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/② 크기 (9pt)"
},
"55": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
"option": "b",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (돋움)"
},
"57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/② 크기 (9pt)"
},
"58": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
"option": "b",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"59": {
"chart_xpath": "//c:legend//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "OneAnswer",
"item": "범례/① 글꼴 (돋움)"
},
"60": {
"chart_xpath": "//c:legend//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "범례/② 크기 (9pt)"
},
"61": {
"chart_xpath": "//c:legend//a:defRPr/@{option}",
"option": "b",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "범례/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}
}
}

Some files were not shown because too many files have changed in this diff Show More