차트 종류가 분산형일 경우 예외처리 [2-53~58]

This commit is contained in:
2025-10-29 16:19:12 +09:00
parent d97502ff5c
commit 58d329d816
131 changed files with 1435 additions and 45842 deletions

54
01_copy_files_answer.py Normal file
View File

@@ -0,0 +1,54 @@
import os
import shutil
from pathlib import Path
import re
# ===== 사용자 설정 =====
source_dir = r"D:\project\HWP\HWP-Scoring\회차별채점자료\2510"
exam_round = "2510" # 회차명
exam_code = "DIW" # 코드명
# =======================
def get_exam_type(filename: str):
"""
파일명에서 확장자 앞의 마지막 알파벳을 추출 (예: 국어A.hwpx → A)
"""
match = re.search(r"([A-Za-z])\.hwpx$", filename)
return match.group(1).upper() if match else None
def copy_exam_files():
src = Path(source_dir)
if not src.exists():
print(f"경로를 찾을 수 없습니다: {src}")
return
base_dest = Path(".") / "input" / exam_round
copied = 0
for path in src.rglob("*"):
if path.is_file() and path.suffix.lower() == ".hwpx":
exam_type = get_exam_type(path.name)
if not exam_type:
continue # 마지막 문자가 알파벳이 아니면 건너뜀
dest_dir = base_dest / exam_type / exam_code
dest_dir.mkdir(parents=True, exist_ok=True)
dest_path = dest_dir / path.name
# 같은 이름의 파일이 있을 경우 숫자 붙이기
counter = 1
while dest_path.exists():
dest_path = dest_dir / f"{path.stem}_{counter}{path.suffix}"
counter += 1
shutil.copy2(path, dest_path)
print(f"복사 완료: {path}{dest_path}")
copied += 1
print(f"\n{copied}개 파일 복사 완료.")
if __name__ == "__main__":
copy_exam_files()

View File

@@ -42,8 +42,11 @@ def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, t
# 사용법
# exam_round = "2504_2"
exam_round = "2507"
source_directory = r"D:\project\HWP\HWP-Scoring\회차별채점자료\2507\hwp_정답"
exam_round = "2510"
# exam_round = "2510_4"
# source_directory = r"D:\project\data\제2510회 수시2(제주)\답안파일\제2510회 수시2 제주지부_답안파일"
source_directory = r"D:\project\HWP\HWP-Scoring\회차별채점자료\2510"
target_directory_a = f".\\input\\{exam_round}\\A" # '1교시'의 타겟 경로
target_directory_b = f".\\input\\{exam_round}\\B" # '2교시'의 타겟 경로

View File

@@ -75,7 +75,8 @@ def copy_exam_files(exam_round, exam_codes, source_dir):
# 사용 예시
if __name__ == "__main__":
exam_round = "2510"
# [source_dir경로\DIW] 디렉토리 안에 A형, B형... 폴더가 존재해야 함
exam_round = "2510_2"
exam_codes = ["DIW"]
source_dir = r"D:\project\data\제2510회 수시4(순천)\채점의뢰\시험지 및 채점기준표(합격자발표-2025.11.5.(수))"

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": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "한방바이오박람회",
"value": "굴림체",
"searchValue": "글로벌핀테크컨퍼런스",
"value": "돋움체",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한방바이오박람회)/① 글씨체 (굴림체)"
"item": "문구 (글로벌핀테크컨퍼런스)/① 글씨체 (궁서체)"
},
"2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "한방바이오박람회",
"value": "252,67,144",
"searchValue": "글로벌핀테크컨퍼런스",
"value": "53,135,145",
"points": 2,
"category": "Color",
"item": "문구 (한방바이오박람회)/② 채우기 : 색상(RGB:252,67,144)"
"item": "문구 (글로벌핀테크컨퍼런스)/② 채우기 : 색상(RGB:53,135,145)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "한방바이오박람회",
"value": "120",
"searchValue": "글로벌핀테크컨퍼런스",
"value": "110",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (한방바이오박람회)/③ 크기-너비 (120 mm)"
"item": "문구 (글로벌핀테크컨퍼런스)/③ 크기-너비 (110 mm)"
},
"4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "한방바이오박람회",
"searchValue": "글로벌핀테크컨퍼런스",
"value": "20",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (한방바이오박람회)/④ 크기-높이 (20 mm)"
"item": "문구 (글로벌핀테크컨퍼런스)/④ 크기-높이 (20 mm)"
},
"5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "한방바이오박람회",
"searchValue": "글로벌핀테크컨퍼런스",
"value": "true",
"points": 2,
"category": "OneAnswer",
"item": "문구 (한방바이오박람회)/⑤ 위치 (글자처럼 취급)"
"item": "문구 (글로벌핀테크컨퍼런스)/⑤ 위치 (글자처럼 취급)"
},
"6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "한방바이오박람회",
"searchValue": "글로벌핀테크컨퍼런스",
"value": "Center",
"points": 2,
"category": "OneAnswer",
"item": "문구 (한방바이오박람회)/⑥ 정렬 (가운데 정렬)"
"item": "문구 (글로벌핀테크컨퍼런스)/⑥ 정렬 (가운데 정렬)"
},
"7": {
"path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "한방바이오박람회",
"searchValue": "글로벌핀테크컨퍼런스",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (한방바이오박람회)/⑦ 글맵시모양 (육안확인)"
"item": "문구 (글로벌핀테크컨퍼런스)/⑦ 글맵시모양 (육안확인)"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "",
"searchValue": "",
"value": {
"Height": 2800,
"Width": 2800
@@ -116,23 +116,23 @@
},
"9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "",
"value": "궁서",
"searchValue": "",
"value": "굴림체",
"points": 1,
"category": "FontName",
"item": "어/② 글씨체 (궁서)"
"item": "어/② 글씨체 (굴림체)"
},
"10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "",
"value": "115,139,236",
"searchValue": "",
"value": "123,217,167",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:115,139,236)"
"item": "어/③ 면색 : 색상(RGB:123,217,167)"
},
"11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "",
"searchValue": "",
"value": "3.0",
"tolerance": 1,
"points": 2,
@@ -141,39 +141,39 @@
},
"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": "한방바이오 박람회",
"searchValue": "디지털 자산, 오픈 뱅킹, 보안 인증, AI 기반 금융 분석",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (한방바이오 박람회)/ ITALIC"
"item": "문구 (디지털 자산, 오픈 뱅킹, 보안 인증, AI 기반 금융 분석)/ ITALIC"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "디지털 자산, 오픈 뱅킹, 보안 인증, AI 기반 금융 분석",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (디지털 자산, 오픈 뱅킹, 보안 인증, AI 기반 금융 분석)/② UNDERLINE"
},
"14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "",
"char2": "",
"char1": "",
"char2": "",
"char3": "※",
"value": 3,
"points": 3,
"category": "SpecialChar",
"item": "① , ② , ③ ※"
"item": "① , ② , ③ ※"
},
"15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내",
"value": "바탕체",
"value": "궁서",
"points": 1,
"category": "FontName",
"item": "문구 ( 행사안내 )/① 글씨체 (바탕체)"
"item": "문구 ( 행사안내 )/① 글씨체 (궁서)"
},
"16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
@@ -181,86 +181,86 @@
"value": "Center",
"points": 1,
"category": "Align",
"item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)"
"item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)"
},
"17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "제천시청 홈페이지(http://www.ihd.or.kr)",
"value": "ITALIC",
"searchValue": "금융권 종사자, 핀테크 스타트업, 투자자, IT 전문가, 일반인",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (제천시청 홈페이지(http://www.ihd.or.kr))/① ITALIC"
"item": "문구 (금융권 종사자, 핀테크 스타트업, 투자자, IT 전문가, 일반인)/① BOLD"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "제천시청 홈페이지(http://www.ihd.or.kr)",
"value": "UNDERLINE",
"searchValue": "금융권 종사자, 핀테크 스타트업, 투자자, IT 전문가, 일반인",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (제천시청 홈페이지(http://www.ihd.or.kr))/② UNDERLINE"
"item": "문구 (금융권 종사자, 핀테크 스타트업, 투자자, IT 전문가, 일반인)/② ITALIC"
},
"19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "기타사항",
"value": {
"Left": 12,
"Indent": 10
"Left": 15,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (12), 내어쓰기 (10)",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 09. 27.",
"searchValue": "2025. 10. 25.",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 09. 27.)/① 크기 (1400)",
"item": "문구 (2025. 10. 25.)/① 크기 (1400)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 09. 27.",
"searchValue": "2025. 10. 25.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 09. 27.)/② 정렬 (가운데 정렬)"
"item": "문구 (2025. 10. 25.)/② 정렬 (가운데 정렬)"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "한방발전추진협회",
"value": "견고딕",
"searchValue": "글로벌 핀테크 컨퍼런스",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "문구 (한방발전추진협회)/① 글씨체 (견고딕)"
"item": "문구 (글로벌 핀테크 컨퍼런스)/① 글씨체 (굴림)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "한방발전추진협회",
"value": "2600",
"searchValue": "글로벌 핀테크 컨퍼런스",
"value": "2300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한방발전추진협회)/② 크기 (2600)"
"item": "문구 (글로벌 핀테크 컨퍼런스)/② 크기 (2300)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "한방발전추진협회",
"searchValue": "글로벌 핀테크 컨퍼런스",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (한방발전추진협회)/③ 정렬 (가운데 정렬)"
"item": "문구 (글로벌 핀테크 컨퍼런스)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "돋움",
"value": "중고딕",
"points": 1,
"category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (돋움)"
"item": "문구 (DIAT)/① 글꼴 (중고딕)"
},
"26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
@@ -325,7 +325,7 @@
"31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "190",
"first_word": "",
"first_word": "",
"points": 2,
"category": "LineSpacing",
"item": "문제 1 줄간격 190% 설정",
@@ -361,17 +361,17 @@
},
"4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "65",
"value": "60",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (한약의 정의와 효과)/① 크기-너비 (65 mm)"
"item": "문구 (핀테크 산업)/① 크기-너비 (60 mm)"
},
"5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (한약의 정의와 효과)/② 크기-높이 (12 mm)"
"item": "문구 (핀테크 산업)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE//LINESHAPE",
@@ -381,51 +381,51 @@
},
"points": 2,
"category": "Rectangle.LineShape",
"item": "문구 (한약의 정의와 효과)/③ 테두리 : 이중 실선(1.00mm)",
"item": "문구 (핀테크 산업)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE/@Ratio",
"value": "50",
"value": "20",
"points": 2,
"category": "Rectangle.OneAnswer",
"item": "문구 (한약의 정의와 효과)/④ 글상자 모서리 (반원)",
"item": "문구 (핀테크 산업)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "62,187,204",
"value": "227,220,193",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (한약의 정의와 효과)/⑤ 채우기 : 색상(RGB:62,187,204)"
"item": "문구 (핀테크 산업)/⑤ 채우기 : 색상(RGB:227,220,193)"
},
"9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true",
"points": 1,
"category": "Rectangle.OneAnswer",
"item": "문구 (한약의 정의와 효과)/⑥ 글상자 위치 (글자처럼 취급)"
"item": "문구 (핀테크 산업)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (한약의 정의와 효과)/⑦ 글상자 정렬 (가운데 정렬)"
"item": "문구 (핀테크 산업)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": ".//RECTANGLE//TEXT/@CharShape",
"value": "맑은 고딕",
"value": "고딕",
"points": 1,
"category": "Rectangle.FontName",
"item": "문구 (한약의 정의와 효과)/⑧ 글씨체 (맑은 고딕)"
"item": "문구 (핀테크 산업)/⑧ 글씨체 (고딕)"
},
"12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "1700",
"value": "2000",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (한약의 정의와 효과)/⑨ 글씨크기 (1700)",
"item": "문구 (핀테크 산업)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100"
},
"13": {
@@ -433,7 +433,7 @@
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (한약의 정의와 효과)/⑩ 정렬 (가운데 정렬)"
"item": "문구 (핀테크 산업)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG']",
@@ -445,10 +445,10 @@
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"value": "85",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
"item": "② 크기-너비 (85 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
@@ -462,92 +462,92 @@
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "23",
"value": "22",
"points": 2,
"category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 23 mm)"
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)"
},
"19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 한약이란?",
"value": "굴림",
"searchValue": "1. 핀테크 산업",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구① (1. 한약이란?)/① 글씨체 (굴림)"
"item": "문구① (1. 핀테크 산업)/① 글씨체 (돋움)"
},
"20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 한약이란?",
"searchValue": "1. 핀테크 산업",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구① (1. 한약이란?)/② 크기 (1200)"
"item": "문구① (1. 핀테크 산업)/② 크기 (1200)"
},
"21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 한약이란?",
"searchValue": "1. 핀테크 산업",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구① (1. 한약이란?)/③ 진하게"
"item": "문구① (1. 핀테크 산업)/③ 진하게"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 한약의 효과",
"value": "굴림",
"searchValue": "2. 성장 전망",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구② (2. 한약의 효과)/① 글씨체 (굴림)"
"item": "문구② (2. 성장 전망)/① 글씨체 (돋움)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 한약의 효과",
"searchValue": "2. 성장 전망",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구② (2. 한약의 효과)/② 크기 (1200)"
"item": "문구② (2. 성장 전망)/② 크기 (1200)"
},
"24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 한약의 효과",
"searchValue": "2. 성장 전망",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구② (2. 한약의 효과)/③ 진하게"
"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": "미신",
"option": "머신러닝",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (미신)/① 각주 설정 및 문구 입력"
"item": "문구 (머신러닝)/① 각주 설정 및 문구 입력"
},
"26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "비과학적이고 종교적으로 망령되다고 판단되는 신앙",
"value": "돋움체",
"searchValue": "인공지능의 연구 분야로 인간의 학습 능력과 같은 기능을 컴퓨터에서 실현하고자 하는 기술 및 기법",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구 (미신)/② 글씨체 (돋움체)"
"item": "문구 (머신러닝)/② 글씨체 (중고딕)"
},
"27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "비과학적이고 종교적으로 망령되다고 판단되는 신앙",
"searchValue": "인공지능의 연구 분야로 인간의 학습 능력과 같은 기능을 컴퓨터에서 실현하고자 하는 기술 및 기법",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (미신)/③ 크기 (9pt)"
"item": "문구 (머신러닝)/③ 크기 (9pt)"
},
"28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "비과학적이고 종교적으로 망령되다고 판단되는 신앙",
"value": "UserChar",
"searchValue": "인공지능의 연구 분야로 인간의 학습 능력과 같은 기능을 컴퓨터에서 실현하고자 하는 기술 및 기법",
"value": "CircledDigit",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
@@ -566,85 +566,86 @@
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"*,**,***": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Organism')])",
"ignoreWord": "Organism",
"path": "boolean(//CHAR[contains(text(),'FinTech')])",
"ignoreWord": "FinTech",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Organism/영단어 미입력, 대소문자/오타 시 전체 감점",
"item": "FinTech/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
},
"30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [
["한약", "韓藥"],
["배합", "配合"],
["채취", "採取"],
["보약", "補藥"],
["치료", "治療"]
["대체", "代替"],
["등장", "登場"],
["실생활", "實生活"],
["성장", "成長"],
["절감", "節減"]
],
"value": 10,
"points": 10,
"category": "Hanja",
"item": "① 한약(韓藥), ② 배합(配合), ③ 채취(採取), ④ 보약(補藥), ⑤ 치료(治療)"
"item": "① 대체(代替), ② 등장(登場), ③ 실생활(實生活), ④ 성장(成長), ⑤ 절감(節減)"
},
"31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'병을퇴치')])",
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'테크산업')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…사람의 질병은 퇴치할 수 있다고…)>'은 → 을' 글자바꿈"
"item": "문구 (…산업이 핀테크 전통 금융권과 협업하여…)>'산업이 / 핀테크' 순서바꿈"
},
"32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'부터한약')])",
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'계의자동')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…우리 민족은 한약만으로 예로부터 병을 치료해왔고…)>'한약만으로 / 예로부터' 순서바꿈"
"item": "문구 (…은행, 보험, 투자업계를 자동화 및 효율성…)>'를→의' 글자바꿈"
},
"33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "한약에 쓰이는 약초 재배량(단위 : )",
"value": "바탕체",
"searchValue": "핀테크 산업 성장률(단위: %)",
"value": "궁서",
"points": 1,
"category": "FontName",
"item": "제목 문구 (한약에 쓰이는 약초 재배량(단위 : ))/① 글씨체 (바탕체)"
"item": "제목 문구 (핀테크 산업 성장률(단위: %))/① 글씨체 (궁서)"
},
"34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "한약에 쓰이는 약초 재배량(단위 : )",
"value": "1100",
"searchValue": "핀테크 산업 성장률(단위: %)",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (한약에 쓰이는 약초 재배량(단위 : ))/② 크기 (1100)"
"item": "제목 문구 (핀테크 산업 성장률(단위: %))/② 크기 (1200)"
},
"35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "한약에 쓰이는 약초 재배량(단위 : )",
"searchValue": "핀테크 산업 성장률(단위: %)",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "제목 문구 (한약에 쓰이는 약초 재배량(단위 : ))/③ 진하게"
"item": "제목 문구 (핀테크 산업 성장률(단위: %))/③ 진하게"
},
"36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "한약에 쓰이는 약초 재배량(단위 : )",
"searchValue": "핀테크 산업 성장률(단위: %)",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (한약에 쓰이는 약초 재배량(단위 : ))/④ 정렬 (가운데 정렬)"
"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": "157,229,141",
"value": "221,141,229",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:157,229,141)"
"item": "위쪽 제목 셀/① 색상(RGB:221,141,229)"
},
"38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -673,11 +674,11 @@
"41": {
"path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "중고딕",
"value": "굴림",
"points": 1,
"category": "TableFontName",
"category_tmp": "FontName",
"item": "글자모양/① 글씨체 (중고딕)",
"item": "글자모양/① 글씨체 (굴림)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
},
"42": {
@@ -696,7 +697,7 @@
},
"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",
"option": "AVG",
"value": true,
"points": 4,
"category": "Boolean",
@@ -705,11 +706,11 @@
},
"45": {
"chart_xpath": "",
"chart_type": "누적 세로 막대형",
"chart_type": "묶은 가로 막대형",
"value": true,
"points": 2,
"category": "ChartType",
"item": "① 종류 (누적 세로 막대형)",
"item": "① 종류 (묶은 가로 막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
},
"46": {
@@ -744,36 +745,36 @@
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "한약에 쓰이는 약초 재배량",
"value": "궁서체",
"searchValue": "핀테크 산업 성장률",
"value": "바탕체",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (한약에 쓰이는 약초 재배량)/① 글씨체 (궁서체)"
"item": "제목 문구 (핀테크 산업 성장률)/① 글씨체 (바탕체)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "한약에 쓰이는 약초 재배량",
"value": "1300",
"searchValue": "핀테크 산업 성장률",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (한약에 쓰이는 약초 재배량)/② 크기 (1300)"
"item": "제목 문구 (핀테크 산업 성장률)/② 크기 (1400)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b",
"searchValue": "한약에 쓰이는 약초 재배량",
"searchValue": "핀테크 산업 성장률",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (한약에 쓰이는 약초 재배량)/③ 기울임",
"item": "제목 문구 (핀테크 산업 성장률)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface",
"value": "굴림체",
"value": "돋움",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/① 글꼴 (굴림체)"
"item": "X축/① 글꼴 (돋움)"
},
"54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
@@ -793,10 +794,10 @@
},
"56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface",
"value": "굴림체",
"value": "돋움",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (굴림체)"
"item": "Y축/① 글꼴 (돋움)"
},
"57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
@@ -816,10 +817,10 @@
},
"59": {
"chart_xpath": "//c:legend//a:ea/@typeface",
"value": "굴림체",
"value": "돋움",
"points": 1,
"category": "OneAnswer",
"item": "범례/① 글꼴 (굴림체)"
"item": "범례/① 글꼴 (돋움)"
},
"60": {
"chart_xpath": "//c:legend//a:defRPr/@sz",

View File

@@ -46,65 +46,65 @@
"1": {
"1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "즐거운컬러푸드영양교실",
"value": "궁서체",
"searchValue": "반려동물산업의미래",
"value": "굴림체",
"points": 1,
"category": "OneAnswer",
"item": "문구 (즐거운컬러푸드영양교실)/① 글씨체 (궁서체)"
"item": "문구 (반려동물산업의미래)/① 글씨체 (굴림체)"
},
"2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "즐거운컬러푸드영양교실",
"value": "51,63,153",
"searchValue": "반려동물산업의미래",
"value": "202,86,167",
"points": 2,
"category": "Color",
"item": "문구 (즐거운컬러푸드영양교실)/② 채우기 : 색상(RGB:51,63,153)"
"item": "문구 (반려동물산업의미래)/② 채우기 : 색상(RGB:202,86,167)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "즐거운컬러푸드영양교실",
"value": "130",
"searchValue": "반려동물산업의미래",
"value": "110",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (즐거운컬러푸드영양교실)/③ 크기-너비 (130 mm)"
"item": "문구 (반려동물산업의미래)/③ 크기-너비 (110 mm)"
},
"4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "즐거운컬러푸드영양교실",
"searchValue": "반려동물산업의미래",
"value": "20",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (즐거운컬러푸드영양교실)/④ 크기-높이 (20 mm)"
"item": "문구 (반려동물산업의미래)/④ 크기-높이 (20 mm)"
},
"5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "즐거운컬러푸드영양교실",
"searchValue": "반려동물산업의미래",
"value": "true",
"points": 2,
"category": "OneAnswer",
"item": "문구 (즐거운컬러푸드영양교실)/⑤ 위치 (글자처럼 취급)"
"item": "문구 (반려동물산업의미래)/⑤ 위치 (글자처럼 취급)"
},
"6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "즐거운컬러푸드영양교실",
"searchValue": "반려동물산업의미래",
"value": "Center",
"points": 2,
"category": "OneAnswer",
"item": "문구 (즐거운컬러푸드영양교실)/⑥ 정렬 (가운데 정렬)"
"item": "문구 (반려동물산업의미래)/⑥ 정렬 (가운데 정렬)"
},
"7": {
"path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "즐거운컬러푸드영양교실",
"searchValue": "반려동물산업의미래",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (즐거운컬러푸드영양교실)/⑦ 글맵시모양 (육안확인)"
"item": "문구 (반려동물산업의미래)/⑦ 글맵시모양 (육안확인)"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "",
"searchValue": "",
"value": {
"Height": 2800,
"Width": 2800
@@ -116,23 +116,23 @@
},
"9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "",
"value": "맑은 고딕",
"searchValue": "",
"value": "바탕체",
"points": 1,
"category": "FontName",
"item": "어/② 글씨체 (맑은 고딕)"
"item": "어/② 글씨체 (바탕체)"
},
"10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "",
"value": "105,231,82",
"searchValue": "",
"value": "252,229,88",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:105,231,82)"
"item": "어/③ 면색 : 색상(RGB:252,229,88)"
},
"11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "",
"searchValue": "",
"value": "3.0",
"tolerance": 1,
"points": 2,
@@ -141,39 +141,39 @@
},
"12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "즐거운 컬러푸드 영양교실",
"searchValue": "제1회 반려동물 산업의 미래",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (즐거운 컬러푸드 영양교실)/① BOLD"
"item": "문구 (제1회 반려동물 산업의 미래)/① BOLD"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "즐거운 컬러푸드 영양교실",
"value": "ITALIC",
"searchValue": "제1회 반려동물 산업의 미래",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (즐거운 컬러푸드 영양교실)/② ITALIC"
"item": "문구 (제1회 반려동물 산업의 미래)/② UNDERLINE"
},
"14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "",
"char2": "",
"char1": "",
"char2": "",
"char3": "※",
"value": 3,
"points": 3,
"category": "SpecialChar",
"item": "① , ② , ③ ※"
"item": "① , ② , ③ ※"
},
"15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내",
"value": "굴림체",
"value": "궁서",
"points": 1,
"category": "FontName",
"item": "문구 ( 행사안내 )/① 글씨체 (굴림체)"
"item": "문구 ( 행사안내 )/① 글씨체 (궁서)"
},
"16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
@@ -181,86 +181,86 @@
"value": "Center",
"points": 1,
"category": "Align",
"item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)"
"item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)"
},
"17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "홈페이지(http://www.ihd.or.kr)",
"value": "ITALIC",
"searchValue": "반려동물 산업 종사자, 단체 및 학계, 언론 관계자 등",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (홈페이지(http://www.ihd.or.kr))/① ITALIC"
"item": "문구 (반려동물 산업 종사자, 단체 및 학계, 언론 관계자 등)/① BOLD"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "홈페이지(http://www.ihd.or.kr)",
"value": "UNDERLINE",
"searchValue": "반려동물 산업 종사자, 단체 및 학계, 언론 관계자 등",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (홈페이지(http://www.ihd.or.kr))/② UNDERLINE"
"item": "문구 (반려동물 산업 종사자, 단체 및 학계, 언론 관계자 등)/② ITALIC"
},
"19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
"searchValue": "기타사항",
"value": {
"Left": 18,
"Left": 15,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (18), 내어쓰기 (12)",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15), 내어쓰기 (12)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 10. 16.",
"value": "1400",
"searchValue": "2025. 10. 25.",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 10. 16.)/① 크기 (1400)",
"item": "문구 (2025. 10. 25.)/① 크기 (1300)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 10. 16.",
"searchValue": "2025. 10. 25.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 10. 16.)/② 정렬 (가운데 정렬)"
"item": "문구 (2025. 10. 25.)/② 정렬 (가운데 정렬)"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "용일동보건소",
"value": "중고딕",
"searchValue": "한국반려동물산업협회",
"value": "궁서체",
"points": 1,
"category": "FontName",
"item": "문구 (용일동보건소)/① 글씨체 (중고딕)"
"item": "문구 (한국반려동물산업협회)/① 글씨체 (궁서체)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "용일동보건소",
"value": "2200",
"searchValue": "한국반려동물산업협회",
"value": "2400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (용일동보건소)/② 크기 (2200)"
"item": "문구 (한국반려동물산업협회)/② 크기 (2400)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "용일동보건소",
"searchValue": "한국반려동물산업협회",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (용일동보건소)/③ 정렬 (가운데 정렬)"
"item": "문구 (한국반려동물산업협회)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "돋움체",
"value": "굴림",
"points": 1,
"category": "Header.FontName",
"item": "문구 (DIAT)/① 글꼴 (돋움체)"
"item": "문구 (DIAT)/① 글꼴 (굴림)"
},
"26": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
@@ -324,11 +324,11 @@
},
"31": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "180",
"first_word": "",
"value": "200",
"first_word": "",
"points": 2,
"category": "LineSpacing",
"item": "문제 1 줄간격 180% 설정",
"item": "문제 1 줄간격 200% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
}
},
@@ -361,17 +361,17 @@
},
"4": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"value": "55",
"value": "60",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (다양한 컬러푸드)/① 크기-너비 (55 mm)"
"item": "문구 (반려동물 시장)/① 크기-너비 (60 mm)"
},
"5": {
"path": "//RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"value": "12",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (다양한 컬러푸드)/② 크기-높이 (12 mm)"
"item": "문구 (반려동물 시장)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE//LINESHAPE",
@@ -381,51 +381,51 @@
},
"points": 2,
"category": "Rectangle.LineShape",
"item": "문구 (다양한 컬러푸드)/③ 테두리 : 이중 실선(1.00mm)",
"item": "문구 (반려동물 시장)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE/@Ratio",
"value": "20",
"value": "50",
"points": 2,
"category": "Rectangle.OneAnswer",
"item": "문구 (다양한 컬러푸드)/④ 글상자 모서리 (반원)",
"item": "문구 (반려동물 시장)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "194,133,195",
"value": "233,174,43",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (다양한 컬러푸드)/⑤ 채우기 : 색상(RGB:194,133,195)"
"item": "문구 (반려동물 시장)/⑤ 채우기 : 색상(RGB:233,174,43)"
},
"9": {
"path": "//RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"value": "true",
"points": 1,
"category": "Rectangle.OneAnswer",
"item": "문구 (다양한 컬러푸드)/⑥ 글상자 위치 (글자처럼 취급)"
"item": "문구 (반려동물 시장)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id='{rect_parashape_id}']/@Align",
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (다양한 컬러푸드)/⑦ 글상자 정렬 (가운데 정렬)"
"item": "문구 (반려동물 시장)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": ".//RECTANGLE//TEXT/@CharShape",
"value": "견고딕",
"points": 1,
"category": "Rectangle.FontName",
"item": "문구 (다양한 컬러푸드)/⑧ 글씨체 (견고딕)"
"item": "문구 (반려동물 시장)/⑧ 글씨체 (견고딕)"
},
"12": {
"path": "//CHARSHAPE[@Id='{rect_charshape_id}']/@Height",
"value": "1600",
"value": "1800",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (다양한 컬러푸드)/⑨ 글씨크기 (1600)",
"item": "문구 (반려동물 시장)/⑨ 글씨크기 (1800)",
"desc": "1pt당 100"
},
"13": {
@@ -433,14 +433,14 @@
"value": "Center",
"points": 1,
"category": "Rectangle.TextBoxAlign",
"item": "문구 (다양한 컬러푸드)/⑩ 정렬 (가운데 정렬)"
"item": "문구 (반려동물 시장)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"item": "① 파일명 \"그림B.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
@@ -459,95 +459,95 @@
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "2",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 2mm)"
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "23",
"value": "22",
"points": 2,
"category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 23 mm)"
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)"
},
"19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 컬러푸드란?",
"value": "굴림",
"searchValue": "1. 펫 휴머니제이션",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구① (1. 컬러푸드란?)/① 글씨체 (굴림)"
"item": "문구① (1. 펫 휴머니제이션)/① 글씨체 (돋움)"
},
"20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 컬러푸드란?",
"value": "1100",
"searchValue": "1. 펫 휴머니제이션",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구① (1. 컬러푸드란?)/② 크기 (1100)"
"item": "문구① (1. 펫 휴머니제이션)/② 크기 (1200)"
},
"21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 컬러푸드란?",
"searchValue": "1. 펫 휴머니제이션",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구① (1. 컬러푸드란?)/③ 진하게"
"item": "문구① (1. 펫 휴머니제이션)/③ 진하게"
},
"22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 컬러푸드의 효능",
"value": "굴림",
"searchValue": "2. 반려동물 산업의 미래",
"value": "돋움",
"points": 1,
"category": "FontName",
"item": "문구② (2. 컬러푸드의 효능)/① 글씨체 (굴림)"
"item": "문구② (2. 반려동물 산업의 미래)/① 글씨체 (돋움)"
},
"23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 컬러푸드의 효능",
"value": "1100",
"searchValue": "2. 반려동물 산업의 미래",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "문구② (2. 컬러푸드의 효능)/② 크기 (1100)"
"item": "문구② (2. 반려동물 산업의 미래)/② 크기 (1200)"
},
"24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 컬러푸드의 효능",
"searchValue": "2. 반려동물 산업의 미래",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구② (2. 컬러푸드의 효능)/③ 진하게"
"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": "항산화 작용",
"option": "펫팸족",
"value": true,
"points": 2,
"category": "Boolean",
"item": "문구 (항산화 작용)/① 각주 설정 및 문구 입력"
"item": "문구 (펫팸족)/① 각주 설정 및 문구 입력"
},
"26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "산화를 억제하는 작용",
"value": "굴림",
"searchValue": "반려동물을 가족처럼 여기는 사람들",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구 (항산화 작용)/② 글씨체 (굴림)"
"item": "문구 (펫팸족)/② 글씨체 (중고딕)"
},
"27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "산화를 억제하는 작용",
"searchValue": "반려동물을 가족처럼 여기는 사람들",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (항산화 작용)/③ 크기 (9pt)"
"item": "문구 (펫팸족)/③ 크기 (9pt)"
},
"28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "산화를 억제하는 작용",
"value": "UserChar",
"searchValue": "반려동물을 가족처럼 여기는 사람들",
"value": "DecagonCircleHanja",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
@@ -571,81 +571,81 @@
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Phytochemical')])",
"ignoreWord": "Phytochemical",
"path": "boolean(//CHAR[contains(text(),'Solution')])",
"ignoreWord": "Solution",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Phytochemical/영단어 미입력, 대소문자/오타 시 전체 감점",
"item": "Solution/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
},
"30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [
["미생물", "微生物"],
["해충", "害蟲"],
["재생", "再生"],
["노화", "老化"],
["성분", "成分"]
["미", "意味"],
["문화", "文化"],
["추세", "趨勢"],
["확대", "擴大"],
["전망", "展望"]
],
"value": 10,
"points": 10,
"category": "Hanja",
"item": "① 미생물(微生物), ② 해충(害蟲), ③ 재생(再生), ④ 노화(老化), ⑤ 성분(成分)"
"item": "① 의미(意味), ② 문화(文化), ③ 추세(趨勢), ④ 확대(擴大), ⑤ 전망(展望)"
},
"31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'신의몸을')])",
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'어가등장')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…해충 등으로부터 자신과 몸을 보호하는…)>'' → '' 글자바꿈"
"item": "문구 (…신조어는 등장하는 것처럼…)>'' → '' 글자바꿈"
},
"32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'관을튼튼')])",
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'출산,고령')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…튼튼하게 혈관을 하고…)>'튼튼하게' / '혈관을' 순서바꿈"
"item": "문구 (…경제 수준 향상, 고령화, 저출산, 1인 가구…)>'고령화, / 저출산, ' 순서바꿈"
},
"33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "과일야채 섭취량 비교(단위 : g)",
"value": "굴림체",
"searchValue": "국내 반려동물 시장 규모(단위:십억 원)",
"value": "돋움체",
"points": 1,
"category": "FontName",
"item": "제목 문구 (과일야채 섭취량 비교(단위 : g))/① 글씨체 (굴림체)"
"item": "제목 문구 (국내 반려동물 시장 규모(단위:십억 원))/① 글씨체 (돋움체)"
},
"34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "과일야채 섭취량 비교(단위 : g)",
"searchValue": "국내 반려동물 시장 규모(단위:십억 원)",
"value": "1100",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (과일야채 섭취량 비교(단위 : g))/② 크기 (1100)"
"item": "제목 문구 (국내 반려동물 시장 규모(단위:십억 원))/② 크기 (1100)"
},
"35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "과일야채 섭취량 비교(단위 : g)",
"searchValue": "국내 반려동물 시장 규모(단위:십억 원)",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "제목 문구 (과일야채 섭취량 비교(단위 : g))/③ 진하게"
"item": "제목 문구 (국내 반려동물 시장 규모(단위:십억 원))/③ 진하게"
},
"36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "과일야채 섭취량 비교(단위 : g)",
"searchValue": "국내 반려동물 시장 규모(단위:십억 원)",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (과일야채 섭취량 비교(단위 : g))/④ 정렬 (가운데 정렬)"
"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": "253,164,95",
"value": "166,220,112",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:253,164,95)"
"item": "위쪽 제목 셀/① 색상(RGB:166,220,112)"
},
"38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -674,11 +674,11 @@
"41": {
"path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "궁서",
"value": "돋움",
"points": 1,
"category": "TableFontName",
"category_tmp": "FontName",
"item": "글자모양/① 글씨체 (궁서)",
"item": "글자모양/① 글씨체 (돋움)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
},
"42": {
@@ -697,7 +697,7 @@
},
"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",
"option": "SUM",
"value": true,
"points": 4,
"category": "Boolean",
@@ -706,11 +706,11 @@
},
"45": {
"chart_xpath": "",
"chart_type": "묶은 가로 막대형",
"chart_type": "표식만 있는 분산형",
"value": true,
"points": 2,
"category": "ChartType",
"item": "① 종류 (묶은 가로 막대형)",
"item": "① 종류 (표식만 있는 분산형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
},
"46": {
@@ -745,36 +745,36 @@
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "과일야채 섭취량 비교",
"value": "돋움체",
"searchValue": "국내 반려동물 시장 규모",
"value": "궁서체",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (과일야채 섭취량 비교)/① 글씨체 (돋움체)"
"item": "제목 문구 (국내 반려동물 시장 규모)/① 글씨체 (궁서체)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "과일야채 섭취량 비교",
"value": "1400",
"searchValue": "국내 반려동물 시장 규모",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (과일야채 섭취량 비교)/② 크기 (1400)"
"item": "제목 문구 (국내 반려동물 시장 규모)/② 크기 (1300)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b",
"searchValue": "과일야채 섭취량 비교",
"searchValue": "국내 반려동물 시장 규모",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (과일야채 섭취량 비교)/③ 기울임",
"item": "제목 문구 (국내 반려동물 시장 규모)/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface",
"value": "돋움",
"value": "굴림",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/① 글꼴 (돋움)"
"item": "X축/① 글꼴 (굴림)"
},
"54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
@@ -794,10 +794,10 @@
},
"56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface",
"value": "돋움",
"value": "굴림",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (돋움)"
"item": "Y축/① 글꼴 (굴림)"
},
"57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
@@ -817,10 +817,10 @@
},
"59": {
"chart_xpath": "//c:legend//a:ea/@typeface",
"value": "돋움",
"value": "굴림",
"points": 1,
"category": "OneAnswer",
"item": "범례/① 글꼴 (돋움)"
"item": "범례/① 글꼴 (굴림)"
},
"60": {
"chart_xpath": "//c:legend//a:defRPr/@sz",

View File

@@ -533,6 +533,17 @@ class XMLScorer:
chart_xpath = chart_xpath.replace("catAx", "valAx")
elif "valAx" in chart_xpath:
chart_xpath = chart_xpath.replace("valAx", "catAx")
# 분산형 차트의 경우
# xml파일 내부에서 x, y축 모두 valAx로 표기되고
# valAx의 axPos(축의위치) 속성값으로 축의 방향을 구분함
elif "분산형" in chart_type:
if "catAx" in chart_xpath:
# valAx[c:axPos/@val='b'] : 값축의 위치가 bottom (가로,x축)
chart_xpath = chart_xpath.replace("catAx", "valAx[c:axPos/@val='b']")
elif "valAx" in chart_xpath:
# valAx[c:axPos/@val='l'] : 값축의 위치가 left (세로,y축)
chart_xpath = chart_xpath.replace("valAx", "valAx[c:axPos/@val='l']")
chart_items = chart_tree.xpath(chart_xpath, namespaces=namespaces) if chart_xpath else []
@@ -1055,7 +1066,8 @@ class XMLScorer:
'묶은세로막대형': "//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']]",
'누적세로막대형': "//c:barChart[c:barDir[@val='col'] and c:grouping[@val='stacked']]",
'원형': "//c:pieChart",
'분산형': "//c:scatterChart"
'분산형': "//c:scatterChart",
'표식만있는분산형': "//c:scatterChart[c:scatterStyle[@val='marker']]",
}
chart_type = criterion.get('chart_type').replace(" ","")
@@ -1456,7 +1468,7 @@ def main():
# 채점하고자 하는 유형은 주석 해제
exam_types = [
'A',
# 'A',
'B',
# 'C',
# 'D',

View File

@@ -22489,3 +22489,264 @@
2025-10-20 15:44:49,569 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510\D\DIW -> D:\project\HWP\HWP-Scoring\output\2510\D\DIW
2025-10-20 15:44:50,069 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510\E\DIW -> D:\project\HWP\HWP-Scoring\output\2510\E\DIW
2025-10-20 15:44:51,277 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510\E\DIW -> D:\project\HWP\HWP-Scoring\output\2510\E\DIW
2025-10-23 16:28:36,960 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_2\A\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\A\DIW
2025-10-23 16:28:45,454 - INFO - 변환 성공: 워드(한글)-005397-오주환.hwp -> 워드(한글)-005397-오주환.hml
2025-10-23 16:28:46,210 - INFO - 변환 성공: 워드(한글)-005398-정하람.hwp -> 워드(한글)-005398-정하람.hml
2025-10-23 16:28:46,592 - INFO - 변환 성공: 워드(한글)-005358-김도후.hwpx -> 워드(한글)-005358-김도후.hml
2025-10-23 16:28:47,278 - INFO - 변환 성공: 워드(한글)-005359-고호빈.hwpx -> 워드(한글)-005359-고호빈.hml
2025-10-23 16:28:47,850 - INFO - 변환 성공: 워드(한글)-005360-이하율.hwpx -> 워드(한글)-005360-이하율.hml
2025-10-23 16:28:48,429 - INFO - 변환 성공: 워드(한글)-005361-위지우.hwpx -> 워드(한글)-005361-위지우.hml
2025-10-23 16:28:48,995 - INFO - 변환 성공: 워드(한글)-005364-김소은.hwpx -> 워드(한글)-005364-김소은.hml
2025-10-23 16:28:49,571 - INFO - 변환 성공: 워드(한글)-005378-고세림.hwpx -> 워드(한글)-005378-고세림.hml
2025-10-23 16:28:50,320 - INFO - 변환 성공: 워드(한글)-005379-김주원.hwpx -> 워드(한글)-005379-김주원.hml
2025-10-23 16:28:51,047 - INFO - 변환 성공: 워드(한글)-005380-송채민.hwpx -> 워드(한글)-005380-송채민.hml
2025-10-23 16:28:51,628 - INFO - 변환 성공: 워드(한글)-005381-문지용.hwpx -> 워드(한글)-005381-문지용.hml
2025-10-23 16:28:52,301 - INFO - 변환 성공: 워드(한글)-005382-서예준.hwpx -> 워드(한글)-005382-서예준.hml
2025-10-23 16:28:52,858 - INFO - 변환 성공: 워드(한글)-005383-박준수.hwpx -> 워드(한글)-005383-박준수.hml
2025-10-23 16:28:53,414 - INFO - 변환 성공: 워드(한글)-005384-강아윤.hwpx -> 워드(한글)-005384-강아윤.hml
2025-10-23 16:28:53,949 - INFO - 변환 성공: 워드(한글)-005385-강채윤.hwpx -> 워드(한글)-005385-강채윤.hml
2025-10-23 16:28:54,499 - INFO - 변환 성공: 워드(한글)-005386-김윤아.hwpx -> 워드(한글)-005386-김윤아.hml
2025-10-23 16:28:55,027 - INFO - 변환 성공: 워드(한글)-005387-김채현.hwpx -> 워드(한글)-005387-김채현.hml
2025-10-23 16:28:55,558 - INFO - 변환 성공: 워드(한글)-005388-지민주.hwpx -> 워드(한글)-005388-지민주.hml
2025-10-23 16:28:56,215 - INFO - 변환 성공: 워드(한글)-005389-김준우.hwpx -> 워드(한글)-005389-김준우.hml
2025-10-23 16:28:56,836 - INFO - 변환 성공: 워드(한글)-005390-양하연.hwpx -> 워드(한글)-005390-양하연.hml
2025-10-23 16:28:57,364 - INFO - 변환 성공: 워드(한글)-005391-주현지.hwpx -> 워드(한글)-005391-주현지.hml
2025-10-23 16:28:57,889 - INFO - 변환 성공: 워드(한글)-005423-김시윤.hwpx -> 워드(한글)-005423-김시윤.hml
2025-10-23 16:28:58,448 - INFO - 변환 성공: 워드(한글)-005424-김현아.hwpx -> 워드(한글)-005424-김현아.hml
2025-10-23 16:28:59,011 - INFO - 변환 성공: 워드(한글)-005428-최윤제.hwpx -> 워드(한글)-005428-최윤제.hml
2025-10-23 16:28:59,589 - INFO - 변환 성공: 워드(한글)-005429-김신우.hwpx -> 워드(한글)-005429-김신우.hml
2025-10-23 16:29:00,174 - INFO - 변환 성공: 워드(한글)-005430-신준혁.hwpx -> 워드(한글)-005430-신준혁.hml
2025-10-23 16:29:00,779 - INFO - 변환 성공: 워드(한글)-005431-이예온.hwpx -> 워드(한글)-005431-이예온.hml
2025-10-23 16:29:01,336 - INFO - 변환 성공: 워드(한글)-005432-김지호.hwpx -> 워드(한글)-005432-김지호.hml
2025-10-23 16:29:01,898 - INFO - 변환 성공: 워드(한글)-005433-임다온.hwpx -> 워드(한글)-005433-임다온.hml
2025-10-23 16:29:02,491 - INFO - 변환 성공: 워드(한글)-005434-고채혁.hwpx -> 워드(한글)-005434-고채혁.hml
2025-10-23 16:29:03,045 - INFO - 변환 성공: 워드(한글)-005435-서유준.hwpx -> 워드(한글)-005435-서유준.hml
2025-10-23 16:29:03,630 - INFO - 변환 성공: 워드(한글)-005436-안서준.hwpx -> 워드(한글)-005436-안서준.hml
2025-10-23 16:29:04,258 - INFO - 변환 성공: 워드(한글)-005456-고예진.hwpx -> 워드(한글)-005456-고예진.hml
2025-10-23 16:29:04,814 - INFO - 변환 성공: 워드(한글)-005457-김미현.hwpx -> 워드(한글)-005457-김미현.hml
2025-10-23 16:29:05,379 - INFO - 변환 성공: 워드(한글)-005458-양소은.hwpx -> 워드(한글)-005458-양소은.hml
2025-10-23 16:29:05,972 - INFO - 변환 성공: 워드(한글)-005459-진예빈.hwpx -> 워드(한글)-005459-진예빈.hml
2025-10-23 16:29:06,598 - INFO - 변환 성공: 워드(한글)-005476-오신예.hwpx -> 워드(한글)-005476-오신예.hml
2025-10-23 16:29:07,165 - INFO - 변환 성공: 워드(한글)-005477-안지용.hwpx -> 워드(한글)-005477-안지용.hml
2025-10-23 16:29:07,744 - INFO - 변환 성공: 워드(한글)-005478-이은아.hwpx -> 워드(한글)-005478-이은아.hml
2025-10-23 16:29:08,300 - INFO - 변환 성공: 워드(한글)-005479-김려은.hwpx -> 워드(한글)-005479-김려은.hml
2025-10-23 16:29:08,882 - INFO - 변환 성공: 워드(한글)-005505-김권범.hwpx -> 워드(한글)-005505-김권범.hml
2025-10-23 16:29:09,384 - INFO - 변환 성공: 워드(한글)-005506-허다윤.hwpx -> 워드(한글)-005506-허다윤.hml
2025-10-23 16:29:09,884 - INFO - 변환 성공: 워드(한글)-005507-서연우.hwpx -> 워드(한글)-005507-서연우.hml
2025-10-23 16:29:10,460 - INFO - 변환 성공: 워드(한글)-005508-현가윤.hwpx -> 워드(한글)-005508-현가윤.hml
2025-10-23 16:29:11,062 - INFO - 변환 성공: 워드(한글)-005509-김루안.hwpx -> 워드(한글)-005509-김루안.hml
2025-10-23 16:29:11,675 - INFO - 변환 성공: 워드(한글)-005515-김준우.hwpx -> 워드(한글)-005515-김준우.hml
2025-10-23 16:29:12,324 - INFO - 변환 성공: 워드(한글)-005516-고가희.hwpx -> 워드(한글)-005516-고가희.hml
2025-10-23 16:29:12,907 - INFO - 변환 성공: 워드(한글)-005517-손다엘.hwpx -> 워드(한글)-005517-손다엘.hml
2025-10-23 16:29:13,470 - INFO - 변환 성공: 워드(한글)-005518-김라희.hwpx -> 워드(한글)-005518-김라희.hml
2025-10-23 16:29:14,172 - INFO - 변환 성공: 워드(한글)-005519-김지우.hwpx -> 워드(한글)-005519-김지우.hml
2025-10-23 16:29:14,736 - INFO - 변환 성공: 워드(한글)-005556-오상휘.hwpx -> 워드(한글)-005556-오상휘.hml
2025-10-23 16:29:15,275 - INFO - 변환 성공: 워드(한글)-005557-이지헌.hwpx -> 워드(한글)-005557-이지헌.hml
2025-10-23 16:29:15,826 - INFO - 변환 성공: 워드(한글)-005558-이준.hwpx -> 워드(한글)-005558-이준.hml
2025-10-23 16:29:16,389 - INFO - 변환 성공: 워드(한글)-005559-신유준.hwpx -> 워드(한글)-005559-신유준.hml
2025-10-23 16:29:17,126 - INFO - 변환 성공: 워드(한글)-005560-정호진.hwpx -> 워드(한글)-005560-정호진.hml
2025-10-23 16:29:17,715 - INFO - 변환 성공: 워드(한글)-005598-박정원.hwpx -> 워드(한글)-005598-박정원.hml
2025-10-23 16:29:18,270 - INFO - 변환 성공: 워드(한글)-005599-부설현.hwpx -> 워드(한글)-005599-부설현.hml
2025-10-23 16:29:18,834 - INFO - 변환 성공: 워드(한글)-005600-송지석.hwpx -> 워드(한글)-005600-송지석.hml
2025-10-23 16:29:19,411 - INFO - 변환 성공: 워드(한글)-005601-윤건영.hwpx -> 워드(한글)-005601-윤건영.hml
2025-10-23 16:29:20,037 - INFO - 변환 성공: 워드(한글)-005602-윤건우.hwpx -> 워드(한글)-005602-윤건우.hml
2025-10-23 16:29:20,618 - INFO - 변환 성공: 워드(한글)-005607-박소민.hwpx -> 워드(한글)-005607-박소민.hml
2025-10-23 16:29:21,210 - INFO - 변환 성공: 워드(한글)-005608-고채원.hwpx -> 워드(한글)-005608-고채원.hml
2025-10-23 16:29:21,847 - INFO - 변환 성공: 워드(한글)-005609-윤하빈.hwpx -> 워드(한글)-005609-윤하빈.hml
2025-10-23 16:29:22,445 - INFO - 변환 성공: 워드(한글)-005610-김민창.hwpx -> 워드(한글)-005610-김민창.hml
2025-10-23 16:29:23,006 - INFO - 변환 성공: 워드(한글)-005611-김채율.hwpx -> 워드(한글)-005611-김채율.hml
2025-10-23 16:29:23,582 - INFO - 변환 성공: 워드(한글)-005612-좌예주.hwpx -> 워드(한글)-005612-좌예주.hml
2025-10-23 16:29:24,182 - INFO - 변환 성공: 워드(한글)-005618-박은서.hwpx -> 워드(한글)-005618-박은서.hml
2025-10-23 16:29:24,774 - INFO - 변환 성공: 워드(한글)-005625-김주이.hwpx -> 워드(한글)-005625-김주이.hml
2025-10-23 16:29:25,329 - INFO - 변환 성공: 워드(한글)-005639-김서연.hwpx -> 워드(한글)-005639-김서연.hml
2025-10-23 16:29:25,897 - INFO - 변환 성공: 워드(한글)-005640-박기윤.hwpx -> 워드(한글)-005640-박기윤.hml
2025-10-23 16:29:26,473 - INFO - 변환 성공: 워드(한글)-005641-함지율.hwpx -> 워드(한글)-005641-함지율.hml
2025-10-23 16:29:27,068 - INFO - 변환 성공: 워드(한글)-005642-서가온.hwpx -> 워드(한글)-005642-서가온.hml
2025-10-23 16:29:27,670 - INFO - 변환 성공: 워드(한글)-005643-용소율.hwpx -> 워드(한글)-005643-용소율.hml
2025-10-23 16:29:28,174 - INFO - 변환 성공: 워드(한글)-005644-김예닮.hwpx -> 워드(한글)-005644-김예닮.hml
2025-10-23 16:29:28,636 - INFO - 변환 성공: 워드(한글)-005652-김해윤.hwpx -> 워드(한글)-005652-김해윤.hml
2025-10-23 16:29:29,209 - INFO - 변환 성공: 워드(한글)-005653-정믿음.hwpx -> 워드(한글)-005653-정믿음.hml
2025-10-23 16:29:29,776 - INFO - 변환 성공: 워드(한글)-005654-강용준.hwpx -> 워드(한글)-005654-강용준.hml
2025-10-23 16:29:30,348 - INFO - 변환 성공: 워드(한글)-005655-고승운.hwpx -> 워드(한글)-005655-고승운.hml
2025-10-23 16:29:30,882 - INFO - 변환 성공: 워드(한글)-005656-고채린.hwpx -> 워드(한글)-005656-고채린.hml
2025-10-23 16:29:31,485 - INFO - 변환 성공: 워드(한글)-005660-김현정.hwpx -> 워드(한글)-005660-김현정.hml
2025-10-23 16:29:32,082 - INFO - 변환 성공: 워드(한글)-005662-오소윤.hwpx -> 워드(한글)-005662-오소윤.hml
2025-10-23 16:29:32,657 - INFO - 변환 성공: 워드(한글)-005667-고하림.hwpx -> 워드(한글)-005667-고하림.hml
2025-10-23 16:29:33,225 - INFO - 변환 성공: 워드(한글)-005668-김도율.hwpx -> 워드(한글)-005668-김도율.hml
2025-10-23 16:29:33,823 - INFO - 변환 성공: 워드(한글)-005669-김보민.hwpx -> 워드(한글)-005669-김보민.hml
2025-10-23 16:29:34,555 - INFO - 변환 성공: 워드(한글)-005670-신동윤.hwpx -> 워드(한글)-005670-신동윤.hml
2025-10-23 16:29:35,242 - INFO - 변환 성공: 워드(한글)-005671-오하나.hwpx -> 워드(한글)-005671-오하나.hml
2025-10-23 16:29:35,823 - INFO - 변환 성공: 워드(한글)-005701-강수민.hwpx -> 워드(한글)-005701-강수민.hml
2025-10-23 16:29:36,334 - INFO - 변환 성공: 워드(한글)-005702-김우성.hwpx -> 워드(한글)-005702-김우성.hml
2025-10-23 16:29:36,848 - INFO - 변환 성공: 워드(한글)-005703-송승현.hwpx -> 워드(한글)-005703-송승현.hml
2025-10-23 16:29:37,346 - INFO - 변환 성공: 워드(한글)-005704-이현준.hwpx -> 워드(한글)-005704-이현준.hml
2025-10-23 16:29:37,814 - INFO - 변환 성공: 워드(한글)-005705-박소현.hwpx -> 워드(한글)-005705-박소현.hml
2025-10-23 16:29:38,404 - INFO - 변환 성공: 워드(한글)-005706-고준수.hwpx -> 워드(한글)-005706-고준수.hml
2025-10-23 16:29:38,875 - INFO - 변환 성공: 워드(한글)-005724-고은찬.hwpx -> 워드(한글)-005724-고은찬.hml
2025-10-23 16:29:39,405 - INFO - 변환 성공: 워드(한글)-005725-현주하.hwpx -> 워드(한글)-005725-현주하.hml
2025-10-23 16:29:40,001 - INFO - 변환 성공: 워드(한글)-005726-문지혜.hwpx -> 워드(한글)-005726-문지혜.hml
2025-10-23 16:29:40,532 - INFO - 변환 성공: 워드(한글)-005727-장우진.hwpx -> 워드(한글)-005727-장우진.hml
2025-10-23 16:29:41,101 - INFO - 변환 성공: 워드(한글)-005728-송재우.hwpx -> 워드(한글)-005728-송재우.hml
2025-10-23 16:29:41,688 - INFO - 변환 성공: 워드(한글)-005729-강지안.hwpx -> 워드(한글)-005729-강지안.hml
2025-10-23 16:29:42,148 - INFO - 변환 성공: 워드(한글)-005730-김보연.hwpx -> 워드(한글)-005730-김보연.hml
2025-10-23 16:29:42,344 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_2\A\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\A\DIW
2025-10-23 16:29:42,845 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_2\B\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\B\DIW
2025-10-23 16:29:46,568 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_2\B\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\B\DIW
2025-10-23 16:29:47,070 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_2\C\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\C\DIW
2025-10-23 16:29:48,458 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_2\C\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\C\DIW
2025-10-23 16:29:48,959 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_2\D\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\D\DIW
2025-10-23 16:29:50,233 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_2\D\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\D\DIW
2025-10-23 16:29:50,734 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_2\E\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\E\DIW
2025-10-23 16:29:51,997 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_2\E\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\E\DIW
2025-10-23 16:31:31,002 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_2\A\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\A\DIW
2025-10-23 16:31:34,327 - INFO - 변환 성공: 워드(한글)-005397-오주환.hwp -> 워드(한글)-005397-오주환.hml
2025-10-23 16:31:34,953 - INFO - 변환 성공: 워드(한글)-005398-정하람.hwp -> 워드(한글)-005398-정하람.hml
2025-10-23 16:31:35,340 - INFO - 변환 성공: 워드(한글)-005358-김도후.hwpx -> 워드(한글)-005358-김도후.hml
2025-10-23 16:31:35,974 - INFO - 변환 성공: 워드(한글)-005359-고호빈.hwpx -> 워드(한글)-005359-고호빈.hml
2025-10-23 16:31:36,527 - INFO - 변환 성공: 워드(한글)-005360-이하율.hwpx -> 워드(한글)-005360-이하율.hml
2025-10-23 16:31:37,040 - INFO - 변환 성공: 워드(한글)-005361-위지우.hwpx -> 워드(한글)-005361-위지우.hml
2025-10-23 16:31:37,585 - INFO - 변환 성공: 워드(한글)-005364-김소은.hwpx -> 워드(한글)-005364-김소은.hml
2025-10-23 16:31:38,128 - INFO - 변환 성공: 워드(한글)-005378-고세림.hwpx -> 워드(한글)-005378-고세림.hml
2025-10-23 16:31:38,839 - INFO - 변환 성공: 워드(한글)-005379-김주원.hwpx -> 워드(한글)-005379-김주원.hml
2025-10-23 16:31:39,466 - INFO - 변환 성공: 워드(한글)-005380-송채민.hwpx -> 워드(한글)-005380-송채민.hml
2025-10-23 16:31:40,011 - INFO - 변환 성공: 워드(한글)-005381-문지용.hwpx -> 워드(한글)-005381-문지용.hml
2025-10-23 16:31:40,547 - INFO - 변환 성공: 워드(한글)-005382-서예준.hwpx -> 워드(한글)-005382-서예준.hml
2025-10-23 16:31:41,060 - INFO - 변환 성공: 워드(한글)-005383-박준수.hwpx -> 워드(한글)-005383-박준수.hml
2025-10-23 16:31:41,578 - INFO - 변환 성공: 워드(한글)-005384-강아윤.hwpx -> 워드(한글)-005384-강아윤.hml
2025-10-23 16:31:42,082 - INFO - 변환 성공: 워드(한글)-005385-강채윤.hwpx -> 워드(한글)-005385-강채윤.hml
2025-10-23 16:31:42,611 - INFO - 변환 성공: 워드(한글)-005386-김윤아.hwpx -> 워드(한글)-005386-김윤아.hml
2025-10-23 16:31:43,114 - INFO - 변환 성공: 워드(한글)-005387-김채현.hwpx -> 워드(한글)-005387-김채현.hml
2025-10-23 16:31:43,620 - INFO - 변환 성공: 워드(한글)-005388-지민주.hwpx -> 워드(한글)-005388-지민주.hml
2025-10-23 16:31:44,266 - INFO - 변환 성공: 워드(한글)-005389-김준우.hwpx -> 워드(한글)-005389-김준우.hml
2025-10-23 16:31:44,866 - INFO - 변환 성공: 워드(한글)-005390-양하연.hwpx -> 워드(한글)-005390-양하연.hml
2025-10-23 16:31:45,376 - INFO - 변환 성공: 워드(한글)-005391-주현지.hwpx -> 워드(한글)-005391-주현지.hml
2025-10-23 16:31:45,938 - INFO - 변환 성공: 워드(한글)-005423-김시윤.hwpx -> 워드(한글)-005423-김시윤.hml
2025-10-23 16:31:46,456 - INFO - 변환 성공: 워드(한글)-005424-김현아.hwpx -> 워드(한글)-005424-김현아.hml
2025-10-23 16:31:47,039 - INFO - 변환 성공: 워드(한글)-005428-최윤제.hwpx -> 워드(한글)-005428-최윤제.hml
2025-10-23 16:31:47,605 - INFO - 변환 성공: 워드(한글)-005429-김신우.hwpx -> 워드(한글)-005429-김신우.hml
2025-10-23 16:31:48,152 - INFO - 변환 성공: 워드(한글)-005430-신준혁.hwpx -> 워드(한글)-005430-신준혁.hml
2025-10-23 16:31:48,730 - INFO - 변환 성공: 워드(한글)-005431-이예온.hwpx -> 워드(한글)-005431-이예온.hml
2025-10-23 16:31:49,258 - INFO - 변환 성공: 워드(한글)-005432-김지호.hwpx -> 워드(한글)-005432-김지호.hml
2025-10-23 16:31:49,834 - INFO - 변환 성공: 워드(한글)-005433-임다온.hwpx -> 워드(한글)-005433-임다온.hml
2025-10-23 16:31:50,405 - INFO - 변환 성공: 워드(한글)-005434-고채혁.hwpx -> 워드(한글)-005434-고채혁.hml
2025-10-23 16:31:50,983 - INFO - 변환 성공: 워드(한글)-005435-서유준.hwpx -> 워드(한글)-005435-서유준.hml
2025-10-23 16:31:51,547 - INFO - 변환 성공: 워드(한글)-005436-안서준.hwpx -> 워드(한글)-005436-안서준.hml
2025-10-23 16:31:52,081 - INFO - 변환 성공: 워드(한글)-005456-고예진.hwpx -> 워드(한글)-005456-고예진.hml
2025-10-23 16:31:52,610 - INFO - 변환 성공: 워드(한글)-005457-김미현.hwpx -> 워드(한글)-005457-김미현.hml
2025-10-23 16:31:53,118 - INFO - 변환 성공: 워드(한글)-005458-양소은.hwpx -> 워드(한글)-005458-양소은.hml
2025-10-23 16:31:53,646 - INFO - 변환 성공: 워드(한글)-005459-진예빈.hwpx -> 워드(한글)-005459-진예빈.hml
2025-10-23 16:31:54,194 - INFO - 변환 성공: 워드(한글)-005476-오신예.hwpx -> 워드(한글)-005476-오신예.hml
2025-10-23 16:31:54,715 - INFO - 변환 성공: 워드(한글)-005477-안지용.hwpx -> 워드(한글)-005477-안지용.hml
2025-10-23 16:31:55,227 - INFO - 변환 성공: 워드(한글)-005478-이은아.hwpx -> 워드(한글)-005478-이은아.hml
2025-10-23 16:31:55,756 - INFO - 변환 성공: 워드(한글)-005479-김려은.hwpx -> 워드(한글)-005479-김려은.hml
2025-10-23 16:31:56,294 - INFO - 변환 성공: 워드(한글)-005505-김권범.hwpx -> 워드(한글)-005505-김권범.hml
2025-10-23 16:31:56,793 - INFO - 변환 성공: 워드(한글)-005506-허다윤.hwpx -> 워드(한글)-005506-허다윤.hml
2025-10-23 16:31:57,256 - INFO - 변환 성공: 워드(한글)-005507-서연우.hwpx -> 워드(한글)-005507-서연우.hml
2025-10-23 16:31:57,809 - INFO - 변환 성공: 워드(한글)-005508-현가윤.hwpx -> 워드(한글)-005508-현가윤.hml
2025-10-23 16:31:58,356 - INFO - 변환 성공: 워드(한글)-005509-김루안.hwpx -> 워드(한글)-005509-김루안.hml
2025-10-23 16:31:58,851 - INFO - 변환 성공: 워드(한글)-005515-김준우.hwpx -> 워드(한글)-005515-김준우.hml
2025-10-23 16:31:59,377 - INFO - 변환 성공: 워드(한글)-005516-고가희.hwpx -> 워드(한글)-005516-고가희.hml
2025-10-23 16:31:59,888 - INFO - 변환 성공: 워드(한글)-005517-손다엘.hwpx -> 워드(한글)-005517-손다엘.hml
2025-10-23 16:32:00,437 - INFO - 변환 성공: 워드(한글)-005518-김라희.hwpx -> 워드(한글)-005518-김라희.hml
2025-10-23 16:32:00,971 - INFO - 변환 성공: 워드(한글)-005519-김지우.hwpx -> 워드(한글)-005519-김지우.hml
2025-10-23 16:32:01,503 - INFO - 변환 성공: 워드(한글)-005556-오상휘.hwpx -> 워드(한글)-005556-오상휘.hml
2025-10-23 16:32:02,059 - INFO - 변환 성공: 워드(한글)-005557-이지헌.hwpx -> 워드(한글)-005557-이지헌.hml
2025-10-23 16:32:02,576 - INFO - 변환 성공: 워드(한글)-005558-이준.hwpx -> 워드(한글)-005558-이준.hml
2025-10-23 16:32:03,128 - INFO - 변환 성공: 워드(한글)-005559-신유준.hwpx -> 워드(한글)-005559-신유준.hml
2025-10-23 16:32:03,678 - INFO - 변환 성공: 워드(한글)-005560-정호진.hwpx -> 워드(한글)-005560-정호진.hml
2025-10-23 16:32:04,213 - INFO - 변환 성공: 워드(한글)-005598-박정원.hwpx -> 워드(한글)-005598-박정원.hml
2025-10-23 16:32:04,783 - INFO - 변환 성공: 워드(한글)-005599-부설현.hwpx -> 워드(한글)-005599-부설현.hml
2025-10-23 16:32:05,360 - INFO - 변환 성공: 워드(한글)-005600-송지석.hwpx -> 워드(한글)-005600-송지석.hml
2025-10-23 16:32:05,906 - INFO - 변환 성공: 워드(한글)-005601-윤건영.hwpx -> 워드(한글)-005601-윤건영.hml
2025-10-23 16:32:06,435 - INFO - 변환 성공: 워드(한글)-005602-윤건우.hwpx -> 워드(한글)-005602-윤건우.hml
2025-10-23 16:32:06,978 - INFO - 변환 성공: 워드(한글)-005607-박소민.hwpx -> 워드(한글)-005607-박소민.hml
2025-10-23 16:32:07,519 - INFO - 변환 성공: 워드(한글)-005608-고채원.hwpx -> 워드(한글)-005608-고채원.hml
2025-10-23 16:32:08,049 - INFO - 변환 성공: 워드(한글)-005609-윤하빈.hwpx -> 워드(한글)-005609-윤하빈.hml
2025-10-23 16:32:08,567 - INFO - 변환 성공: 워드(한글)-005610-김민창.hwpx -> 워드(한글)-005610-김민창.hml
2025-10-23 16:32:09,093 - INFO - 변환 성공: 워드(한글)-005611-김채율.hwpx -> 워드(한글)-005611-김채율.hml
2025-10-23 16:32:09,639 - INFO - 변환 성공: 워드(한글)-005612-좌예주.hwpx -> 워드(한글)-005612-좌예주.hml
2025-10-23 16:32:10,280 - INFO - 변환 성공: 워드(한글)-005618-박은서.hwpx -> 워드(한글)-005618-박은서.hml
2025-10-23 16:32:10,839 - INFO - 변환 성공: 워드(한글)-005625-김주이.hwpx -> 워드(한글)-005625-김주이.hml
2025-10-23 16:32:11,398 - INFO - 변환 성공: 워드(한글)-005639-김서연.hwpx -> 워드(한글)-005639-김서연.hml
2025-10-23 16:32:11,912 - INFO - 변환 성공: 워드(한글)-005640-박기윤.hwpx -> 워드(한글)-005640-박기윤.hml
2025-10-23 16:32:12,438 - INFO - 변환 성공: 워드(한글)-005641-함지율.hwpx -> 워드(한글)-005641-함지율.hml
2025-10-23 16:32:12,979 - INFO - 변환 성공: 워드(한글)-005642-서가온.hwpx -> 워드(한글)-005642-서가온.hml
2025-10-23 16:32:13,551 - INFO - 변환 성공: 워드(한글)-005643-용소율.hwpx -> 워드(한글)-005643-용소율.hml
2025-10-23 16:32:14,000 - INFO - 변환 성공: 워드(한글)-005644-김예닮.hwpx -> 워드(한글)-005644-김예닮.hml
2025-10-23 16:32:14,445 - INFO - 변환 성공: 워드(한글)-005652-김해윤.hwpx -> 워드(한글)-005652-김해윤.hml
2025-10-23 16:32:14,983 - INFO - 변환 성공: 워드(한글)-005653-정믿음.hwpx -> 워드(한글)-005653-정믿음.hml
2025-10-23 16:32:15,509 - INFO - 변환 성공: 워드(한글)-005654-강용준.hwpx -> 워드(한글)-005654-강용준.hml
2025-10-23 16:32:16,029 - INFO - 변환 성공: 워드(한글)-005655-고승운.hwpx -> 워드(한글)-005655-고승운.hml
2025-10-23 16:32:16,574 - INFO - 변환 성공: 워드(한글)-005656-고채린.hwpx -> 워드(한글)-005656-고채린.hml
2025-10-23 16:32:17,122 - INFO - 변환 성공: 워드(한글)-005660-김현정.hwpx -> 워드(한글)-005660-김현정.hml
2025-10-23 16:32:17,744 - INFO - 변환 성공: 워드(한글)-005662-오소윤.hwpx -> 워드(한글)-005662-오소윤.hml
2025-10-23 16:32:18,316 - INFO - 변환 성공: 워드(한글)-005667-고하림.hwpx -> 워드(한글)-005667-고하림.hml
2025-10-23 16:32:18,864 - INFO - 변환 성공: 워드(한글)-005668-김도율.hwpx -> 워드(한글)-005668-김도율.hml
2025-10-23 16:32:19,440 - INFO - 변환 성공: 워드(한글)-005669-김보민.hwpx -> 워드(한글)-005669-김보민.hml
2025-10-23 16:32:19,977 - INFO - 변환 성공: 워드(한글)-005670-신동윤.hwpx -> 워드(한글)-005670-신동윤.hml
2025-10-23 16:32:20,533 - INFO - 변환 성공: 워드(한글)-005671-오하나.hwpx -> 워드(한글)-005671-오하나.hml
2025-10-23 16:32:21,063 - INFO - 변환 성공: 워드(한글)-005701-강수민.hwpx -> 워드(한글)-005701-강수민.hml
2025-10-23 16:32:21,569 - INFO - 변환 성공: 워드(한글)-005702-김우성.hwpx -> 워드(한글)-005702-김우성.hml
2025-10-23 16:32:22,012 - INFO - 변환 성공: 워드(한글)-005703-송승현.hwpx -> 워드(한글)-005703-송승현.hml
2025-10-23 16:32:22,466 - INFO - 변환 성공: 워드(한글)-005704-이현준.hwpx -> 워드(한글)-005704-이현준.hml
2025-10-23 16:32:22,954 - INFO - 변환 성공: 워드(한글)-005705-박소현.hwpx -> 워드(한글)-005705-박소현.hml
2025-10-23 16:32:23,478 - INFO - 변환 성공: 워드(한글)-005706-고준수.hwpx -> 워드(한글)-005706-고준수.hml
2025-10-23 16:32:23,952 - INFO - 변환 성공: 워드(한글)-005724-고은찬.hwpx -> 워드(한글)-005724-고은찬.hml
2025-10-23 16:32:24,399 - INFO - 변환 성공: 워드(한글)-005725-현주하.hwpx -> 워드(한글)-005725-현주하.hml
2025-10-23 16:32:24,934 - INFO - 변환 성공: 워드(한글)-005726-문지혜.hwpx -> 워드(한글)-005726-문지혜.hml
2025-10-23 16:32:25,473 - INFO - 변환 성공: 워드(한글)-005727-장우진.hwpx -> 워드(한글)-005727-장우진.hml
2025-10-23 16:32:26,018 - INFO - 변환 성공: 워드(한글)-005728-송재우.hwpx -> 워드(한글)-005728-송재우.hml
2025-10-23 16:32:26,625 - INFO - 변환 성공: 워드(한글)-005729-강지안.hwpx -> 워드(한글)-005729-강지안.hml
2025-10-23 16:32:27,096 - INFO - 변환 성공: 워드(한글)-005730-김보연.hwpx -> 워드(한글)-005730-김보연.hml
2025-10-23 16:32:27,274 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_2\A\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\A\DIW
2025-10-23 16:32:27,775 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_2\B\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\B\DIW
2025-10-23 16:32:29,088 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_2\B\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\B\DIW
2025-10-23 16:32:29,589 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_2\C\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\C\DIW
2025-10-23 16:32:30,881 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_2\C\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\C\DIW
2025-10-23 16:32:31,382 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_2\D\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\D\DIW
2025-10-23 16:32:32,704 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_2\D\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\D\DIW
2025-10-23 16:32:33,205 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_2\E\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\E\DIW
2025-10-23 16:32:34,443 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_2\E\DIW -> D:\project\HWP\HWP-Scoring\output\2510_2\E\DIW
2025-10-23 16:32:34,944 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_4\A\DIW -> D:\project\HWP\HWP-Scoring\output\2510_4\A\DIW
2025-10-23 16:32:38,564 - INFO - 변환 성공: 워드(한글)-005812-이재민.hwpx -> 워드(한글)-005812-이재민.hml
2025-10-23 16:32:39,208 - INFO - 변환 성공: 워드(한글)-005813-허미린.hwpx -> 워드(한글)-005813-허미린.hml
2025-10-23 16:32:39,846 - INFO - 변환 성공: 워드(한글)-005822-이채은.hwpx -> 워드(한글)-005822-이채은.hml
2025-10-23 16:32:40,421 - INFO - 변환 성공: 워드(한글)-005824-박승찬.hwpx -> 워드(한글)-005824-박승찬.hml
2025-10-23 16:32:40,968 - INFO - 변환 성공: 워드(한글)-005825-김진환.hwpx -> 워드(한글)-005825-김진환.hml
2025-10-23 16:32:41,558 - INFO - 변환 성공: 워드(한글)-005826-왕예온.hwpx -> 워드(한글)-005826-왕예온.hml
2025-10-23 16:32:42,163 - INFO - 변환 성공: 워드(한글)-005827-최민희.hwpx -> 워드(한글)-005827-최민희.hml
2025-10-23 16:32:42,804 - INFO - 변환 성공: 워드(한글)-005828-김나영.hwpx -> 워드(한글)-005828-김나영.hml
2025-10-23 16:32:43,395 - INFO - 변환 성공: 워드(한글)-005829-김소은.hwpx -> 워드(한글)-005829-김소은.hml
2025-10-23 16:32:43,970 - INFO - 변환 성공: 워드(한글)-005830-한우빈.hwpx -> 워드(한글)-005830-한우빈.hml
2025-10-23 16:32:44,288 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_4\A\DIW -> D:\project\HWP\HWP-Scoring\output\2510_4\A\DIW
2025-10-23 16:32:44,789 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_4\B\DIW -> D:\project\HWP\HWP-Scoring\output\2510_4\B\DIW
2025-10-23 16:32:48,578 - INFO - 변환 성공: 워드(한글)-005814-문지윤.hwpx -> 워드(한글)-005814-문지윤.hml
2025-10-23 16:32:49,230 - INFO - 변환 성공: 워드(한글)-005815-김재민.hwpx -> 워드(한글)-005815-김재민.hml
2025-10-23 16:32:49,838 - INFO - 변환 성공: 워드(한글)-005816-김태후.hwpx -> 워드(한글)-005816-김태후.hml
2025-10-23 16:32:50,420 - INFO - 변환 성공: 워드(한글)-005817-위서현.hwpx -> 워드(한글)-005817-위서현.hml
2025-10-23 16:32:51,006 - INFO - 변환 성공: 워드(한글)-005818-엄태훈.hwpx -> 워드(한글)-005818-엄태훈.hml
2025-10-23 16:32:51,607 - INFO - 변환 성공: 워드(한글)-005819-임하영.hwpx -> 워드(한글)-005819-임하영.hml
2025-10-23 16:32:52,174 - INFO - 변환 성공: 워드(한글)-005820-김가은.hwpx -> 워드(한글)-005820-김가은.hml
2025-10-23 16:32:52,731 - INFO - 변환 성공: 워드(한글)-005821-엄수현.hwpx -> 워드(한글)-005821-엄수현.hml
2025-10-23 16:32:53,336 - INFO - 변환 성공: 워드(한글)-005823-김광근.hwpx -> 워드(한글)-005823-김광근.hml
2025-10-23 16:32:53,913 - INFO - 변환 성공: 워드(한글)-005831-정윤주.hwpx -> 워드(한글)-005831-정윤주.hml
2025-10-23 16:32:54,197 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_4\B\DIW -> D:\project\HWP\HWP-Scoring\output\2510_4\B\DIW
2025-10-23 16:32:54,699 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_4\C\DIW -> D:\project\HWP\HWP-Scoring\output\2510_4\C\DIW
2025-10-23 16:32:55,990 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_4\C\DIW -> D:\project\HWP\HWP-Scoring\output\2510_4\C\DIW
2025-10-23 16:32:56,491 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_4\D\DIW -> D:\project\HWP\HWP-Scoring\output\2510_4\D\DIW
2025-10-23 16:32:57,723 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_4\D\DIW -> D:\project\HWP\HWP-Scoring\output\2510_4\D\DIW
2025-10-23 16:32:58,223 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510_4\E\DIW -> D:\project\HWP\HWP-Scoring\output\2510_4\E\DIW
2025-10-23 16:32:59,465 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510_4\E\DIW -> D:\project\HWP\HWP-Scoring\output\2510_4\E\DIW
2025-10-28 16:54:07,536 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510\A\DIW -> D:\project\HWP\HWP-Scoring\output\2510\A\DIW
2025-10-28 16:54:13,942 - INFO - 변환 성공: DIW_2510A.hwpx -> DIW_2510A.hml
2025-10-28 16:54:14,487 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510\A\DIW -> D:\project\HWP\HWP-Scoring\output\2510\A\DIW
2025-10-28 16:54:14,992 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510\B\DIW -> D:\project\HWP\HWP-Scoring\output\2510\B\DIW
2025-10-28 16:54:17,554 - INFO - 변환 성공: DIW_2510B.hwpx -> DIW_2510B.hml
2025-10-28 16:54:18,061 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510\B\DIW -> D:\project\HWP\HWP-Scoring\output\2510\B\DIW
2025-10-28 16:54:18,562 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510\C\DIW -> D:\project\HWP\HWP-Scoring\output\2510\C\DIW
2025-10-28 16:54:21,289 - INFO - 변환 성공: DIW_2510C.hwpx -> DIW_2510C.hml
2025-10-28 16:54:21,678 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510\C\DIW -> D:\project\HWP\HWP-Scoring\output\2510\C\DIW
2025-10-28 16:54:22,180 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510\D\DIW -> D:\project\HWP\HWP-Scoring\output\2510\D\DIW
2025-10-28 16:54:23,558 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510\D\DIW -> D:\project\HWP\HWP-Scoring\output\2510\D\DIW
2025-10-28 16:54:24,059 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2510\E\DIW -> D:\project\HWP\HWP-Scoring\output\2510\E\DIW
2025-10-28 16:54:25,467 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2510\E\DIW -> D:\project\HWP\HWP-Scoring\output\2510\E\DIW

View File

@@ -1 +1 @@
[{"kind":2,"language":"xpath","value":"//a:t[text()='클라우드 보안투자']/ancestor::a:r//a:ea/@typeface"},{"kind":2,"language":"xpath","value":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕'"},{"kind":2,"language":"xpath","value":"//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG']"},{"kind":2,"language":"xpath","value":".//RECTANGLE//TEXT/@CharShape"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[text()='http://www.ihd.or.kr']]"},{"kind":2,"language":"xpath","value":"//HEADER//P"},{"kind":2,"language":"xpath","value":"//P[.//FIELDBEGIN[@Type='Hyperlink'] and .//CHAR[contains(., 'http')]]"},{"kind":2,"language":"xpath","value":"//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true')]/@HorzOffset"},{"kind":2,"language":"xpath","value":"//CHAR[contains(string(.), '※')]/descendant-or-self::text()"},{"kind":2,"language":"xpath","value":"//P[@ParaShape=\"17\"]/TEXT[@CharShape='7']//CHAR[string(.)]"},{"kind":2,"language":"xpath","value":"//CHAR[contains(string(.), '기타')]/text()"}]
[{"kind":2,"language":"xpath","value":"//a:t[text()='클라우드 보안투자']/ancestor::a:r//a:ea/@typeface"},{"kind":2,"language":"xpath","value":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕'"},{"kind":2,"language":"xpath","value":"//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG' or @Format='JPEG']"},{"kind":2,"language":"xpath","value":"//c:valAx[c:axPos/@val='l']/c:txPr//a:ea/@typeface"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[text()='http://www.ihd.or.kr']]"},{"kind":2,"language":"xpath","value":"//HEADER//P"},{"kind":2,"language":"xpath","value":"//P[.//FIELDBEGIN[@Type='Hyperlink'] and .//CHAR[contains(., 'http')]]"},{"kind":2,"language":"xpath","value":"//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true')]/@HorzOffset"},{"kind":2,"language":"xpath","value":"//CHAR[contains(string(.), '※')]/descendant-or-self::text()"},{"kind":2,"language":"xpath","value":"//P[@ParaShape=\"17\"]/TEXT[@CharShape='7']//CHAR[string(.)]"},{"kind":2,"language":"xpath","value":"//CHAR[contains(string(.), '기타')]/text()"}]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,839 +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": "48,117,196",
"points": 2,
"category": "Color",
"item": "문구 (한국평생교육학회학술포럼)/② 채우기 : 색상(RGB:48,117,196)"
},
"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": "248,190,122",
"points": 2,
"category": "Color",
"item": "한/③ 면색 : 색상(RGB:248,190,122)"
},
"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": "UNDERLINE",
"points": 2,
"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": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조)/① ITALIC"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (한국평생교육학회 홈페이지(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": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 07. 26.",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/① 크기 (1300)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 07. 26.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)"
},
"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": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "굴림체",
"points": 1,
"category": "FontName",
"item": "문구 (DIAT)/① 글꼴 (굴림체)"
},
"26": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "LatinCapital",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"desc": "정답에 맞는 값 value에 입력"
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomRight",
"points": 2,
"category": "PageNumber",
"item": "오른쪽 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight"
}
},
"30": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "200",
"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//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "평생교육시대",
"value": "65",
"points": 2,
"category": "mmSize",
"item": "문구 (평생교육시대)/① 크기-너비 (65 mm)"
},
"5": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "평생교육시대",
"value": "12",
"points": 2,
"category": "mmSize",
"item": "문구 (평생교육시대)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE",
"searchValue": "평생교육시대",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "LineShape",
"item": "문구 (평생교육시대)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio",
"searchValue": "평생교육시대",
"value": "20",
"points": 2,
"category": "OneAnswer",
"item": "문구 (평생교육시대)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "평생교육시대",
"value": "224,122,146",
"points": 2,
"category": "Color",
"item": "문구 (평생교육시대)/⑤ 채우기 : 색상(RGB:224,122,146)"
},
"9": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "평생교육시대",
"value": "true",
"points": 1,
"category": "OneAnswer",
"item": "문구 (평생교육시대)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "평생교육시대",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (평생교육시대)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "평생교육시대",
"value": "휴먼옛체",
"points": 1,
"category": "FontName",
"item": "문구 (평생교육시대)/⑧ 글씨체 (휴먼옛체)"
},
"12": {
"path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "평생교육시대",
"value": "2000",
"points": 1,
"category": "OneAnswer",
"item": "문구 (평생교육시대)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "평생교육시대",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (평생교육시대)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@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. 평생교육이란?)/② 크기 (12pt)"
},
"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": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Development')])",
"ignoreWord": "Development",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Development/영단어 미입력, 대소문자/오타 시 전체 감점",
"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(), ' ', ''),'21과목')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…총 21종목이다…)>'종' → '과' 글자바꿈"
},
"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": "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": "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",
"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,843 +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": "53,149,164",
"points": 2,
"category": "Color",
"item": "문구 (슬기로운미디어생활특강안내)/② 채우기 : 색상(RGB:53,149,164)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "슬기로운미디어생활특강안내",
"value": "110",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (슬기로운미디어생활특강안내)/③ 크기-너비 (110mm)"
},
"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": 2,
"category": "FontAttribute",
"item": "문구 (동영상 콘텐츠의 현재와 미래)/① ITALIC"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "동영상 콘텐츠의 현재와 미래",
"value": "UNDERLINE",
"points": 2,
"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": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 07. 26.",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/① 크기 (1300)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 07. 26.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)"
},
"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": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구 (DIAT)/① 글꼴 (중고딕)"
},
"26": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "RomanCapital",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"desc": "정답에 맞는 값 value에 입력"
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomLeft",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"왼쪽 아래": "BottomLeft",
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight"
}
},
"30": {
"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//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "방송 콘텐츠",
"value": "60",
"points": 2,
"category": "mmSize",
"item": "문구 (방송 콘텐츠)/① 크기-너비 (60 mm)"
},
"5": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "방송 콘텐츠",
"value": "12",
"points": 2,
"category": "mmSize",
"item": "문구 (방송 콘텐츠)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE",
"searchValue": "방송 콘텐츠",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "LineShape",
"item": "문구 (방송 콘텐츠)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio",
"searchValue": "방송 콘텐츠",
"value": "20",
"points": 2,
"category": "OneAnswer",
"item": "문구 (방송 콘텐츠)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "방송 콘텐츠",
"value": "227,220,193",
"points": 2,
"category": "Color",
"item": "문구 (방송 콘텐츠)/⑤ 채우기 : 색상(RGB:227,220,193)"
},
"9": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "방송 콘텐츠",
"value": "true",
"points": 1,
"category": "OneAnswer",
"item": "문구 (방송 콘텐츠)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "방송 콘텐츠",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (방송 콘텐츠)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "방송 콘텐츠",
"value": "견고딕",
"points": 1,
"category": "FontName",
"item": "문구 (방송 콘텐츠)/⑧ 글씨체 (견고딕)"
},
"12": {
"path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "방송 콘텐츠",
"value": "2000",
"points": 1,
"category": "OneAnswer",
"item": "문구 (방송 콘텐츠)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "방송 콘텐츠",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (방송 콘텐츠)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림B.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@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. 최근 콘텐츠 동향)/② 크기 (12pt)"
},
"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",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Streaming')])",
"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}')]) 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:majorGridlines",
"value": true,
"points": 2,
"category": "majorGridlines",
"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",
"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,844 +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": "233,106,147",
"points": 2,
"category": "Color",
"item": "문구 (물절약포스터대회)/② 채우기 : 색상(RGB:233,106,147)"
},
"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": "242,144,240",
"points": 2,
"category": "Color",
"item": "물/③ 면색 : 색상(RGB:242,144,240)"
},
"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년 8월 16일(토) 10시 ~ 16시",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 8월 16일(토) 10시 ~ 16시)/① ITALIC"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 8월 16일(토) 10시 ~ 16시",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 8월 16일(토) 10시 ~ 16시)/② 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": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 07. 26.",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/① 크기 (1300)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 07. 26.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)"
},
"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": "2400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (코리아워터협회)/② 크기 (2400)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "코리아워터협회",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (코리아워터협회)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "궁서",
"points": 1,
"category": "FontName",
"item": "문구 (DIAT)/① 글꼴 (궁서)"
},
"26": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "DecagonCircleHanja",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"甲,乙,丙": "DecagonCircleHanja",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"+,++,+++": "UserChar",
"desc": "정답에 맞는 값 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//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "댐의 종류",
"value": "45",
"points": 2,
"category": "mmSize",
"item": "문구 (댐의 종류)/① 크기-너비 (45 mm)"
},
"5": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "댐의 종류",
"value": "12",
"points": 2,
"category": "mmSize",
"item": "문구 (댐의 종류)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE",
"searchValue": "댐의 종류",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "LineShape",
"item": "문구 (댐의 종류)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio",
"searchValue": "댐의 종류",
"value": "50",
"points": 2,
"category": "OneAnswer",
"item": "문구 (댐의 종류)/④ 글상자 모서리 (직각)",
"desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "댐의 종류",
"value": "249,207,27",
"points": 2,
"category": "Color",
"item": "문구 (댐의 종류)/⑤ 채우기 : 색상(RGB:249,207,27)"
},
"9": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "댐의 종류",
"value": "true",
"points": 1,
"category": "OneAnswer",
"item": "문구 (댐의 종류)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "댐의 종류",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (댐의 종류)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "댐의 종류",
"value": "맑은 고딕",
"points": 1,
"category": "FontName",
"item": "문구 (댐의 종류)/⑧ 글씨체 (맑은 고딕)"
},
"12": {
"path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "댐의 종류",
"value": "1800",
"points": 1,
"category": "OneAnswer",
"item": "문구 (댐의 종류)/⑨ 글씨크기 (1800)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "댐의 종류",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (댐의 종류)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림C.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@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. 댐의 기원)/② 크기 (12pt)"
},
"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",
"㉮,㉯,㉰": "CircledHangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Landslide')])",
"ignoreWord": "Landslide",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Landslide/영단어 미입력, 대소문자/오타 시 전체 감점",
"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": "179,197,243",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:179,197,243)"
},
"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": "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",
"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,844 +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": "49,95,151",
"points": 2,
"category": "Color",
"item": "문구 (여름방학특집해양스포츠체험교실)/② 채우기 : 색상(RGB:49,95,151)"
},
"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": "249,230,188",
"points": 2,
"category": "Color",
"item": "여/③ 면색 : 색상(RGB:249,230,188)"
},
"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": "UNDERLINE",
"points": 2,
"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": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (해양소년단 연맹 홈페이지(http://www.ihd.or.kr))/① ITALIC"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "해양소년단 연맹 홈페이지(http://www.ihd.or.kr)",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (해양소년단 연맹 홈페이지(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": 10,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 07. 26.",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/① 크기 (1400)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 07. 26.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)"
},
"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": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "문구 (DIAT)/① 글꼴 (굴림)"
},
"26": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "CircledDigit",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (①,②,③ 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"甲,乙,丙": "DecagonCircleHanja",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"+,++,+++": "UserChar",
"desc": "정답에 맞는 값 value에 입력"
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomRight",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight",
"왼쪽 아래": "BottomLeft"
}
},
"30": {
"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//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "해양 스포츠의 세계",
"value": "60",
"points": 2,
"category": "mmSize",
"item": "문구 (해양 스포츠의 세계)/① 크기-너비 (60 mm)"
},
"5": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "해양 스포츠의 세계",
"value": "12",
"points": 2,
"category": "mmSize",
"item": "문구 (해양 스포츠의 세계)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE",
"searchValue": "해양 스포츠의 세계",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "LineShape",
"item": "문구 (해양 스포츠의 세계)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio",
"searchValue": "해양 스포츠의 세계",
"value": "20",
"points": 2,
"category": "OneAnswer",
"item": "문구 (해양 스포츠의 세계)/④ 글상자 모서리 (직각)",
"desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "해양 스포츠의 세계",
"value": "248,231,130",
"points": 2,
"category": "Color",
"item": "문구 (해양 스포츠의 세계)/⑤ 채우기 : 색상(RGB:248,231,130)"
},
"9": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "해양 스포츠의 세계",
"value": "true",
"points": 1,
"category": "OneAnswer",
"item": "문구 (해양 스포츠의 세계)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "해양 스포츠의 세계",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (해양 스포츠의 세계)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "해양 스포츠의 세계",
"value": "궁서",
"points": 1,
"category": "FontName",
"item": "문구 (해양 스포츠의 세계)/⑧ 글씨체 (궁서)"
},
"12": {
"path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "해양 스포츠의 세계",
"value": "1800",
"points": 1,
"category": "OneAnswer",
"item": "문구 (해양 스포츠의 세계)/⑨ 글씨크기 (1800)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "해양 스포츠의 세계",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (해양 스포츠의 세계)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림D.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "85",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (85 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@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. 국립해양박물관)/② 크기 (12pt)"
},
"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": "CircledHangulSyllable",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"㉮,㉯,㉰": "CircledHangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Display')])",
"ignoreWord": "Display",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Display/영단어 미입력, 대소문자/오타 시 전체 감점",
"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": "233,162,149",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:233,162,149)"
},
"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": "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",
"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,843 +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": "48,117,196",
"points": 2,
"category": "Color",
"item": "문구 (한국평생교육학회학술포럼)/② 채우기 : 색상(RGB:48,117,196)"
},
"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": "248,190,122",
"points": 2,
"category": "Color",
"item": "한/③ 면색 : 색상(RGB:248,190,122)"
},
"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": "UNDERLINE",
"points": 2,
"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": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조)/① ITALIC"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (한국평생교육학회 홈페이지(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": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 07. 26.",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/① 크기 (1300)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 07. 26.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)"
},
"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": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "굴림체",
"points": 1,
"category": "FontName",
"item": "문구 (DIAT)/① 글꼴 (굴림체)"
},
"26": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "LatinCapital",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"desc": "정답에 맞는 값 value에 입력"
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomRight",
"points": 2,
"category": "PageNumber",
"item": "오른쪽 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"왼쪽 아래": "BottomLeft",
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight"
}
},
"30": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "200",
"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//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "평생교육시대",
"value": "65",
"points": 2,
"category": "mmSize",
"item": "문구 (평생교육시대)/① 크기-너비 (65 mm)"
},
"5": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "평생교육시대",
"value": "12",
"points": 2,
"category": "mmSize",
"item": "문구 (평생교육시대)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE",
"searchValue": "평생교육시대",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "LineShape",
"item": "문구 (평생교육시대)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio",
"searchValue": "평생교육시대",
"value": "20",
"points": 2,
"category": "OneAnswer",
"item": "문구 (평생교육시대)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "평생교육시대",
"value": "224,122,146",
"points": 2,
"category": "Color",
"item": "문구 (평생교육시대)/⑤ 채우기 : 색상(RGB:224,122,146)"
},
"9": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "평생교육시대",
"value": "true",
"points": 1,
"category": "OneAnswer",
"item": "문구 (평생교육시대)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "평생교육시대",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (평생교육시대)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "평생교육시대",
"value": "휴먼옛체",
"points": 1,
"category": "FontName",
"item": "문구 (평생교육시대)/⑧ 글씨체 (휴먼옛체)"
},
"12": {
"path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "평생교육시대",
"value": "2000",
"points": 1,
"category": "OneAnswer",
"item": "문구 (평생교육시대)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "평생교육시대",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (평생교육시대)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@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. 평생교육이란?)/② 크기 (12pt)"
},
"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": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Development')])",
"ignoreWord": "Development",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Development/영단어 미입력, 대소문자/오타 시 전체 감점",
"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(), ' ', ''),'21과목')])",
"value": true,
"points": 3,
"category": "Boolean",
"item": "문구 (…총 21종목이다…)>'종' → '과' 글자바꿈"
},
"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": "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": "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",
"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,843 +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": "53,149,164",
"points": 2,
"category": "Color",
"item": "문구 (슬기로운미디어생활특강안내)/② 채우기 : 색상(RGB:53,149,164)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "슬기로운미디어생활특강안내",
"value": "110",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (슬기로운미디어생활특강안내)/③ 크기-너비 (110mm)"
},
"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": 2,
"category": "FontAttribute",
"item": "문구 (동영상 콘텐츠의 현재와 미래)/① ITALIC"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "동영상 콘텐츠의 현재와 미래",
"value": "UNDERLINE",
"points": 2,
"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": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 07. 26.",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/① 크기 (1300)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 07. 26.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)"
},
"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": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "중고딕",
"points": 1,
"category": "FontName",
"item": "문구 (DIAT)/① 글꼴 (중고딕)"
},
"26": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "RomanCapital",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"甲,乙,丙": "DecagonCircleHanja",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"+,++,+++": "UserChar",
"desc": "정답에 맞는 값 value에 입력"
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomLeft",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight",
"왼쪽 아래": "BottomLeft"
}
},
"30": {
"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//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "방송 콘텐츠",
"value": "60",
"points": 2,
"category": "mmSize",
"item": "문구 (방송 콘텐츠)/① 크기-너비 (60 mm)"
},
"5": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "방송 콘텐츠",
"value": "12",
"points": 2,
"category": "mmSize",
"item": "문구 (방송 콘텐츠)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE",
"searchValue": "방송 콘텐츠",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "LineShape",
"item": "문구 (방송 콘텐츠)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio",
"searchValue": "방송 콘텐츠",
"value": "20",
"points": 2,
"category": "OneAnswer",
"item": "문구 (방송 콘텐츠)/④ 글상자 모서리 (직각)",
"desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "방송 콘텐츠",
"value": "227,220,193",
"points": 2,
"category": "Color",
"item": "문구 (방송 콘텐츠)/⑤ 채우기 : 색상(RGB:227,220,193)"
},
"9": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "방송 콘텐츠",
"value": "true",
"points": 1,
"category": "OneAnswer",
"item": "문구 (방송 콘텐츠)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "방송 콘텐츠",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (방송 콘텐츠)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "방송 콘텐츠",
"value": "견고딕",
"points": 1,
"category": "FontName",
"item": "문구 (방송 콘텐츠)/⑧ 글씨체 (견고딕)"
},
"12": {
"path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "방송 콘텐츠",
"value": "2000",
"points": 1,
"category": "OneAnswer",
"item": "문구 (방송 콘텐츠)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "방송 콘텐츠",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (방송 콘텐츠)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림B.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@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. 최근 콘텐츠 동향)/② 크기 (12pt)"
},
"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",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Streaming')])",
"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}')]) 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": "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",
"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,844 +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": "233,106,147",
"points": 2,
"category": "Color",
"item": "문구 (물절약포스터대회)/② 채우기 : 색상(RGB:233,106,147)"
},
"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": "242,144,240",
"points": 2,
"category": "Color",
"item": "물/③ 면색 : 색상(RGB:242,144,240)"
},
"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년 8월 16일(토) 10시 ~ 16시",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 8월 16일(토) 10시 ~ 16시)/① ITALIC"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 8월 16일(토) 10시 ~ 16시",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 8월 16일(토) 10시 ~ 16시)/② 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": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 07. 26.",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/① 크기 (1300)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 07. 26.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)"
},
"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": "2400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (코리아워터협회)/② 크기 (2400)"
},
"24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "코리아워터협회",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (코리아워터협회)/③ 정렬 (가운데 정렬)"
},
"25": {
"path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "궁서",
"points": 1,
"category": "FontName",
"item": "문구 (DIAT)/① 글꼴 (궁서)"
},
"26": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "DecagonCircleHanja",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"甲,乙,丙": "DecagonCircleHanja",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"+,++,+++": "UserChar",
"desc": "정답에 맞는 값 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//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "댐의 종류",
"value": "45",
"points": 2,
"category": "mmSize",
"item": "문구 (댐의 종류)/① 크기-너비 (45 mm)"
},
"5": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "댐의 종류",
"value": "12",
"points": 2,
"category": "mmSize",
"item": "문구 (댐의 종류)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE",
"searchValue": "댐의 종류",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "LineShape",
"item": "문구 (댐의 종류)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio",
"searchValue": "댐의 종류",
"value": "50",
"points": 2,
"category": "OneAnswer",
"item": "문구 (댐의 종류)/④ 글상자 모서리 (직각)",
"desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "댐의 종류",
"value": "249,207,27",
"points": 2,
"category": "Color",
"item": "문구 (댐의 종류)/⑤ 채우기 : 색상(RGB:249,207,27)"
},
"9": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "댐의 종류",
"value": "true",
"points": 1,
"category": "OneAnswer",
"item": "문구 (댐의 종류)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "댐의 종류",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (댐의 종류)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "댐의 종류",
"value": "맑은 고딕",
"points": 1,
"category": "FontName",
"item": "문구 (댐의 종류)/⑧ 글씨체 (맑은 고딕)"
},
"12": {
"path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "댐의 종류",
"value": "1800",
"points": 1,
"category": "OneAnswer",
"item": "문구 (댐의 종류)/⑨ 글씨크기 (1800)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "댐의 종류",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (댐의 종류)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림C.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@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. 댐의 기원)/② 크기 (12pt)"
},
"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",
"㉮,㉯,㉰": "CircledHangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Landslide')])",
"ignoreWord": "Landslide",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Landslide/영단어 미입력, 대소문자/오타 시 전체 감점",
"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": "179,197,243",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:179,197,243)"
},
"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": "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",
"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,844 +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": "49,95,151",
"points": 2,
"category": "Color",
"item": "문구 (여름방학특집해양스포츠체험교실)/② 채우기 : 색상(RGB:49,95,151)"
},
"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": "249,230,188",
"points": 2,
"category": "Color",
"item": "여/③ 면색 : 색상(RGB:249,230,188)"
},
"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": "UNDERLINE",
"points": 2,
"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": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (해양소년단 연맹 홈페이지(http://www.ihd.or.kr))/① ITALIC"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "해양소년단 연맹 홈페이지(http://www.ihd.or.kr)",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (해양소년단 연맹 홈페이지(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": 10,
"Indent": 12
},
"points": 2,
"category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 07. 26.",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/① 크기 (1400)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 07. 26.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)"
},
"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": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "굴림",
"points": 1,
"category": "FontName",
"item": "문구 (DIAT)/① 글꼴 (굴림)"
},
"26": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "CircledDigit",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (①,②,③ 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"甲,乙,丙": "DecagonCircleHanja",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"+,++,+++": "UserChar",
"desc": "정답에 맞는 값 value에 입력"
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomRight",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight",
"왼쪽 아래": "BottomLeft"
}
},
"30": {
"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//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "해양 스포츠의 세계",
"value": "60",
"points": 2,
"category": "mmSize",
"item": "문구 (해양 스포츠의 세계)/① 크기-너비 (60 mm)"
},
"5": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "해양 스포츠의 세계",
"value": "12",
"points": 2,
"category": "mmSize",
"item": "문구 (해양 스포츠의 세계)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE",
"searchValue": "해양 스포츠의 세계",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "LineShape",
"item": "문구 (해양 스포츠의 세계)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio",
"searchValue": "해양 스포츠의 세계",
"value": "20",
"points": 2,
"category": "OneAnswer",
"item": "문구 (해양 스포츠의 세계)/④ 글상자 모서리 (직각)",
"desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "해양 스포츠의 세계",
"value": "248,231,130",
"points": 2,
"category": "Color",
"item": "문구 (해양 스포츠의 세계)/⑤ 채우기 : 색상(RGB:248,231,130)"
},
"9": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "해양 스포츠의 세계",
"value": "true",
"points": 1,
"category": "OneAnswer",
"item": "문구 (해양 스포츠의 세계)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "해양 스포츠의 세계",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (해양 스포츠의 세계)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "해양 스포츠의 세계",
"value": "궁서",
"points": 1,
"category": "FontName",
"item": "문구 (해양 스포츠의 세계)/⑧ 글씨체 (궁서)"
},
"12": {
"path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "해양 스포츠의 세계",
"value": "1800",
"points": 1,
"category": "OneAnswer",
"item": "문구 (해양 스포츠의 세계)/⑨ 글씨크기 (1800)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "해양 스포츠의 세계",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (해양 스포츠의 세계)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림D.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "85",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (85 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@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. 국립해양박물관)/② 크기 (12pt)"
},
"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": "CircledHangulSyllable",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"㉮,㉯,㉰": "CircledHangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Display')])",
"ignoreWord": "Display",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Display/영단어 미입력, 대소문자/오타 시 전체 감점",
"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": "233,162,149",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:233,162,149)"
},
"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": "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",
"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,830 +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": "199,58,82",
"points": 2,
"category": "Color",
"item": "문구 (노인일자리참여자모집)/② 채우기 : 색상(RGB:199,58,82)"
},
"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": "137,221,202",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:137,221,202)"
},
"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": "UNDERLINE",
"points": 2,
"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": "2025. 08. 23",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 08. 23)/① 크기 (1300)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 08. 23",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 08. 23)/② 정렬 (가운데 정렬)"
},
"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": "2400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (시니어클럽)/② 크기 (2400)"
},
"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",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"desc": "정답에 맞는 값 value에 입력"
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomCenter",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight"
}
},
"30": {
"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": "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": "211,251,193",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (노인일자리)/⑤ 채우기 : 색상(RGB:211,251,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": "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']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "85",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (85 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@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": "CircledDigit",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Improvement')])",
"ignoreWord": "Improvement",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Improvement/영단어 미입력, 대소문자/오타 시 전체 감점",
"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": "233,215,77",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:233,215,77)"
},
"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": "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",
"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"
}
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1,831 +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": "230,47,199",
"points": 2,
"category": "Color",
"item": "문구 (강원도지역문화체험안내)/② 채우기 : 색상(RGB:230,47,199)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "강원도지역문화체험안내",
"value": "125",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (강원도지역문화체험안내)/③ 크기-너비 (125 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": "231,215,17",
"points": 2,
"category": "Color",
"item": "자/③ 면색 : 색상(RGB:231,215,17)"
},
"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": "강원도 춘천시 중앙문화지역센터 및 인근 공원",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (강원도 춘천시 중앙문화지역센터 및 인근 공원)/① ITALIC"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "강원도 춘천시 중앙문화지역센터 및 인근 공원",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (강원도 춘천시 중앙문화지역센터 및 인근 공원)/② 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": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 8. 23.",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 8. 23.)/① 크기 (1400)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 8. 23.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 8. 23.)/② 정렬 (가운데 정렬)"
},
"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": "Digit",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"desc": "정답에 맞는 값 value에 입력"
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomCenter",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight"
}
},
"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": "68",
"points": 2,
"category": "Rectangle.mmSize",
"item": "문구 (매력적인 강원도)/① 크기-너비 (68 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": "130,159,32",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (매력적인 강원도)/⑤ 채우기 : 색상(RGB:130,159,32)"
},
"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": "2300",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (매력적인 강원도)/⑨ 글씨크기 (2300)",
"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']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림D.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "85",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (85 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@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. 지역적 특성)/② 크기 (12pt)"
},
"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": "Digit",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"1),2),3)": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Tourism')])",
"ignoreWord": "Tourism",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Tourism/영단어 미입력, 대소문자/오타 시 전체 감점",
"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": "87,215,182",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:87,215,182)"
},
"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": "블록 계산식/AVG",
"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",
"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,830 +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": "199,58,82",
"points": 2,
"category": "Color",
"item": "문구 (노인일자리참여자모집)/② 채우기 : 색상(RGB:199,58,82)"
},
"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": "137,221,202",
"points": 2,
"category": "Color",
"item": "어/③ 면색 : 색상(RGB:137,221,202)"
},
"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": "UNDERLINE",
"points": 2,
"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": "2025. 08. 23",
"value": "1300",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 08. 23)/① 크기 (1300)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 08. 23",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 08. 23)/② 정렬 (가운데 정렬)"
},
"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": "2400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (시니어클럽)/② 크기 (2400)"
},
"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",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"desc": "정답에 맞는 값 value에 입력"
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomCenter",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight"
}
},
"30": {
"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": "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": "211,251,193",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (노인일자리)/⑤ 채우기 : 색상(RGB:211,251,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": "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']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "85",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (85 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@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": "CircledDigit",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Improvement')])",
"ignoreWord": "Improvement",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Improvement/영단어 미입력, 대소문자/오타 시 전체 감점",
"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": "233,215,77",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:233,215,77)"
},
"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": "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",
"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,830 +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": "183,29,167",
"points": 2,
"category": "Color",
"item": "문구 (치아건강특별강연회)/② 채우기 : 색상(RGB:183,29,167)"
},
"3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "치아건강특별강연회",
"value": "125",
"tolerance": 1,
"points": 2,
"category": "mmSize",
"item": "문구 (치아건강특별강연회)/③ 크기-너비 (125 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": "149,180,174",
"points": 2,
"category": "Color",
"item": "현/③ 면색 : 색상(RGB:149,180,174)"
},
"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": "경복궁역 8번 출구 도보 5분",
"value": "ITALIC",
"points": 1,
"category": "FontAttribute",
"item": "문구 (경복궁역 8번 출구 도보 5분)/① ITALIC"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "경복궁역 8번 출구 도보 5분",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (경복궁역 8번 출구 도보 5분)/② 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": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 8. 23.",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 8. 23.)/① 크기 (1400)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 8. 23.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 8. 23.)/② 정렬 (가운데 정렬)"
},
"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": "2400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (밝은미소구강센터)/② 크기 (2400)"
},
"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",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"desc": "정답에 맞는 값 value에 입력"
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomRight",
"points": 2,
"category": "PageNumber",
"item": "오른쪽 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight"
}
},
"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": "20",
"points": 2,
"category": "Rectangle.OneAnswer",
"item": "문구 (구강건강관리)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE//WINDOWBRUSH/@FaceColor",
"value": "187,140,209",
"points": 2,
"category": "Rectangle.Color",
"item": "문구 (구강건강관리)/⑤ 채우기 : 색상(RGB:187,140,209)"
},
"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": "2300",
"points": 1,
"category": "Rectangle.FontSize",
"item": "문구 (구강건강관리)/⑨ 글씨크기 (2300)",
"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']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림C.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG' or @Format='JPEG']/@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. 구강건강관리)/② 크기 (12pt)"
},
"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": "DecagonCircle",
"points": 2,
"category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양",
"desc": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Fluoride')])",
"ignoreWord": "Fluoride",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Fluoride/영단어 미입력, 대소문자/오타 시 전체 감점",
"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": "문구 (…칫솔질은 창아와 잇몸 경계에 45도…)>'창' → '치' 글자바꿈"
},
"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": "210,191,27",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:210,191,27)"
},
"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": "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",
"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,87 +0,0 @@
# GIT branch
## 📌 장기간 개발용 브랜치 전략
### 1. 메인(main) 브랜치
* 항상 **안정된 코드**
* 실제 서비스/라이브에서 사용하는 코드
* 여기서는 직접 실험하지 않음
### 2. 기능(feature) 브랜치
* 장기간 개발할 기능을 위한 브랜치
* 예시: `feature/new-parser`, `feature/ui-redesign`
---
## 📌 워크플로우
### 1. 기능 브랜치 생성
```bash
git checkout main
git pull origin main # 최신화
git checkout -b feature/new-parser
```
### 2. 기능 개발 (여러 번 커밋)
```bash
# 코드 수정
git add .
git commit -m "초기 버전: XML 파서 구조 추가"
```
* 계속 개발하면서 커밋 누적
* 필요하면 `git push origin feature/new-parser` 해서 원격에도 올려두기 (백업용)
### 3. 장기간 개발 중 main 따라가기 (동기화)
* main 브랜치가 바뀌면, 기능 브랜치로 가져와야 충돌 줄임
```bash
git checkout main
git pull origin main
git checkout feature/new-parser
git merge main # main의 최신 내용 병합
```
⚡ 이 과정을 정기적으로 하면 `feature` 브랜치가 main과 멀어지지 않음
### 4. 기능 완료 → main에 병합
```bash
git checkout main
git pull origin main
git merge feature/new-parser
git push origin main
```
### 5. 필요 시 브랜치 삭제
```bash
git branch -d feature/new-parser
git push origin --delete feature/new-parser
```
---
## 📌 네이밍 규칙 (혼자 관리할 때도 편리)
* `feature/기능명` : 장기간 개발용 (예: `feature/new-ui`)
* `fix/버그명` : 버그 수정용 (예: `fix/xml-encoding`)
* `test/실험명` : 단기 테스트용 (예: `test/xpath`)
---
✅ 정리
* **main = 안정 코드**
* **feature 브랜치 = 장기간 개발용** (필요할 때 main과 동기화)
* 완료되면 main에 병합 → 안정화
* 이렇게 하면 실험/개발/운영 코드가 깔끔하게 분리됨
---
👉 기능 브랜치 개발 중에, **main 브랜치 변경분을 가져올 때** `merge` 방식이 편할까요, 아니면 `rebase` 로 깔끔하게 이력을 유지하는 게 좋을까요?

View File

@@ -1,840 +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": "UNDERLINE",
"points": 2,
"category": "FontAttribute",
"item": "문구 (전국적으로 사랑받는 지역 특산물)/① UNDERLINE"
},
"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년 09월 20일(토) 13:30 ~ 17:30",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 09월 20일(토) 13:30 ~ 17:30)/① BOLD"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 09월 20일(토) 13:30 ~ 17:30",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 09월 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": "문구 (※ 신청안내… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 08. 27.",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 08. 27.)/① 크기 (1400)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 08. 27.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 08. 27.)/② 정렬 (가운데 정렬)"
},
"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": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "돋움체",
"points": 1,
"category": "FontName",
"item": "문구 (DIAT)/① 글꼴 (돋움체)"
},
"26": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "HangulSyllable",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"desc": "정답에 맞는 값 value에 입력"
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomCenter",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight"
}
},
"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//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "아름다운 계절, 가을",
"value": "65",
"points": 2,
"category": "mmSize",
"item": "문구 (아름다운 계절, 가을)/① 크기-너비 (65 mm)"
},
"5": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "아름다운 계절, 가을",
"value": "12",
"points": 2,
"category": "mmSize",
"item": "문구 (아름다운 계절, 가을)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE",
"searchValue": "아름다운 계절, 가을",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "LineShape",
"item": "문구 (아름다운 계절, 가을)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio",
"searchValue": "아름다운 계절, 가을",
"value": "50",
"points": 2,
"category": "OneAnswer",
"item": "문구 (아름다운 계절, 가을)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "아름다운 계절, 가을",
"value": "249,173,168",
"points": 2,
"category": "Color",
"item": "문구 (아름다운 계절, 가을)/⑤ 채우기 : 색상(RGB:249,173,168)"
},
"9": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "아름다운 계절, 가을",
"value": "true",
"points": 1,
"category": "OneAnswer",
"item": "문구 (아름다운 계절, 가을)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "아름다운 계절, 가을",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (아름다운 계절, 가을)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "아름다운 계절, 가을",
"value": "굴림체",
"points": 1,
"category": "FontName",
"item": "문구 (아름다운 계절, 가을)/⑧ 글씨체 (굴림체)"
},
"12": {
"path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "아름다운 계절, 가을",
"value": "1700",
"points": 1,
"category": "OneAnswer",
"item": "문구 (아름다운 계절, 가을)/⑨ 글씨크기 (1700)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "아름다운 계절, 가을",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (아름다운 계절, 가을)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@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. 가을이란?)/② 크기 (12pt)"
},
"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",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Economy')])",
"ignoreWord": "Economy",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Economy/영단어 미입력, 대소문자/오타 시 전체 감점",
"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": "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": "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": "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,840 +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": "UNDERLINE",
"points": 2,
"category": "FontAttribute",
"item": "문구 (전국적으로 사랑받는 지역 특산물)/① UNDERLINE"
},
"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년 09월 20일(토) 13:30 ~ 17:30",
"value": "BOLD",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 09월 20일(토) 13:30 ~ 17:30)/① BOLD"
},
"18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "2025년 09월 20일(토) 13:30 ~ 17:30",
"value": "UNDERLINE",
"points": 1,
"category": "FontAttribute",
"item": "문구 (2025년 09월 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": "문구 (※ 신청안내… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
},
"20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 08. 27.",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 08. 27.)/① 크기 (1400)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 08. 27.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 08. 27.)/② 정렬 (가운데 정렬)"
},
"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": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT",
"value": "돋움체",
"points": 1,
"category": "FontName",
"item": "문구 (DIAT)/① 글꼴 (돋움체)"
},
"26": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/② 크기 (9pt)"
},
"27": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 1,
"category": "OneAnswer",
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
},
"28": {
"path": "//PAGENUM/@FormatType",
"value": "HangulSyllable",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": {
"가,나,다": "HangulSyllable",
"1,2,3": "Digit",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"desc": "정답에 맞는 값 value에 입력"
},
"desc2": "1, 2페이지 모두 정답이어야 점수 부여"
},
"29": {
"path": "//PAGENUM/@Pos",
"value": "BottomCenter",
"points": 2,
"category": "PageNumber",
"item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": {
"가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight"
}
},
"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//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "아름다운 계절, 가을",
"value": "65",
"points": 2,
"category": "mmSize",
"item": "문구 (아름다운 계절, 가을)/① 크기-너비 (65 mm)"
},
"5": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "아름다운 계절, 가을",
"value": "12",
"points": 2,
"category": "mmSize",
"item": "문구 (아름다운 계절, 가을)/② 크기-높이 (12 mm)"
},
"6": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE",
"searchValue": "아름다운 계절, 가을",
"value": {
"Style": "DoubleSlim",
"Width": "283"
},
"points": 2,
"category": "LineShape",
"item": "문구 (아름다운 계절, 가을)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력"
},
"7": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio",
"searchValue": "아름다운 계절, 가을",
"value": "50",
"points": 2,
"category": "OneAnswer",
"item": "문구 (아름다운 계절, 가을)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20"
},
"8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "아름다운 계절, 가을",
"value": "249,173,168",
"points": 2,
"category": "Color",
"item": "문구 (아름다운 계절, 가을)/⑤ 채우기 : 색상(RGB:249,173,168)"
},
"9": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "아름다운 계절, 가을",
"value": "true",
"points": 1,
"category": "OneAnswer",
"item": "문구 (아름다운 계절, 가을)/⑥ 글상자 위치 (글자처럼 취급)"
},
"10": {
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "아름다운 계절, 가을",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (아름다운 계절, 가을)/⑦ 글상자 정렬 (가운데 정렬)"
},
"11": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "아름다운 계절, 가을",
"value": "굴림체",
"points": 1,
"category": "FontName",
"item": "문구 (아름다운 계절, 가을)/⑧ 글씨체 (굴림체)"
},
"12": {
"path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "아름다운 계절, 가을",
"value": "1700",
"points": 1,
"category": "OneAnswer",
"item": "문구 (아름다운 계절, 가을)/⑨ 글씨크기 (1700)",
"desc": "1pt당 100"
},
"13": {
"path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "아름다운 계절, 가을",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (아름다운 계절, 가을)/⑩ 정렬 (가운데 정렬)"
},
"14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']",
"value": true,
"points": 2,
"category": "Boolean",
"item": "① 파일명 \"그림A.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
},
"15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "② 크기-너비 (80 mm)"
},
"16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
"value": "40",
"points": 2,
"category": "mmSize",
"item": "③ 크기-높이 (40 mm)"
},
"17": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@HorzOffset",
"value": "0",
"points": 2,
"category": "mmSize",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@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. 가을이란?)/② 크기 (12pt)"
},
"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",
"갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital",
"a,b,c": "LatinSmall",
"①,②,③": "CircledDigit",
"一,二,三": "Ideograph",
"㉠,㉡,㉢": "CircledHangulJamo",
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Economy')])",
"ignoreWord": "Economy",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Economy/영단어 미입력, 대소문자/오타 시 전체 감점",
"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": "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": "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": "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