2507회 채점기준표 작성 / [2-46] 문항 "차트 줄/칸전환여부" 로직추가

This commit is contained in:
2025-07-29 18:00:04 +09:00
parent b8b233e50a
commit 65c5f348e4
37 changed files with 2420 additions and 1493 deletions

4
.bashrc.local Normal file
View File

@@ -0,0 +1,4 @@
# 프로젝트 루트 폴더/.bashrc.local
if [ -f .venv/Scripts/activate ]; then
source .venv/Scripts/activate
fi

2
.gitignore vendored
View File

@@ -3,3 +3,5 @@ output/
input/ input/
~$*.xlsx ~$*.xlsx
.venv/

3
.vscode/launch.json vendored
View File

@@ -10,7 +10,8 @@
"type": "debugpy", "type": "debugpy",
"request": "launch", "request": "launch",
"program": "${file}", "program": "${file}",
"console": "integratedTerminal" "console": "integratedTerminal",
"cwd": "${fileDirname}"
} }
] ]
} }

12
.vscode/settings.json vendored
View File

@@ -1,12 +0,0 @@
{
"cSpell.words": [
"BINITEM",
"charshape",
"chartxml",
"currect",
"FIELDBEGIN",
"FIELDEND",
"targ",
"TEXTART"
]
}

View File

@@ -1,6 +1,5 @@
import win32com.client as win32 import win32com.client as win32
import os import os
import time
constants = win32.constants constants = win32.constants

View File

@@ -40,8 +40,8 @@ def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, t
# 사용법 # 사용법
# exam_round = "2504_2" # exam_round = "2504_2"
exam_round = "2506" exam_round = "2507"
source_directory = r"C:\Users\dra\project\data\제2506회 정기\답안파일\2506회 디지털정보활용능력 답안파일" source_directory = r"D:\project\HWP\HWP-Scoring\회차별채점자료\2507\hwp_정답"
target_directory_a = f".\\input\\{exam_round}\\A" # '1교시'의 타겟 경로 target_directory_a = f".\\input\\{exam_round}\\A" # '1교시'의 타겟 경로
target_directory_b = f".\\input\\{exam_round}\\B" # '2교시'의 타겟 경로 target_directory_b = f".\\input\\{exam_round}\\B" # '2교시'의 타겟 경로

View File

@@ -24,7 +24,6 @@ import os
import logging import logging
import shutil import shutil
from pathlib import Path from pathlib import Path
from pywinauto import Application
from itertools import chain from itertools import chain
import time import time
@@ -166,18 +165,18 @@ if __name__ == "__main__":
exam_rounds = [ exam_rounds = [
# "2506_3", # "2506_3",
"2506" "2507"
] ]
# 변환할 폴더 경로 설정 # 변환할 폴더 경로 설정
# 배열 동시에 변환하면 에러발생 -> 하나씩 변환 -> time.sleep(0.5) 추가 # 배열 동시에 변환하면 에러발생 -> 하나씩 변환 -> time.sleep(0.5) 추가
for exam_round in exam_rounds: for exam_round in exam_rounds:
folders = [ folders = [
(f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\A\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\A\\DIW"), (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\A\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\A\\DIW"),
(f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\B\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\B\\DIW"), (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\B\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\B\\DIW"),
(f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\C\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\C\\DIW"), (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\C\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\C\\DIW"),
(f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\D\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\D\\DIW"), (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\D\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\D\\DIW"),
(f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\E\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\E\\DIW"), (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\E\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\E\\DIW"),
] ]
# folders = [ # folders = [

BIN
250714_DIW_2506C_TEST.xlsx Normal file

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

@@ -1,852 +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": "100",
"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": "문구 (한국골프박람회)/④ 크기-높이 (20mm)"
},
"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": "236,162,142",
"points": 2,
"category": "Color",
"item": "지/③ 면색 : 색상(RGB:236,162,142)"
},
"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(text(),'{char1}')]",
"path2": "//CHAR[contains(text(),'{char2}')]",
"path3": "//CHAR[contains(text(),'{char3}')]",
"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(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "행사안내",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"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": "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": 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. 06. 30.",
"value": "1400",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 06. 30.)/① 크기 (14pt)",
"desc": "1pt당 100"
},
"21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 06. 30.",
"value": "Center",
"points": 1,
"category": "OneAnswer",
"item": "문구 (2025. 06. 30.)/② 정렬 (가운데 정렬)"
},
"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": "RomanCapital",
"points": 2,
"category": "PageNumber",
"item": "① 쪽 번호 매기기 (A,B,C 순으로)",
"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",
"정답에 맞는 값 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": "50",
"points": 2,
"category": "mmSize",
"item": "문구 (골프)/① 크기-너비 (50 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": "147,194,80",
"points": 2,
"category": "Color",
"item": "문구 (골프)/⑤ 채우기 : 색상(RGB:147,194,80)"
},
"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": "2200",
"points": 1,
"category": "OneAnswer",
"item": "문구 (골프)/⑨ 글씨크기 (2200)",
"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\" 삽입"
},
"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. 한국의 골프 역사)/② 크기 (12pt)"
},
"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": "LatinSmall",
"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",
"정답에 맞는 값 value에 입력": ""
}
},
"29": {
"path": "boolean(//CHAR[contains(text(),'Fairway')])",
"ignoreWord": "Fairway",
"value": true,
"points": 3,
"category": "Boolean",
"item": "Fairway/영단어 미입력, 대소문자/오타 시 전체 감점",
"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": "제목 문구 (골프 관련 체육시설업 현황)/② 크기 (12pt)"
},
"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,61",
"points": 2,
"category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:233,174,61)"
},
"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": "글자모양/② 크기 (10pt)"
},
"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": "OneAnswer",
"item": "② 값 축 주 눈금선",
"desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
},
"47": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Width",
"value": "80",
"points": 2,
"category": "mmSize",
"item": "③ 크기-너비 (80 mm)"
},
"48": {
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]//SIZE/@Height",
"value": "90",
"points": 2,
"category": "mmSize",
"item": "④ 크기-높이 (90 mm)"
},
"49": {
"chart_xpath": "boolean(//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계' or text()='평균']))",
"value": true,
"points": 2,
"category": "Boolean",
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)",
"desc": "차트가 존재하고 블록계산식(합계, 평균) 데이터가 없는 경우 정답 처리"
},
"50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "골프 관련 체육시설업 현황",
"value": "궁서체",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (골프 관련 체육시설업 현황)/① 글씨체 (궁서체)"
},
"51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "골프 관련 체육시설업 현황",
"value": "1200",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (골프 관련 체육시설업 현황)/② 크기 (1200)"
},
"52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b",
"searchValue": "골프 관련 체육시설업 현황",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "제목 문구 (골프 관련 체육시설업 현황)/③ 진하게",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/① 글꼴 (돋움)"
},
"54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/② 크기 (9pt)"
},
"55": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "X축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (돋움)"
},
"57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/② 크기 (9pt)"
},
"58": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "ChartOneAnswer",
"item": "Y축/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
},
"59": {
"chart_xpath": "//c:legend//a:ea/@typeface",
"value": "돋움",
"points": 1,
"category": "OneAnswer",
"item": "범례/① 글꼴 (돋움)"
},
"60": {
"chart_xpath": "//c:legend//a:defRPr/@sz",
"value": "900",
"points": 1,
"category": "OneAnswer",
"item": "범례/② 크기 (9pt)"
},
"61": {
"chart_xpath": "//c:legend//a:defRPr/@{option}",
"option": "i",
"value": "1",
"points": 1,
"category": "OneAnswer",
"item": "범례/③ 기울임",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}
}
}

839
DIW_2507A.json Normal file
View File

@@ -0,0 +1,839 @@
{
"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

@@ -46,65 +46,65 @@
"1": { "1": {
"1": { "1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "동물등록제시행안내", "searchValue": "슬기로운미디어생활특강안내",
"value": "맑은고딕", "value": "휴먼옛체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (동물등록제시행안내)/① 글씨체 (맑은고딕)" "item": "문구 (슬기로운미디어생활특강안내)/① 글씨체 (휴먼옛체)"
}, },
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "동물등록제시행안내", "searchValue": "슬기로운미디어생활특강안내",
"value": "233,174,43", "value": "53,149,164",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (동물등록제시행안내)/② 채우기 : 색상(RGB:233,174,43)" "item": "문구 (슬기로운미디어생활특강안내)/② 채우기 : 색상(RGB:53,149,164)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "동물등록제시행안내", "searchValue": "슬기로운미디어생활특강안내",
"value": "110", "value": "110",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (동물등록제시행안내)/③ 크기-너비 (110mm)" "item": "문구 (슬기로운미디어생활특강안내)/③ 크기-너비 (110mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "동물등록제시행안내", "searchValue": "슬기로운미디어생활특강안내",
"value": "20", "value": "20",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (동물등록제시행안내)/④ 크기-높이 (20 mm)" "item": "문구 (슬기로운미디어생활특강안내)/④ 크기-높이 (20 mm)"
}, },
"5": { "5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "동물등록제시행안내", "searchValue": "슬기로운미디어생활특강안내",
"value": "true", "value": "true",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (동물등록제시행안내)/⑤ 위치 (글자처럼 취급)" "item": "문구 (슬기로운미디어생활특강안내)/⑤ 위치 (글자처럼 취급)"
}, },
"6": { "6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "동물등록제시행안내", "searchValue": "슬기로운미디어생활특강안내",
"value": "Center", "value": "Center",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (동물등록제시행안내)/⑥ 정렬 (가운데 정렬)" "item": "문구 (슬기로운미디어생활특강안내)/⑥ 정렬 (가운데 정렬)"
}, },
"7": { "7": {
"path": "//TEXTART[@Text='{searchValue}']", "path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "동물등록제시행안내", "searchValue": "슬기로운미디어생활특강안내",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (동물등록제시행안내)/⑦ 글맵시모양 (육안확인)" "item": "문구 (슬기로운미디어생활특강안내)/⑦ 글맵시모양 (육안확인)"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "", "searchValue": "",
"value": { "value": {
"Height": 2800, "Height": 2800,
"Width": 2800 "Width": 2800
@@ -112,94 +112,94 @@
"tolerance": 200, "tolerance": 200,
"points": 1, "points": 1,
"category": "TwoLineSize", "category": "TwoLineSize",
"item": "/① 모양 (2줄)" "item": "/① 모양 (2줄)"
}, },
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "", "searchValue": "",
"value": "돋움체", "value": "맑은고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "/② 글씨체 (돋움체)" "item": "/② 글씨체 (맑은고딕)"
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "", "searchValue": "",
"value": "144,210,66", "value": "172,235,62",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "/③ 면색 : 색상(RGB:144,210,66)" "item": "/③ 면색 : 색상(RGB:172,235,62)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "", "searchValue": "",
"value": "3.0", "value": "3.0",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "/④ 본문과의 간격 : 3.0mm" "item": "/④ 본문과의 간격 : 3.0mm"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "동물병원이나 펫샵, 동물등록대행업체에서", "searchValue": "동영상 콘텐츠의 현재와 미래",
"value": "BOLD", "value": "ITALIC",
"points": 2, "points": 2,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (동물병원이나 펫샵, 동물등록대행업체에서)/① BOLD" "item": "문구 (동영상 콘텐츠의 현재와 미래)/① ITALIC"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "동물병원이나 펫샵, 동물등록대행업체에서", "searchValue": "동영상 콘텐츠의 현재와 미래",
"value": "UNDERLINE", "value": "UNDERLINE",
"points": 2, "points": 2,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (동물병원이나 펫샵, 동물등록대행업체에서)/② UNDERLINE" "item": "문구 (동영상 콘텐츠의 현재와 미래)/② UNDERLINE"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "", "char1": "",
"char2": "", "char2": "",
"char3": "※", "char3": "※",
"value": 3, "value": 3,
"points": 3, "points": 3,
"category": "SpecialChar", "category": "SpecialChar",
"item": "① , ② , ③ ※" "item": "① , ② , ③ ※"
}, },
"15": { "15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "사안내", "searchValue": "사안내",
"value": "돋움", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (★ 사업안내 )/① 글씨체 (돋움)" "item": "문구 (◎ 행사안내 )/① 글씨체 (궁서)"
}, },
"16": { "16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "사안내", "match_str": "사안내",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Align", "category": "Align",
"item": "문구 (★ 사업안내 )/② 정렬 (가운데 정렬)" "item": "문구 (◎ 행사안내 )/② 정렬 (가운데 정렬)"
}, },
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "1마리당 3만원, 세대당 최대 1회 지원", "searchValue": "중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (1마리당 3만원, 세대당 최대 1회 지원)/① BOLD" "item": "문구 (중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활)/① BOLD"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "1마리당 3만원, 세대당 최대 1회 지원", "searchValue": "중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활",
"value": "ITALIC", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (1마리당 3만원, 세대당 최대 1회 지원)/② ITALIC" "item": "문구 (중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활)/② ITALIC"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
@@ -210,57 +210,57 @@
}, },
"points": 2, "points": 2,
"category": "ParaShape", "category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)", "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 06. 28.", "searchValue": "2025. 07. 26.",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 06. 28.)/① 크기 (1300)", "item": "문구 (2025. 07. 26.)/① 크기 (1300)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 06. 28.", "searchValue": "2025. 07. 26.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 06. 28.)/② 정렬 (가운데 정렬)" "item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "세종시반려동물과", "searchValue": "중랑미디어센터",
"value": "궁서", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (세종시반려동물과)/① 글씨체 (궁서)" "item": "문구 (중랑미디어센터)/① 글씨체 (굴림)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "세종시반려동물과", "searchValue": "중랑미디어센터",
"value": "2400", "value": "2300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (세종시반려동물과)/② 크기 (2400)" "item": "문구 (중랑미디어센터)/② 크기 (2300)"
}, },
"24": { "24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "세종시반려동물과", "searchValue": "중랑미디어센터",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (세종시반려동물과)/③ 정렬 (가운데 정렬)" "item": "문구 (중랑미디어센터)/③ 정렬 (가운데 정렬)"
}, },
"25": { "25": {
"path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT", "searchValue": "DIAT",
"value": "굴림", "value": "중고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (DIAT)/① 글꼴 (굴림)" "item": "문구 (DIAT)/① 글꼴 (중고딕)"
}, },
"26": { "26": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
@@ -280,7 +280,7 @@
}, },
"28": { "28": {
"path": "//PAGENUM/@FormatType", "path": "//PAGENUM/@FormatType",
"value": "HangulSyllable", "value": "RomanCapital",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)", "item": "① 쪽 번호 매기기 (가,나,다 순으로)",
@@ -296,29 +296,32 @@
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall", "ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall", "i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital", "I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"desc": "정답에 맞는 값 value에 입력" "desc": "정답에 맞는 값 value에 입력"
}, },
"desc2": "1, 2페이지 모두 정답이어야 점수 부여" "desc2": "1, 2페이지 모두 정답이어야 점수 부여"
}, },
"29": { "29": {
"path": "//PAGENUM/@Pos", "path": "//PAGENUM/@Pos",
"value": "BottomCenter", "value": "BottomLeft",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "가운데 아래", "item": "가운데 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여", "desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": { "desc2": {
"왼쪽 아래": "BottomLeft",
"가운데 아래": "BottomCenter", "가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight" "오른쪽 아래": "BottomRight"
} }
}, },
"30": { "30": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "200", "value": "190",
"first_word": "", "first_word": "",
"points": 2, "points": 2,
"category": "LineSpacing", "category": "LineSpacing",
"item": "문제 1 줄간격 200% 설정", "item": "문제 1 줄간격 190% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다." "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
} }
}, },
@@ -351,89 +354,89 @@
}, },
"4": { "4": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "동물등록제", "searchValue": "방송 콘텐츠",
"value": "60", "value": "60",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (동물등록제)/① 크기-너비 (60 mm)" "item": "문구 (방송 콘텐츠)/① 크기-너비 (60 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "동물등록제", "searchValue": "방송 콘텐츠",
"value": "12", "value": "12",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (동물등록제)/② 크기-높이 (12 mm)" "item": "문구 (방송 콘텐츠)/② 크기-높이 (12 mm)"
}, },
"6": { "6": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE",
"searchValue": "동물등록제", "searchValue": "방송 콘텐츠",
"value": { "value": {
"Style": "DoubleSlim", "Style": "DoubleSlim",
"Width": "283" "Width": "283"
}, },
"points": 2, "points": 2,
"category": "LineShape", "category": "LineShape",
"item": "문구 (동물등록제)/③ 테두리 : 이중 실선(1.00mm)", "item": "문구 (방송 콘텐츠)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력" "desc": "1mm = 283pt value['Width']에 pt값 입력"
}, },
"7": { "7": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio",
"searchValue": "동물등록제", "searchValue": "방송 콘텐츠",
"value": "20", "value": "20",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (동물등록제)/④ 글상자 모서리 (반원)", "item": "문구 (방송 콘텐츠)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20" "desc": "모서리 비율 반원:50 / 둥근모양:20"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "동물등록제", "searchValue": "방송 콘텐츠",
"value": "244,86,167", "value": "227,220,193",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (동물등록제)/⑤ 채우기 : 색상(RGB:244,86,167)" "item": "문구 (방송 콘텐츠)/⑤ 채우기 : 색상(RGB:227,220,193)"
}, },
"9": { "9": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "동물등록제", "searchValue": "방송 콘텐츠",
"value": "true", "value": "true",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (동물등록제)/⑥ 글상자 위치 (글자처럼 취급)" "item": "문구 (방송 콘텐츠)/⑥ 글상자 위치 (글자처럼 취급)"
}, },
"10": { "10": {
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "동물등록제", "searchValue": "방송 콘텐츠",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (동물등록제)/⑦ 글상자 정렬 (가운데 정렬)" "item": "문구 (방송 콘텐츠)/⑦ 글상자 정렬 (가운데 정렬)"
}, },
"11": { "11": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "동물등록제", "searchValue": "방송 콘텐츠",
"value": "휴먼옛체", "value": "견고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (동물등록제)/⑧ 글씨체 (휴먼옛체)" "item": "문구 (방송 콘텐츠)/⑧ 글씨체 (견고딕)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "동물등록제", "searchValue": "방송 콘텐츠",
"value": "2000", "value": "2000",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (동물등록제)/⑨ 글씨크기 (2000)", "item": "문구 (방송 콘텐츠)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"13": { "13": {
"path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "동물등록제", "searchValue": "방송 콘텐츠",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (동물등록제)/⑩ 정렬 (가운데 정렬)" "item": "문구 (방송 콘텐츠)/⑩ 정렬 (가운데 정렬)"
}, },
"14": { "14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']", "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']",
@@ -466,88 +469,88 @@
}, },
"18": { "18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "22", "value": "24",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)" "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)"
}, },
"19": { "19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 제도의 필요성", "searchValue": "1. 최근 콘텐츠 동향",
"value": "중고딕", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구① (1. 제도의 필요성)/① 글씨체 (중고딕)" "item": "문구① (1. 최근 콘텐츠 동향)/① 글씨체 (돋움)"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 제도의 필요성", "searchValue": "1. 최근 콘텐츠 동향",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구① (1. 제도의 필요성)/② 크기 (12pt)" "item": "문구① (1. 최근 콘텐츠 동향)/② 크기 (12pt)"
}, },
"21": { "21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 제도의 필요성", "searchValue": "1. 최근 콘텐츠 동향",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구① (1. 제도의 필요성)/③ 진하게" "item": "문구① (1. 최근 콘텐츠 동향)/③ 진하게"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 동물등록현황", "searchValue": "2. OTT 서비스의 미래",
"value": "중고딕", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구② (2. 동물등록현황)/① 글씨체 (중고딕)" "item": "문구② (2. OTT 서비스의 미래)/① 글씨체 (돋움)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 동물등록현황", "searchValue": "2. OTT 서비스의 미래",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구② (2. 동물등록현황)/② 크기 (1200)" "item": "문구② (2. OTT 서비스의 미래)/② 크기 (1200)"
}, },
"24": { "24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 동물등록현황", "searchValue": "2. OTT 서비스의 미래",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구② (2. 동물등록현황)/③ 진하게" "item": "문구② (2. OTT 서비스의 미래)/③ 진하게"
}, },
"25": { "25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "유기동물", "option": "코로나",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (유기동물)/① 각주 설정 및 문구 입력" "item": "문구 (코로나)/① 각주 설정 및 문구 입력"
}, },
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "사람과 함께 집에서 더불어 살아가는 동물", "searchValue": "새로운 유형의 변종 코로나바이러스에 의해 발병한 급성 호흡기 전염병",
"value": "궁서", "value": "중고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (유기동물)/② 글씨체 (궁서)" "item": "문구 (코로나)/② 글씨체 (중고딕)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "사람과 함께 집에서 더불어 살아가는 동물", "searchValue": "새로운 유형의 변종 코로나바이러스에 의해 발병한 급성 호흡기 전염병",
"value": "900", "value": "900",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (유기동물)/③ 크기 (9pt)" "item": "문구 (코로나)/③ 크기 (9pt)"
}, },
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "사람과 함께 집에서 더불어 살아가는 동물", "searchValue": "새로운 유형의 변종 코로나바이러스에 의해 발병한 급성 호흡기 전염병",
"value": "DecagonCircleHanja", "value": "DecagonCircle",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
@@ -564,85 +567,86 @@
"i,ii,iii": "RomanSmall", "i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital", "I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja", "甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": "" "정답에 맞는 값 value에 입력": ""
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Petshop')])", "path": "boolean(//CHAR[contains(text(),'Streaming')])",
"ignoreWord": "Petshop", "ignoreWord": "Streaming",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Petshop/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Streaming/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [ "word": [
["방지", "防止"], ["시청", "視聽"],
["제도", "制度"], ["송출", "送出"],
["정보", "情報"], ["취향", "趣向"],
["부여", "附與"], ["성장", "成長"],
["복지", "福祉"] ["근절", "根絶"]
], ],
"value": 10, "value": 10,
"points": 10, "points": 10,
"category": "Hanja", "category": "Hanja",
"item": "① 방지(防止), ② 제도(制度), ③ 정보(情報), ④ 부여(附與), ⑤ 복지(福祉)" "item": "① 시청(視聽), ② 송출(送出), ③ 취향(趣向), ④ 성장(成長), ⑤ 근절(根絶)"
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'생후2개')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'간에원하')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…생후 1개월 이상의 반려견을…)>'1' → '2' 글자바꿈" "item": "문구 (…언제든지 원하는 원하는 시간에 순서로…) > '원하는' / '시간에' 순서바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'동물문제')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'수익구조')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…책임을 명확히 하고 문제를 유기동물 예방하는 데…)>'문제를 / 기동물' 순서바꿈" "item": "문구 (…이익구조가 열악하다.…) > '이' → '수' 글자바꿈"
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "동물등록현황(단위 : 백 건)", "searchValue": "동영상 플랫폼 이용률(%)",
"value": "굴림체", "value": "굴림체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (동물등록현황(단위 : 백 건))/① 글씨체 (굴림체)" "item": "제목 문구 (동영상 플랫폼 이용률(%))/① 글씨체 (굴림체)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "동물등록현황(단위 : 백 건)", "searchValue": "동영상 플랫폼 이용률(%)",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (동물등록현황(단위 : 백 건))/② 크기 (1200)" "item": "제목 문구 (동영상 플랫폼 이용률(%))/② 크기 (1200)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "동물등록현황(단위 : 백 건)", "searchValue": "동영상 플랫폼 이용률(%)",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (동물등록현황(단위 : 백 건))/③ 진하게" "item": "제목 문구 (동영상 플랫폼 이용률(%))/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "동물등록현황(단위 : 백 건)", "searchValue": "동영상 플랫폼 이용률(%)",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (동물등록현황(단위 : 백 건))/④ 정렬 (가운데 정렬)" "item": "제목 문구 (동영상 플랫폼 이용률(%))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "221,162,248", "value": "95,229,218",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:221,162,248)" "item": "위쪽 제목 셀/① 색상(RGB:95,229,218)"
}, },
"38": { "38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -671,11 +675,11 @@
"41": { "41": {
"path": "//TABLE//TEXT/@CharShape", "path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "굴림", "value": "궁서체",
"points": 1, "points": 1,
"category": "TableFontName", "category": "TableFontName",
"category_tmp": "FontName", "category_tmp": "FontName",
"item": "글자모양/① 글씨체 (굴림)", "item": "글자모양/① 글씨체 (궁서체)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
}, },
"42": { "42": {
@@ -711,10 +715,10 @@
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
}, },
"46": { "46": {
"chart_xpath": "//c:valAx/c:majorTickMark/@val", "chart_xpath": "//c:majorGridlines",
"value": "out", "value": true,
"points": 2, "points": 2,
"category": "ChartOneAnswer", "category": "majorGridlines",
"item": "② 값 축 주 눈금선", "item": "② 값 축 주 눈금선",
"desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다" "desc": "chart xml파일에서 답안을 가져오는 문항은 path키값 대신 chart_xpath키값을 이용해 xapth구문을 작성한다"
}, },
@@ -742,36 +746,36 @@
}, },
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "동물등록현황", "searchValue": "동영상 플랫폼 이용률",
"value": "궁서체", "value": "굴림",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (동물등록현황)/① 글씨체 (궁서체)" "item": "제목 문구 (동영상 플랫폼 이용률)/① 글씨체 (굴림)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "동물등록현황", "searchValue": "동영상 플랫폼 이용률",
"value": "1300", "value": "1400",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (동물등록현황)/② 크기 (1300)" "item": "제목 문구 (동영상 플랫폼 이용률)/② 크기 (1400)"
}, },
"52": { "52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b", "option": "b",
"searchValue": "동물등록현황", "searchValue": "동영상 플랫폼 이용률",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (동물등록현황)/③ 진하게", "item": "제목 문구 (동영상 플랫폼 이용률)/③ 진하게",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface",
"value": "굴림", "value": "돋움체",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "X축/① 글꼴 (굴림)" "item": "X축/① 글꼴 (돋움체)"
}, },
"54": { "54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
@@ -791,10 +795,10 @@
}, },
"56": { "56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface",
"value": "굴림", "value": "돋움체",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (굴림)" "item": "Y축/① 글꼴 (돋움체)"
}, },
"57": { "57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
@@ -814,10 +818,10 @@
}, },
"59": { "59": {
"chart_xpath": "//c:legend//a:ea/@typeface", "chart_xpath": "//c:legend//a:ea/@typeface",
"value": "굴림", "value": "돋움체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "범례/① 글꼴 (굴림)" "item": "범례/① 글꼴 (돋움체)"
}, },
"60": { "60": {
"chart_xpath": "//c:legend//a:defRPr/@sz", "chart_xpath": "//c:legend//a:defRPr/@sz",

10
HWP.code-workspace Normal file
View File

@@ -0,0 +1,10 @@
{
"folders": [
{
"path": "."
}
],
"settings": {
"terminal.integrated.cwd": "${workspaceFolder}"
}
}

View File

@@ -1,5 +1,3 @@
import tkinter as tk
from tkinter import filedialog, messagebox
from datetime import datetime from datetime import datetime
import difflib import difflib
import json import json
@@ -373,7 +371,7 @@ class XMLScorer:
# [1-16] ◈ 행사안내 ◈ # [1-16] ◈ 행사안내 ◈
# 특수문자와 글자의 속성이 같고 문서 내부에 '행사안내'와 같은 문자가 있을 경우 # 특수문자와 글자의 속성이 같고 문서 내부에 '행사안내'와 같은 문자가 있을 경우
# 유사도 문제로 의도치 않은 부분의 속성이 채점되는것을 방지하고자 # 유사도 문제로 의도치 않은 다른 부분의 텍스트 속성이 채점되는것을 방지하고자
# 해당 문자를 포함하는 모든 문단의 속성을 판단해 # 해당 문자를 포함하는 모든 문단의 속성을 판단해
# 정렬값이 정답과 일치하는 경우 정답으로 채점 # 정렬값이 정답과 일치하는 경우 정답으로 채점
elif (category or "") == "Align": elif (category or "") == "Align":
@@ -388,6 +386,34 @@ class XMLScorer:
if scoring['points'] > 0: if scoring['points'] > 0:
break break
elif (category or "") == "majorGridlines":
# 줄/칸 전환여부 확인
table_col_count = root.xpath("//SECTION[2]//TABLE/@ColCount")
print("🟡테이블 열 개수: ", int(table_col_count[0]) if table_col_count else 0)
chart_ser_count = chart_tree.xpath("count(//c:ser)", namespaces=namespaces) if chart_xpath else 0
print("🟡차트 데이터 개수: ", int(chart_ser_count) if isinstance(chart_ser_count, (int, float)) else 0)
isXYtransposed = False
if table_col_count and chart_ser_count:
if int(chart_ser_count) >= int(table_col_count[0]):
isXYtransposed = True
# 값 축 주눈금선 존재하는지 여부 확인
items = chart_tree.xpath(chart_xpath, namespaces=namespaces) if chart_xpath else []
for item in items:
# item이 존재하면 True, 없으면 False
user_answer = (item is not None) and isXYtransposed
# 정답과 수험자 답안 비교
self.evaluate_answer(scoring, user_answer, right_answer, points)
if scoring['points'] > 0:
break
# 정답이 하나인 경우 # 정답이 하나인 경우
# elif (category or "") == "OneAnswer": # elif (category or "") == "OneAnswer":
elif (category or "") in ["OneAnswer", "ChartOneAnswer"]: elif (category or "") in ["OneAnswer", "ChartOneAnswer"]:
@@ -732,6 +758,7 @@ class XMLScorer:
linespacing = root.xpath(xpath) linespacing = root.xpath(xpath)
user_answer = linespacing[0] user_answer = linespacing[0]
# print("🟡줄간격: ", user_answer)
if user_answer != right_answer: if user_answer != right_answer:
linespacing_match = False linespacing_match = False
break break
@@ -741,7 +768,7 @@ class XMLScorer:
# 2. 해당 문제의 정답 줄간격 (180% = 28pt / 200% = 30pt ) # 2. 해당 문제의 정답 줄간격 (180% = 28pt / 200% = 30pt )
# 두 경우의 글자 크기가 아니라면 오답처리 # 두 경우의 글자 크기가 아니라면 오답처리
firstword = criterion.get('first_word', None) firstword = criterion.get('first_word', None)
result = root.xpath(f"//CHARSHAPE[@Id=//TEXT[CHAR[text()='{firstword}']]/@CharShape]/@Height") result = root.xpath(f"//CHARSHAPE[@Id=//RECTANGLE//TEXT[CHAR[text()='{firstword}']]/@CharShape]/@Height")
firstword_size = result[0] if result else None firstword_size = result[0] if result else None
if (right_answer == '180' and firstword_size not in ['2600', '2800', None]) or (right_answer == '200' and firstword_size not in ['2600', '3000', None]): if (right_answer == '180' and firstword_size not in ['2600', '2800', None]) or (right_answer == '200' and firstword_size not in ['2600', '3000', None]):
@@ -1244,14 +1271,14 @@ class XMLScorer:
def main(): def main():
# 시험회차 및 유형 # 시험회차 및 유형
exam_round = '2506' exam_round = '2507'
# exam_round = '2506_5' # exam_round = '2506_5'
# 채점하고자 하는 유형은 주석 해제 # 채점하고자 하는 유형은 주석 해제
exam_types = [ exam_types = [
# 'A', # 'A',
# 'B', 'B',
'C', # 'C',
# 'D', # 'D',
] ]

View File

@@ -17197,3 +17197,55 @@
2025-07-04 17:17:19,014 - INFO - 변환 성공: 워드(한글)-006517-최지율.hwpx -> 워드(한글)-006517-최지율.hml 2025-07-04 17:17:19,014 - INFO - 변환 성공: 워드(한글)-006517-최지율.hwpx -> 워드(한글)-006517-최지율.hml
2025-07-04 17:17:19,364 - INFO - 변환 성공: 워드(한글)-006517-최지율2.hwpx -> 워드(한글)-006517-최지율2.hml 2025-07-04 17:17:19,364 - INFO - 변환 성공: 워드(한글)-006517-최지율2.hwpx -> 워드(한글)-006517-최지율2.hml
2025-07-04 17:17:19,713 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2506\C\TEST -> C:\Users\dra\project\HWP\HWP-Scoring\output\2506\C\TEST 2025-07-04 17:17:19,713 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2506\C\TEST -> C:\Users\dra\project\HWP\HWP-Scoring\output\2506\C\TEST
2025-07-28 16:18:21,443 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\A\DIW
2025-07-28 16:18:23,486 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\A\DIW
2025-07-28 16:18:23,987 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\B\DIW
2025-07-28 16:18:25,264 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\B\DIW
2025-07-28 16:18:25,766 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\C\DIW
2025-07-28 16:18:27,029 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\C\DIW
2025-07-28 16:18:27,530 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\D\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\D\DIW
2025-07-28 16:18:28,811 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\D\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\D\DIW
2025-07-28 16:18:29,312 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\E\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\E\DIW
2025-07-28 16:18:30,572 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\E\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\E\DIW
2025-07-28 16:19:32,905 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\A\DIW
2025-07-28 16:19:34,441 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\A\DIW
2025-07-28 16:19:34,942 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\B\DIW
2025-07-28 16:19:36,234 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\B\DIW
2025-07-28 16:19:36,735 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\C\DIW
2025-07-28 16:19:38,033 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\C\DIW
2025-07-28 16:19:38,535 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\D\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\D\DIW
2025-07-28 16:19:39,744 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\D\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\D\DIW
2025-07-28 16:19:40,245 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\E\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\E\DIW
2025-07-28 16:19:41,522 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2507\E\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2507\E\DIW
2025-07-28 16:21:08,794 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\A\DIW -> D:\project\HWP\HWP-Scoring\output\2507\A\DIW
2025-07-28 16:21:12,498 - INFO - 변환 성공: DIW_2507A.hwpx -> DIW_2507A.hml
2025-07-28 16:21:12,935 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\A\DIW -> D:\project\HWP\HWP-Scoring\output\2507\A\DIW
2025-07-28 16:21:13,437 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\B\DIW -> D:\project\HWP\HWP-Scoring\output\2507\B\DIW
2025-07-28 16:26:30,901 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\A\DIW -> D:\project\HWP\HWP-Scoring\output\2507\A\DIW
2025-07-28 16:26:34,375 - INFO - 변환 성공: DIW_2507A.hwpx -> DIW_2507A.hml
2025-07-28 16:26:34,743 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\A\DIW -> D:\project\HWP\HWP-Scoring\output\2507\A\DIW
2025-07-28 16:26:35,244 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\B\DIW -> D:\project\HWP\HWP-Scoring\output\2507\B\DIW
2025-07-28 16:26:37,969 - INFO - 변환 성공: DIW_2507B.hwpx -> DIW_2507B.hml
2025-07-28 16:26:38,382 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\B\DIW -> D:\project\HWP\HWP-Scoring\output\2507\B\DIW
2025-07-28 16:26:38,883 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\C\DIW -> D:\project\HWP\HWP-Scoring\output\2507\C\DIW
2025-07-28 16:26:41,123 - INFO - 변환 성공: DIW_2507C.hwpx -> DIW_2507C.hml
2025-07-28 16:26:41,559 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\C\DIW -> D:\project\HWP\HWP-Scoring\output\2507\C\DIW
2025-07-28 16:26:42,061 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\D\DIW -> D:\project\HWP\HWP-Scoring\output\2507\D\DIW
2025-07-28 16:26:44,684 - INFO - 변환 성공: DIW_2507D.hwpx -> DIW_2507D.hml
2025-07-28 16:26:45,124 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\D\DIW -> D:\project\HWP\HWP-Scoring\output\2507\D\DIW
2025-07-28 16:26:45,625 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\E\DIW -> D:\project\HWP\HWP-Scoring\output\2507\E\DIW
2025-07-28 16:26:46,936 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\E\DIW -> D:\project\HWP\HWP-Scoring\output\2507\E\DIW
2025-07-28 16:33:39,305 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\A\DIW -> D:\project\HWP\HWP-Scoring\output\2507\A\DIW
2025-07-28 16:33:42,528 - INFO - 변환 성공: DIW_2507A.hwpx -> DIW_2507A.hml
2025-07-28 16:33:42,931 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\A\DIW -> D:\project\HWP\HWP-Scoring\output\2507\A\DIW
2025-07-28 16:33:43,431 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\B\DIW -> D:\project\HWP\HWP-Scoring\output\2507\B\DIW
2025-07-28 16:33:46,111 - INFO - 변환 성공: DIW_2507B.hwpx -> DIW_2507B.hml
2025-07-28 16:33:46,580 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\B\DIW -> D:\project\HWP\HWP-Scoring\output\2507\B\DIW
2025-07-28 16:33:47,081 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\C\DIW -> D:\project\HWP\HWP-Scoring\output\2507\C\DIW
2025-07-28 16:33:49,236 - INFO - 변환 성공: DIW_2507C.hwpx -> DIW_2507C.hml
2025-07-28 16:33:49,610 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\C\DIW -> D:\project\HWP\HWP-Scoring\output\2507\C\DIW
2025-07-28 16:33:50,111 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\D\DIW -> D:\project\HWP\HWP-Scoring\output\2507\D\DIW
2025-07-28 16:33:52,179 - INFO - 변환 성공: DIW_2507D.hwpx -> DIW_2507D.hml
2025-07-28 16:33:52,585 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\D\DIW -> D:\project\HWP\HWP-Scoring\output\2507\D\DIW
2025-07-28 16:33:53,087 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2507\E\DIW -> D:\project\HWP\HWP-Scoring\output\2507\E\DIW
2025-07-28 16:33:54,437 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2507\E\DIW -> D:\project\HWP\HWP-Scoring\output\2507\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":"//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":"//PARASHAPE[@Id=//CHAR[contains(text(),'사업안내')]/ancestor::P/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//CHAR[contains(text(),'행사안내')]"},{"kind":2,"language":"xpath","value":"//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format=\"JPG\"]"},{"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":"//SECTION[2]//TABLE/@ColCount"},{"kind":2,"language":"xpath","value":"count(//c:ser) > 2"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//RECTANGLE//TEXT[CHAR[text()='여']]/@CharShape]/@Height"},{"kind":2,"language":"xpath","value":"//c:majorGridlines"},{"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()"}]

View File

@@ -46,65 +46,65 @@
"1": { "1": {
"1": { "1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "생활가전수거캠페인", "searchValue": "한국평생교육학회학술포럼",
"value": "굴림체", "value": "궁서체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (생활가전수거캠페인)/① 글씨체 (굴림체)" "item": "문구 (한국평생교육학회학술포럼)/① 글씨체 (궁서체)"
}, },
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "생활가전수거캠페인", "searchValue": "한국평생교육학회학술포럼",
"value": "209,114,108", "value": "48,117,196",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (생활가전수거캠페인)/② 채우기 : 색상(RGB:209,114,108)" "item": "문구 (한국평생교육학회학술포럼)/② 채우기 : 색상(RGB:48,117,196)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "생활가전수거캠페인", "searchValue": "한국평생교육학회학술포럼",
"value": "110", "value": "130",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (생활가전수거캠페인)/③ 크기-너비 (110 mm)" "item": "문구 (한국평생교육학회학술포럼)/③ 크기-너비 (130 mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "생활가전수거캠페인", "searchValue": "한국평생교육학회학술포럼",
"value": "20", "value": "20",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (생활가전수거캠페인)/④ 크기-높이 (20 mm)" "item": "문구 (한국평생교육학회학술포럼)/④ 크기-높이 (20 mm)"
}, },
"5": { "5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "생활가전수거캠페인", "searchValue": "한국평생교육학회학술포럼",
"value": "true", "value": "true",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (생활가전수거캠페인)/⑤ 위치 (글자처럼 취급)" "item": "문구 (한국평생교육학회학술포럼)/⑤ 위치 (글자처럼 취급)"
}, },
"6": { "6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "생활가전수거캠페인", "searchValue": "한국평생교육학회학술포럼",
"value": "Center", "value": "Center",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (생활가전수거캠페인)/⑥ 정렬 (가운데 정렬)" "item": "문구 (한국평생교육학회학술포럼)/⑥ 정렬 (가운데 정렬)"
}, },
"7": { "7": {
"path": "//TEXTART[@Text='{searchValue}']", "path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "생활가전수거캠페인", "searchValue": "한국평생교육학회학술포럼",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (생활가전수거캠페인)/⑦ 글맵시모양 (육안확인)" "item": "문구 (한국평생교육학회학술포럼)/⑦ 글맵시모양 (육안확인)"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "", "searchValue": "",
"value": { "value": {
"Height": 2800, "Height": 2800,
"Width": 2800 "Width": 2800
@@ -112,94 +112,94 @@
"tolerance": 200, "tolerance": 200,
"points": 1, "points": 1,
"category": "TwoLineSize", "category": "TwoLineSize",
"item": "/① 모양 (2줄)" "item": "/① 모양 (2줄)"
}, },
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "", "searchValue": "",
"value": "중고딕", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "/② 글씨체 (중고딕)" "item": "/② 글씨체 (굴림)"
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "", "searchValue": "",
"value": "230,209,48", "value": "248,190,122",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "/③ 면색 : 색상(RGB:230,209,48)" "item": "/③ 면색 : 색상(RGB:248,190,122)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "", "searchValue": "",
"value": "3.0", "value": "3.0",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "/④ 본문과의 간격 : 3.0mm" "item": "/④ 본문과의 간격 : 3.0mm"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "2025년 7월부터 생활가전수거 캠페인을 시행", "searchValue": "평생교육사 양성 교육과정 현황과 개선 방안 탐색",
"value": "BOLD", "value": "BOLD",
"points": 2, "points": 2,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (2025년 7월부터 생활가전수거 캠페인을 시행)/① BOLD" "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/① BOLD"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "2025년 7월부터 생활가전수거 캠페인을 시행", "searchValue": "평생교육사 양성 교육과정 현황과 개선 방안 탐색",
"value": "UNDERLINE", "value": "UNDERLINE",
"points": 2, "points": 2,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (2025년 7월부터 생활가전수거 캠페인을 시행)/② UNDERLINE" "item": "문구 (평생교육사 양성 교육과정 현황과 개선 방안 탐색)/② UNDERLINE"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "", "char1": "",
"char2": "", "char2": "",
"char3": "※", "char3": "※",
"value": 3, "value": 3,
"points": 3, "points": 3,
"category": "SpecialChar", "category": "SpecialChar",
"item": "① , ② , ③ ※" "item": "① , ② , ③ ※"
}, },
"15": { "15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "홍보안내", "searchValue": "행사안내",
"value": "돋움", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (● 홍보안내 )/① 글씨체 (돋움)" "item": "문구 (◆ 행사안내 )/① 글씨체 (궁서)"
}, },
"16": { "16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "홍보안내", "match_str": "행사안내",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Align", "category": "Align",
"item": "문구 (● 홍보안내 )/② 정렬 (가운데 정렬)" "item": "문구 (◆ 행사안내 )/② 정렬 (가운데 정렬)"
}, },
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "서울시 25개 자치구 및 인근 지역", "searchValue": "한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조",
"value": "BOLD", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (서울시 25개 자치구 및 인근 지역)/① BOLD" "item": "문구 (한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조)/① ITALIC"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "서울시 25개 자치구 및 인근 지역", "searchValue": "한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조",
"value": "ITALIC", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (서울시 25개 자치구 및 인근 지역)/② ITALIC" "item": "문구 (한국평생교육학회 홈페이지(http://www.ihd.or.kr) 참조)/② UNDERLINE"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
@@ -215,52 +215,52 @@
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 06. 28.", "searchValue": "2025. 07. 26.",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 06. 28.)/① 크기 (1300)", "item": "문구 (2025. 07. 26.)/① 크기 (1300)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 06. 28.", "searchValue": "2025. 07. 26.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 06. 28.)/② 정렬 (가운데 정렬)" "item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "한국자원순환센터", "searchValue": "한국평생교육학회",
"value": "궁서", "value": "견고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (한국자원순환센터)/① 글씨체 (궁서)" "item": "문구 (한국평생교육학회)/① 글씨체 (견고딕)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "한국자원순환센터", "searchValue": "한국평생교육학회",
"value": "2400", "value": "2500",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한국자원순환센터)/② 크기 (2400)" "item": "문구 (한국평생교육학회)/② 크기 (2500)"
}, },
"24": { "24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "한국자원순환센터", "searchValue": "한국평생교육학회",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (한국자원순환센터)/③ 정렬 (가운데 정렬)" "item": "문구 (한국평생교육학회)/③ 정렬 (가운데 정렬)"
}, },
"25": { "25": {
"path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT", "searchValue": "DIAT",
"value": "굴림", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (DIAT)/① 글꼴 (굴림)" "item": "문구 (DIAT)/① 글꼴 (굴림)"
}, },
"26": { "26": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
@@ -280,7 +280,7 @@
}, },
"28": { "28": {
"path": "//PAGENUM/@FormatType", "path": "//PAGENUM/@FormatType",
"value": "HangulSyllable", "value": "LatinCapital",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)", "item": "① 쪽 번호 매기기 (가,나,다 순으로)",
@@ -296,26 +296,29 @@
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall", "ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall", "i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital", "I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"desc": "정답에 맞는 값 value에 입력" "desc": "정답에 맞는 값 value에 입력"
}, },
"desc2": "1, 2페이지 모두 정답이어야 점수 부여" "desc2": "1, 2페이지 모두 정답이어야 점수 부여"
}, },
"29": { "29": {
"path": "//PAGENUM/@Pos", "path": "//PAGENUM/@Pos",
"value": "BottomCenter", "value": "BottomRight",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "오른쪽 아래", "item": "오른쪽 아래",
"desc": "1, 2페이지 모두 정답이어야 점수 부여", "desc": "1, 2페이지 모두 정답이어야 점수 부여",
"desc2": { "desc2": {
"왼쪽 아래": "BottomLeft",
"가운데 아래": "BottomCenter", "가운데 아래": "BottomCenter",
"오른쪽 아래": "BottomRight" "오른쪽 아래": "BottomRight"
} }
}, },
"30": { "30": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "180", "value": "200",
"first_word": "", "first_word": "",
"points": 2, "points": 2,
"category": "LineSpacing", "category": "LineSpacing",
"item": "문제 1 줄간격 180% 설정", "item": "문제 1 줄간격 180% 설정",
@@ -351,89 +354,89 @@
}, },
"4": { "4": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "자원순환", "searchValue": "평생교육시대",
"value": "60", "value": "65",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (자원순환)/① 크기-너비 (60 mm)" "item": "문구 (평생교육시대)/① 크기-너비 (65 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "자원순환", "searchValue": "평생교육시대",
"value": "12", "value": "12",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (자원순환)/② 크기-높이 (12 mm)" "item": "문구 (평생교육시대)/② 크기-높이 (12 mm)"
}, },
"6": { "6": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE",
"searchValue": "자원순환", "searchValue": "평생교육시대",
"value": { "value": {
"Style": "DoubleSlim", "Style": "DoubleSlim",
"Width": "283" "Width": "283"
}, },
"points": 2, "points": 2,
"category": "LineShape", "category": "LineShape",
"item": "문구 (자원순환)/③ 테두리 : 이중 실선(1.00mm)", "item": "문구 (평생교육시대)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력" "desc": "1mm = 283pt value['Width']에 pt값 입력"
}, },
"7": { "7": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio",
"searchValue": "자원순환", "searchValue": "평생교육시대",
"value": "50", "value": "20",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (자원순환)/④ 글상자 모서리 (반원)", "item": "문구 (평생교육시대)/④ 글상자 모서리 (반원)",
"desc": "모서리 비율 반원:50 / 둥근모양:20" "desc": "모서리 비율 반원:50 / 둥근모양:20"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "자원순환", "searchValue": "평생교육시대",
"value": "131,194,68", "value": "224,122,146",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (자원순환)/⑤ 채우기 : 색상(RGB:131,194,68)" "item": "문구 (평생교육시대)/⑤ 채우기 : 색상(RGB:224,122,146)"
}, },
"9": { "9": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "자원순환", "searchValue": "평생교육시대",
"value": "true", "value": "true",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (자원순환)/⑥ 글상자 위치 (글자처럼 취급)" "item": "문구 (평생교육시대)/⑥ 글상자 위치 (글자처럼 취급)"
}, },
"10": { "10": {
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "자원순환", "searchValue": "평생교육시대",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (자원순환)/⑦ 글상자 정렬 (가운데 정렬)" "item": "문구 (평생교육시대)/⑦ 글상자 정렬 (가운데 정렬)"
}, },
"11": { "11": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "자원순환", "searchValue": "평생교육시대",
"value": "궁서체", "value": "휴먼옛체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (자원순환)/⑧ 글씨체 (궁서체)" "item": "문구 (평생교육시대)/⑧ 글씨체 (휴먼옛체)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "자원순환", "searchValue": "평생교육시대",
"value": "2000", "value": "2000",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (자원순환)/⑨ 글씨크기 (2000)", "item": "문구 (평생교육시대)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"13": { "13": {
"path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "자원순환", "searchValue": "평생교육시대",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (자원순환)/⑩ 정렬 (가운데 정렬)" "item": "문구 (평생교육시대)/⑩ 정렬 (가운데 정렬)"
}, },
"14": { "14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']", "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']",
@@ -466,88 +469,88 @@
}, },
"18": { "18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "22", "value": "24",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)" "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)"
}, },
"19": { "19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 자원순환의 필요성", "searchValue": "1. 평생교육이란?",
"value": "돋움", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구① (1. 자원순환의 필요성)/① 글씨체 (돋움)" "item": "문구① (1. 평생교육이란?)/① 글씨체 (굴림)"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 자원순환의 필요성", "searchValue": "1. 평생교육이란?",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구① (1. 자원순환의 필요성)/② 크기 (12pt)" "item": "문구① (1. 평생교육이란?)/② 크기 (12pt)"
}, },
"21": { "21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 자원순환의 필요성", "searchValue": "1. 평생교육이란?",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구① (1. 자원순환의 필요성)/③ 진하게" "item": "문구① (1. 평생교육이란?)/③ 진하게"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 자원순환 실천 방법", "searchValue": "2. 평생교육사의 개념",
"value": "돋움", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구② (2. 자원순환 실천 방법)/① 글씨체 (돋움)" "item": "문구② (2. 평생교육사의 개념)/① 글씨체 (굴림)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 자원순환 실천 방법", "searchValue": "2. 평생교육사의 개념",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구② (2. 자원순환 실천 방법)/② 크기 (1200)" "item": "문구② (2. 평생교육사의 개념)/② 크기 (1200)"
}, },
"24": { "24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 자원순환 실천 방법", "searchValue": "2. 평생교육사의 개념",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구② (2. 자원순환 실천 방법)/③ 진하게" "item": "문구② (2. 평생교육사의 개념)/③ 진하게"
}, },
"25": { "25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "온실가스", "option": "유네스코",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (온실가스)/① 각주 설정 및 문구 입력" "item": "문구 (유네스코)/① 각주 설정 및 문구 입력"
}, },
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "땅으로 복사되는 에너지를 흡수하여 온실효과를 내는 기체", "searchValue": "교육, 과학, 문화의 보급 및 교류를 통하여 국가 간의 협력 증진을 목적으로 설립된 국제연합전문기구",
"value": "바탕체", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (온실가스)/② 글씨체 (바탕체)" "item": "문구 (유네스코)/② 글씨체 (궁서)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "땅으로 복사되는 에너지를 흡수하여 온실효과를 내는 기체", "searchValue": "교육, 과학, 문화의 보급 및 교류를 통하여 국가 간의 협력 증진을 목적으로 설립된 국제연합전문기구",
"value": "900", "value": "900",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (온실가스)/③ 크기 (9pt)" "item": "문구 (유네스코)/③ 크기 (9pt)"
}, },
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "땅으로 복사되는 에너지를 흡수하여 온실효과를 내는 기체", "searchValue": "교육, 과학, 문화의 보급 및 교류를 통하여 국가 간의 협력 증진을 목적으로 설립된 국제연합전문기구",
"value": "CircledDigit", "value": "UserChar",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
@@ -563,85 +566,87 @@
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall", "ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall", "i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital", "I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": "" "정답에 맞는 값 value에 입력": ""
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Platform')])", "path": "boolean(//CHAR[contains(text(),'Development')])",
"ignoreWord": "Platform", "ignoreWord": "Development",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Platform/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Development/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [ "word": [
["이익", "利益"], ["평생", "平生"],
["환경", "環境"], ["교육", "敎育"],
["실천", "實踐"], ["신념", "信念"],
["낭비", "浪費"], ["현장", "現場"],
["촉진", "促進"] ["자격", "資格"]
], ],
"value": 10, "value": 10,
"points": 10, "points": 10,
"category": "Hanja", "category": "Hanja",
"item": "① 이익(利益), ② 환경(環境), ③ 실천(實踐), ④ 낭비(浪費), ⑤ 촉진(促進)" "item": "① 평생(平生), ② 교육(敎育), ③ 신념(信念), ④ 현장(現場), ⑤ 자격(資格)"
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'경을보호')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'하는사람')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…또한 보호하는 환경을 지속 가능한 발전을…) > 보호하는 / 환경을 순서바꿈" "item": "문구 (…어느 하나에 사람에게 해당하는 평생교육사의…) > '사람에게'/'해당하는' 순서바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'건의수명')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'21과목')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…낭비(浪費)하지 않고 물건이 수명을 연장하는 데…) > 이 → 의 글자바꿈" "item": "문구 (…총 21종목이다…)>'종' → '과' 글자바꿈"
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "연도별 자원순환율 추이(%)", "searchValue": "평생교육사 자격증 발급(단위: 명)",
"value": "굴림체", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (연도별 자원순환율 추이(%))/① 글씨체 (굴림체)" "item": "제목 문구 (평생교육사 자격증 발급(단위: 명))/① 글씨체 (돋움)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "연도별 자원순환율 추이(%)", "searchValue": "평생교육사 자격증 발급(단위: 명)",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연도별 자원순환율 추이(%))/② 크기 (1200)" "item": "제목 문구 (평생교육사 자격증 발급(단위: 명))/② 크기 (1200)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "연도별 자원순환율 추이(%)", "searchValue": "평생교육사 자격증 발급(단위: 명)",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (연도별 자원순환율 추이(%))/③ 진하게" "item": "제목 문구 (평생교육사 자격증 발급(단위: 명))/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "연도별 자원순환율 추이(%)", "searchValue": "평생교육사 자격증 발급(단위: 명)",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연도별 자원순환율 추이(%))/④ 정렬 (가운데 정렬)" "item": "제목 문구 (평생교육사 자격증 발급(단위: 명))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "235,179,218", "value": "233,174,43",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:235,179,218)" "item": "위쪽 제목 셀/① 색상(RGB:233,174,43)"
}, },
"38": { "38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -670,11 +675,11 @@
"41": { "41": {
"path": "//TABLE//TEXT/@CharShape", "path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "돋움", "value": "중고딕",
"points": 1, "points": 1,
"category": "TableFontName", "category": "TableFontName",
"category_tmp": "FontName", "category_tmp": "FontName",
"item": "글자모양/① 글씨체 (돋움)", "item": "글자모양/① 글씨체 (중고딕)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
}, },
"42": { "42": {
@@ -693,7 +698,7 @@
}, },
"44": { "44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "AVG", "option": "SUM",
"value": true, "value": true,
"points": 4, "points": 4,
"category": "Boolean", "category": "Boolean",
@@ -742,10 +747,10 @@
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "연도별 자원순환율 추이", "searchValue": "연도별 자원순환율 추이",
"value": "궁서체", "value": "바탕체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연도별 자원순환율 추이)/① 글씨체 (궁서체)" "item": "제목 문구 (연도별 자원순환율 추이)/① 글씨체 (바탕체)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",

View File

@@ -46,65 +46,65 @@
"1": { "1": {
"1": { "1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "태국문화체험페스티벌안내", "searchValue": "슬기로운미디어생활특강안내",
"value": "궁서", "value": "휴먼옛체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (태국문화체험페스티벌안내)/① 글씨체 (궁서)" "item": "문구 (슬기로운미디어생활특강안내)/① 글씨체 (휴먼옛체)"
}, },
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "태국문화체험페스티벌안내", "searchValue": "슬기로운미디어생활특강안내",
"value": "79,156,22", "value": "53,149,164",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (태국문화체험페스티벌안내)/② 채우기 : 색상(RGB:79,156,22)" "item": "문구 (슬기로운미디어생활특강안내)/② 채우기 : 색상(RGB:53,149,164)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "태국문화체험페스티벌안내", "searchValue": "슬기로운미디어생활특강안내",
"value": "130", "value": "110",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (태국문화체험페스티벌안내)/③ 크기-너비 (130 mm)" "item": "문구 (슬기로운미디어생활특강안내)/③ 크기-너비 (110mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "태국문화체험페스티벌안내", "searchValue": "슬기로운미디어생활특강안내",
"value": "20", "value": "20",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (태국문화체험페스티벌안내)/④ 크기-높이 (20 mm)" "item": "문구 (슬기로운미디어생활특강안내)/④ 크기-높이 (20 mm)"
}, },
"5": { "5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "태국문화체험페스티벌안내", "searchValue": "슬기로운미디어생활특강안내",
"value": "true", "value": "true",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (태국문화체험페스티벌안내)/⑤ 위치 (글자처럼 취급)" "item": "문구 (슬기로운미디어생활특강안내)/⑤ 위치 (글자처럼 취급)"
}, },
"6": { "6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "태국문화체험페스티벌안내", "searchValue": "슬기로운미디어생활특강안내",
"value": "Center", "value": "Center",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (태국문화체험페스티벌안내)/⑥ 정렬 (가운데 정렬)" "item": "문구 (슬기로운미디어생활특강안내)/⑥ 정렬 (가운데 정렬)"
}, },
"7": { "7": {
"path": "//TEXTART[@Text='{searchValue}']", "path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "태국문화체험페스티벌안내", "searchValue": "슬기로운미디어생활특강안내",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (태국문화체험페스티벌안내)/⑦ 글맵시모양 (육안확인)" "item": "문구 (슬기로운미디어생활특강안내)/⑦ 글맵시모양 (육안확인)"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "", "searchValue": "",
"value": { "value": {
"Height": 2800, "Height": 2800,
"Width": 2800 "Width": 2800
@@ -112,68 +112,68 @@
"tolerance": 200, "tolerance": 200,
"points": 1, "points": 1,
"category": "TwoLineSize", "category": "TwoLineSize",
"item": "/① 모양 (2줄)" "item": "/① 모양 (2줄)"
}, },
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "", "searchValue": "",
"value": "맑은고딕", "value": "맑은고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "/② 글씨체 (맑은 고딕)" "item": "/② 글씨체 (맑은고딕)"
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "", "searchValue": "",
"value": "244,212,29", "value": "172,235,62",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "/③ 면색 : 색상(RGB:244,212,29)" "item": "/③ 면색 : 색상(RGB:172,235,62)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "", "searchValue": "",
"value": "3.0", "value": "3.0",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "/④ 본문과의 간격 : 3.0mm" "item": "/④ 본문과의 간격 : 3.0mm"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "태국의 아름다운 문화와 함께 잊지 못할 추억을 만들어보세요!", "searchValue": "동영상 콘텐츠의 현재와 미래",
"value": "BOLD",
"points": 2,
"category": "FontAttribute",
"item": "문구 (태국의 아름다운 문화와 함께 잊지 못할 추억을 만들어보세요!)/① BOLD"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "태국의 아름다운 문화와 함께 잊지 못할 추억을 만들어보세요!",
"value": "ITALIC", "value": "ITALIC",
"points": 2, "points": 2,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (태국의 아름다운 문화와 함께 잊지 못할 추억을 만들어보세요!)/ ITALIC" "item": "문구 (동영상 콘텐츠의 현재와 미래)/ ITALIC"
},
"13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "동영상 콘텐츠의 현재와 미래",
"value": "UNDERLINE",
"points": 2,
"category": "FontAttribute",
"item": "문구 (동영상 콘텐츠의 현재와 미래)/② UNDERLINE"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "", "char1": "",
"char2": "", "char2": "",
"char3": "※", "char3": "※",
"value": 3, "value": 3,
"points": 3, "points": 3,
"category": "SpecialChar", "category": "SpecialChar",
"item": "① , ② , ③ ※" "item": "① , ② , ③ ※"
}, },
"15": { "15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내", "searchValue": "행사안내",
"value": "돋움", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 ( 행사안내 )/① 글씨체 (돋움)" "item": "문구 ( 행사안내 )/① 글씨체 (궁서)"
}, },
"16": { "16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
@@ -181,25 +181,25 @@
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Align", "category": "Align",
"item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)" "item": "문구 ( 행사안내 )/② 정렬 (가운데 정렬)"
}, },
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "오전/오후 총 2회", "searchValue": "중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활",
"value": "ITALIC", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (오전/오후 총 2회)/① ITALIC" "item": "문구 (중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활)/① BOLD"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "오전/오후 총 2회", "searchValue": "중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활",
"value": "UNDERLINE", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (오전/오후 총 2회)/② UNDERLINE" "item": "문구 (중랑미디어센터 홈페이지(http://www.ihd.or.kr) 슬기로운 미디어 생활)/② ITALIC"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
@@ -210,57 +210,57 @@
}, },
"points": 2, "points": 2,
"category": "ParaShape", "category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)", "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 06. 28.", "searchValue": "2025. 07. 26.",
"value": "1300", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 06. 28.)/① 크기 (1300)", "item": "문구 (2025. 07. 26.)/① 크기 (1300)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 06. 28.", "searchValue": "2025. 07. 26.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 06. 28.)/② 정렬 (가운데 정렬)" "item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "광진다문화체험관", "searchValue": "중랑미디어센터",
"value": "돋움체", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (광진다문화체험관)/① 글씨체 (돋움체)" "item": "문구 (중랑미디어센터)/① 글씨체 (굴림)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "광진다문화체험관", "searchValue": "중랑미디어센터",
"value": "2400", "value": "2300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (광진다문화체험관)/② 크기 (2400)" "item": "문구 (중랑미디어센터)/② 크기 (2300)"
}, },
"24": { "24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "광진다문화체험관", "searchValue": "중랑미디어센터",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (광진다문화체험관)/③ 정렬 (가운데 정렬)" "item": "문구 (중랑미디어센터)/③ 정렬 (가운데 정렬)"
}, },
"25": { "25": {
"path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT", "searchValue": "DIAT",
"value": "굴림", "value": "중고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (DIAT)/① 글꼴 (굴림)" "item": "문구 (DIAT)/① 글꼴 (중고딕)"
}, },
"26": { "26": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
@@ -280,14 +280,15 @@
}, },
"28": { "28": {
"path": "//PAGENUM/@FormatType", "path": "//PAGENUM/@FormatType",
"value": "CircledDigit", "value": "RomanCapital",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기 (①,②,③ 순으로)", "item": "① 쪽 번호 매기기 (가,나,다 순으로)",
"desc1": { "desc1": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
"1,2,3": "Digit", "1,2,3": "Digit",
"갑,을,병": "DecagonCircle", "갑,을,병": "DecagonCircle",
"甲,乙,丙": "DecagonCircleHanja",
"A,B,C": "LatinCapital", "A,B,C": "LatinCapital",
"a,b,c": "LatinSmall", "a,b,c": "LatinSmall",
"①,②,③": "CircledDigit", "①,②,③": "CircledDigit",
@@ -296,7 +297,7 @@
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall", "ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall", "i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital", "I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja", "+,++,+++": "UserChar",
"desc": "정답에 맞는 값 value에 입력" "desc": "정답에 맞는 값 value에 입력"
}, },
"desc2": "1, 2페이지 모두 정답이어야 점수 부여" "desc2": "1, 2페이지 모두 정답이어야 점수 부여"
@@ -316,11 +317,11 @@
}, },
"30": { "30": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "200", "value": "190",
"first_word": "", "first_word": "",
"points": 2, "points": 2,
"category": "LineSpacing", "category": "LineSpacing",
"item": "문제 1 줄간격 200% 설정", "item": "문제 1 줄간격 190% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다." "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
} }
}, },
@@ -353,104 +354,104 @@
}, },
"4": { "4": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "미소의 나라, 태국", "searchValue": "방송 콘텐츠",
"value": "70", "value": "60",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (미소의 나라, 태국)/① 크기-너비 (70 mm)" "item": "문구 (방송 콘텐츠)/① 크기-너비 (60 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "미소의 나라, 태국", "searchValue": "방송 콘텐츠",
"value": "12", "value": "12",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (미소의 나라, 태국)/② 크기-높이 (12 mm)" "item": "문구 (방송 콘텐츠)/② 크기-높이 (12 mm)"
}, },
"6": { "6": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE",
"searchValue": "미소의 나라, 태국", "searchValue": "방송 콘텐츠",
"value": { "value": {
"Style": "DoubleSlim", "Style": "DoubleSlim",
"Width": "283" "Width": "283"
}, },
"points": 2, "points": 2,
"category": "LineShape", "category": "LineShape",
"item": "문구 (미소의 나라, 태국)/③ 테두리 : 이중 실선(1.00mm)", "item": "문구 (방송 콘텐츠)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력" "desc": "1mm = 283pt value['Width']에 pt값 입력"
}, },
"7": { "7": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio",
"searchValue": "미소의 나라, 태국", "searchValue": "방송 콘텐츠",
"value": "50", "value": "20",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (미소의 나라, 태국)/④ 글상자 모서리 (직각)", "item": "문구 (방송 콘텐츠)/④ 글상자 모서리 (직각)",
"desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0" "desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "미소의 나라, 태국", "searchValue": "방송 콘텐츠",
"value": "61,164,73", "value": "227,220,193",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (미소의 나라, 태국)/⑤ 채우기 : 색상(RGB:61,164,73)" "item": "문구 (방송 콘텐츠)/⑤ 채우기 : 색상(RGB:227,220,193)"
}, },
"9": { "9": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "미소의 나라, 태국", "searchValue": "방송 콘텐츠",
"value": "true", "value": "true",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (미소의 나라, 태국)/⑥ 글상자 위치 (글자처럼 취급)" "item": "문구 (방송 콘텐츠)/⑥ 글상자 위치 (글자처럼 취급)"
}, },
"10": { "10": {
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "미소의 나라, 태국", "searchValue": "방송 콘텐츠",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (미소의 나라, 태국)/⑦ 글상자 정렬 (가운데 정렬)" "item": "문구 (방송 콘텐츠)/⑦ 글상자 정렬 (가운데 정렬)"
}, },
"11": { "11": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "미소의 나라, 태국", "searchValue": "방송 콘텐츠",
"value": "굴림체", "value": "견고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (미소의 나라, 태국)/⑧ 글씨체 (굴림체)" "item": "문구 (방송 콘텐츠)/⑧ 글씨체 (견고딕)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "미소의 나라, 태국", "searchValue": "방송 콘텐츠",
"value": "2000", "value": "2000",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (미소의 나라, 태국)/⑨ 글씨크기 (2000)", "item": "문구 (방송 콘텐츠)/⑨ 글씨크기 (2000)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"13": { "13": {
"path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "미소의 나라, 태국", "searchValue": "방송 콘텐츠",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (미소의 나라, 태국)/⑩ 정렬 (가운데 정렬)" "item": "문구 (방송 콘텐츠)/⑩ 정렬 (가운데 정렬)"
}, },
"14": { "14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']", "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "① 파일명 \"그림D.jpg\" 삽입", "item": "① 파일명 \"그림B.jpg\" 삽입",
"desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)" "desc": "첨부 이미지 파일명 손상으로 정상적인 채점이 불가한 경우가 발견되어서 이미지 첨부 여부로 채점 방식 변경 (7/3)"
}, },
"15": { "15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "85", "value": "80",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "② 크기-너비 (85 mm)" "item": "② 크기-너비 (80 mm)"
}, },
"16": { "16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
@@ -468,87 +469,87 @@
}, },
"18": { "18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "22", "value": "24",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)" "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)"
}, },
"19": { "19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 태국의 환경", "searchValue": "1. 최근 콘텐츠 동향",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구① (1. 태국의 환경)/① 글씨체 (돋움)" "item": "문구① (1. 최근 콘텐츠 동향)/① 글씨체 (돋움)"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 태국의 환경", "searchValue": "1. 최근 콘텐츠 동향",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구① (1. 태국의 환경)/② 크기 (12pt)" "item": "문구① (1. 최근 콘텐츠 동향)/② 크기 (12pt)"
}, },
"21": { "21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 태국의 환경", "searchValue": "1. 최근 콘텐츠 동향",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구① (1. 태국의 환경)/③ 진하게" "item": "문구① (1. 최근 콘텐츠 동향)/③ 진하게"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 태국의 주요 도시", "searchValue": "2. OTT 서비스의 미래",
"value": "돋움", "value": "돋움",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구② (2. 태국의 주요 도시)/① 글씨체 (돋움)" "item": "문구② (2. OTT 서비스의 미래)/① 글씨체 (돋움)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 태국의 주요 도시", "searchValue": "2. OTT 서비스의 미래",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구② (2. 태국의 주요 도시)/② 크기 (1200)" "item": "문구② (2. OTT 서비스의 미래)/② 크기 (1200)"
}, },
"24": { "24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 태국의 주요 도시", "searchValue": "2. OTT 서비스의 미래",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구② (2. 태국의 주요 도시)/③ 진하게" "item": "문구② (2. OTT 서비스의 미래)/③ 진하게"
}, },
"25": { "25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "카오소이", "option": "코로나",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (카오소이)/① 각주 설정 및 문구 입력" "item": "문구 (코로나)/① 각주 설정 및 문구 입력"
}, },
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "커리와 면, 토핑으로 이루어진 태국의 전통 국수", "searchValue": "새로운 유형의 변종 코로나바이러스에 의해 발병한 급성 호흡기 전염병",
"value": "굴림", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (카오소이)/② 글씨체 (굴림)" "item": "문구 (코로나)/② 글씨체 (궁서)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "커리와 면, 토핑으로 이루어진 태국의 전통 국수", "searchValue": "새로운 유형의 변종 코로나바이러스에 의해 발병한 급성 호흡기 전염병",
"value": "900", "value": "900",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (카오소이)/③ 크기 (9pt)" "item": "문구 (코로나)/③ 크기 (9pt)"
}, },
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "커리와 면, 토핑으로 이루어진 태국의 전통 국수", "searchValue": "새로운 유형의 변종 코로나바이러스에 의해 발병한 급성 호흡기 전염병",
"value": "DecagonCircle", "value": "DecagonCircle",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
@@ -566,85 +567,86 @@
"i,ii,iii": "RomanSmall", "i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital", "I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja", "甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": "" "정답에 맞는 값 value에 입력": ""
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Temple')])", "path": "boolean(//CHAR[contains(text(),'Streaming')])",
"ignoreWord": "Temple", "ignoreWord": "Streaming",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Temple/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Streaming/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [ "word": [
["절벽", "絶壁"], ["시청", "視聽"],
["산림", "山林"], ["송출", "送出"],
["서식", "棲息"], ["취향", "趣向"],
["비옥", "肥沃"], ["성장", "成長"],
["매력", "魅力"] ["근절", "根絶"]
], ],
"value": 10, "value": 10,
"points": 10, "points": 10,
"category": "Hanja", "category": "Hanja",
"item": "① 절벽(絶壁), ② 산림(山林), ③ 서식(棲息), ④ 비옥(肥沃), ⑤ 매력(魅力)" "item": "① 시청(視聽), ② 송출(送出), ③ 취향(趣向), ④ 성장(成長), ⑤ 근절(根絶)"
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'대성기후')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'간에원하')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…따뜻한 열대강 기후를 가진…)>'강' → '성' 글자바꿈" "item": "문구 (…언제든지 원하는 원하는 시간에 순서로…) > '원하는' / '시간에' 순서바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'타낸표현')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'수익구조')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…특성을 가장 잘 표현이기도 나타낸 하다…)>'표현이기도 / 나타낸' 순서바꿈" "item": "문구 (…이익구조가 열악하다.…) > '이' → '수' 글자바꿈"
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "지역별 관광객 수(단위:만 명)", "searchValue": "동영상 플랫폼 이용률(%)",
"value": "맑은 고딕", "value": "굴림체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (지역별 관광객 수(단위:만 명))/① 글씨체 (맑은 고딕)" "item": "제목 문구 (동영상 플랫폼 이용률(%))/① 글씨체 (굴림체)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "지역별 관광객 수(단위:만 명)", "searchValue": "동영상 플랫폼 이용률(%)",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (지역별 관광객 수(단위:만 명))/② 크기 (1200)" "item": "제목 문구 (동영상 플랫폼 이용률(%))/② 크기 (1200)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "지역별 관광객 수(단위:만 명)", "searchValue": "동영상 플랫폼 이용률(%)",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (지역별 관광객 수(단위:만 명))/③ 진하게" "item": "제목 문구 (동영상 플랫폼 이용률(%))/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "지역별 관광객 수(단위:만 명)", "searchValue": "동영상 플랫폼 이용률(%)",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (지역별 관광객 수(단위:만 명))/④ 정렬 (가운데 정렬)" "item": "제목 문구 (동영상 플랫폼 이용률(%))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "144,231,53", "value": "95,229,218",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:144,231,53)" "item": "위쪽 제목 셀/① 색상(RGB:95,229,218)"
}, },
"38": { "38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -673,19 +675,19 @@
"41": { "41": {
"path": "//TABLE//TEXT/@CharShape", "path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "돋움", "value": "궁서체",
"points": 1, "points": 1,
"category": "TableFontName", "category": "TableFontName",
"category_tmp": "FontName", "category_tmp": "FontName",
"item": "글자모양/① 글씨체 (돋움)", "item": "글자모양/① 글씨체 (궁서체)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
}, },
"42": { "42": {
"path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height",
"value": "1100", "value": "1000",
"points": 1, "points": 1,
"category": "TableAnswer", "category": "TableAnswer",
"item": "글자모양/② 크기 (1100)" "item": "글자모양/② 크기 (1000)"
}, },
"43": { "43": {
"path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align",
@@ -696,7 +698,7 @@
}, },
"44": { "44": {
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()]//FIELDBEGIN[starts-with(@Command, '={option}')]) and boolean(//TABLE[1]/ROW[last()]/CELL[position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])",
"option": "SUM", "option": "AVG",
"value": true, "value": true,
"points": 4, "points": 4,
"category": "Boolean", "category": "Boolean",
@@ -705,11 +707,11 @@
}, },
"45": { "45": {
"chart_xpath": "", "chart_xpath": "",
"chart_type": "묶은로막대형", "chart_type": "묶은로막대형",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "ChartType", "category": "ChartType",
"item": "① 종류 (묶은로막대형)", "item": "① 종류 (묶은로막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
}, },
"46": { "46": {
@@ -744,36 +746,36 @@
}, },
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "지역별 관광객 수", "searchValue": "동영상 플랫폼 이용률",
"value": "돋움", "value": "굴림",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (지역별 관광객 수)/① 글씨체 (돋움)" "item": "제목 문구 (동영상 플랫폼 이용률)/① 글씨체 (굴림)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "지역별 관광객 수", "searchValue": "동영상 플랫폼 이용률",
"value": "1200", "value": "1400",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (지역별 관광객 수)/② 크기 (1200)" "item": "제목 문구 (동영상 플랫폼 이용률)/② 크기 (1400)"
}, },
"52": { "52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b", "option": "b",
"searchValue": "지역별 관광객 수", "searchValue": "동영상 플랫폼 이용률",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (지역별 관광객 수)/③ 진하게", "item": "제목 문구 (동영상 플랫폼 이용률)/③ 진하게",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {
"chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface",
"value": "굴림", "value": "돋움체",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "X축/① 글꼴 (굴림)" "item": "X축/① 글꼴 (돋움체)"
}, },
"54": { "54": {
"chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz",
@@ -793,10 +795,10 @@
}, },
"56": { "56": {
"chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface",
"value": "굴림", "value": "돋움체",
"points": 1, "points": 1,
"category": "ChartOneAnswer", "category": "ChartOneAnswer",
"item": "Y축/① 글꼴 (굴림)" "item": "Y축/① 글꼴 (돋움체)"
}, },
"57": { "57": {
"chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz",
@@ -816,10 +818,10 @@
}, },
"59": { "59": {
"chart_xpath": "//c:legend//a:ea/@typeface", "chart_xpath": "//c:legend//a:ea/@typeface",
"value": "굴림", "value": "돋움체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "범례/① 글꼴 (굴림)" "item": "범례/① 글꼴 (돋움체)"
}, },
"60": { "60": {
"chart_xpath": "//c:legend//a:defRPr/@sz", "chart_xpath": "//c:legend//a:defRPr/@sz",

View File

@@ -46,57 +46,57 @@
"1": { "1": {
"1": { "1": {
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "인공지능융합일자리박람회", "searchValue": "물절약포스터대회",
"value": "맑은고딕", "value": "고딕",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (인공지능융합일자리박람회)/① 글씨체 (맑은고딕)" "item": "문구 (물절약포스터대회)/① 글씨체 (고딕)"
}, },
"2": { "2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "인공지능융합일자리박람회", "searchValue": "물절약포스터대회",
"value": "58,118,152", "value": "233,106,147",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (인공지능융합일자리박람회)/② 채우기 : 색상(RGB:58,118,152)" "item": "문구 (물절약포스터대회)/② 채우기 : 색상(RGB:233,106,147)"
}, },
"3": { "3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "인공지능융합일자리박람회", "searchValue": "물절약포스터대회",
"value": "130", "value": "120",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (인공지능융합일자리박람회)/③ 크기-너비 (130 mm)" "item": "문구 (물절약포스터대회)/③ 크기-너비 (120 mm)"
}, },
"4": { "4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "인공지능융합일자리박람회", "searchValue": "물절약포스터대회",
"value": "20", "value": "20",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (인공지능융합일자리박람회)/④ 크기-높이 (20 mm)" "item": "문구 (물절약포스터대회)/④ 크기-높이 (20 mm)"
}, },
"5": { "5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "인공지능융합일자리박람회", "searchValue": "물절약포스터대회",
"value": "true", "value": "true",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (인공지능융합일자리박람회)/⑤ 위치 (글자처럼 취급)" "item": "문구 (물절약포스터대회)/⑤ 위치 (글자처럼 취급)"
}, },
"6": { "6": {
"path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "인공지능융합일자리박람회", "searchValue": "물절약포스터대회",
"value": "Center", "value": "Center",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (인공지능융합일자리박람회)/⑥ 정렬 (가운데 정렬)" "item": "문구 (물절약포스터대회)/⑥ 정렬 (가운데 정렬)"
}, },
"7": { "7": {
"path": "//TEXTART[@Text='{searchValue}']", "path": "//TEXTART[@Text='{searchValue}']",
"searchValue": "인공지능융합일자리박람회", "searchValue": "물절약포스터대회",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
@@ -104,7 +104,7 @@
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
"searchValue": "", "searchValue": "",
"value": { "value": {
"Height": 2800, "Height": 2800,
"Width": 2800 "Width": 2800
@@ -112,94 +112,94 @@
"tolerance": 200, "tolerance": 200,
"points": 1, "points": 1,
"category": "TwoLineSize", "category": "TwoLineSize",
"item": "/① 모양 (2줄)" "item": "/① 모양 (2줄)"
}, },
"9": { "9": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "", "searchValue": "",
"value": "굴림체", "value": "궁서체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "/② 글씨체 (굴림체)" "item": "/② 글씨체 (궁서체)"
}, },
"10": { "10": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "", "searchValue": "",
"value": "17,227,206", "value": "242,144,240",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "/③ 면색 : 색상(RGB:17,227,206)" "item": "/③ 면색 : 색상(RGB:242,144,240)"
}, },
"11": { "11": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
"searchValue": "", "searchValue": "",
"value": "3.0", "value": "3.0",
"tolerance": 1, "tolerance": 1,
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "/④ 본문과의 간격 : 3.0mm" "item": "/④ 본문과의 간격 : 3.0mm"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "구직자와 기업 간의 효과적인 매칭", "searchValue": "소중한 물 절약 포스터",
"value": "BOLD", "value": "BOLD",
"points": 2, "points": 2,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (구직자와 기업 간의 효과적인 매칭)/① BOLD" "item": "문구 (소중한 물 절약 포스터)/① BOLD"
}, },
"13": { "13": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
"searchValue": "구직자와 기업 간의 효과적인 매칭", "searchValue": "소중한 물 절약 포스터",
"value": "ITALIC", "value": "ITALIC",
"points": 2, "points": 2,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (구직자와 기업 간의 효과적인 매칭)/② ITALIC" "item": "문구 (소중한 물 절약 포스터)/② ITALIC"
}, },
"14": { "14": {
"path": "//CHAR[contains(string(.),'{char1}')]/text()", "path": "//CHAR[contains(string(.),'{char1}')]/text()",
"path2": "//CHAR[contains(string(.),'{char2}')]/text()", "path2": "//CHAR[contains(string(.),'{char2}')]/text()",
"path3": "//CHAR[contains(string(.),'{char3}')]/text()", "path3": "//CHAR[contains(string(.),'{char3}')]/text()",
"char1": "", "char1": "",
"char2": "", "char2": "",
"char3": "※", "char3": "※",
"value": 3, "value": 3,
"points": 3, "points": 3,
"category": "SpecialChar", "category": "SpecialChar",
"item": "① , ② , ③ ※" "item": "① , ② , ③ ※"
}, },
"15": { "15": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "행사안내", "searchValue": "대회안내",
"value": "돋움", "value": "굴림체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (◈ 행사안내 )/① 글씨체 (돋움)" "item": "문구 (♠ 대회안내 )/① 글씨체 (굴림체)"
}, },
"16": { "16": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{match_str}')]/ancestor::P/@ParaShape]/@Align",
"match_str": "행사안내", "match_str": "대회안내",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "Align", "category": "Align",
"item": "문구 (◈ 행사안내 )/② 정렬 (가운데 정렬)" "item": "문구 (♠ 대회안내 )/② 정렬 (가운데 정렬)"
}, },
"17": { "17": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "대전코엑스 3층 대강당", "searchValue": "2025년 8월 16일(토) 10시 ~ 16시",
"value": "ITALIC", "value": "ITALIC",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (대전코엑스 3층 대강당)/① ITALIC" "item": "문구 (2025년 8월 16일(토) 10시 ~ 16시)/① ITALIC"
}, },
"18": { "18": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]",
"searchValue": "대전코엑스 3층 대강당", "searchValue": "2025년 8월 16일(토) 10시 ~ 16시",
"value": "UNDERLINE", "value": "UNDERLINE",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구 (대전코엑스 3층 대강당)/② UNDERLINE" "item": "문구 (2025년 8월 16일(토) 10시 ~ 16시)/② UNDERLINE"
}, },
"19": { "19": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN",
@@ -210,57 +210,57 @@
}, },
"points": 2, "points": 2,
"category": "ParaShape", "category": "ParaShape",
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)", "item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)",
"desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력" "desc": "내부적으로 내어쓰기는 음수값 / JSON value값은 양수로 입력"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2025. 06. 28.", "searchValue": "2025. 07. 26.",
"value": "1400", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 06. 28.)/① 크기 (1400)", "item": "문구 (2025. 07. 26.)/① 크기 (1300)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"21": { "21": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2025. 06. 28.", "searchValue": "2025. 07. 26.",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (2025. 06. 28.)/② 정렬 (가운데 정렬)" "item": "문구 (2025. 07. 26.)/② 정렬 (가운데 정렬)"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "차세대융합일자리협회", "searchValue": "코리아워터협회",
"value": "궁서체", "value": "중고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (차세대융합일자리협회)/① 글씨체 (궁서체)" "item": "문구 (코리아워터협회)/① 글씨체 (중고딕)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "차세대융합일자리협회", "searchValue": "코리아워터협회",
"value": "2300", "value": "2400",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (차세대융합일자리협회)/② 크기 (2300)" "item": "문구 (코리아워터협회)/② 크기 (2400)"
}, },
"24": { "24": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "차세대융합일자리협회", "searchValue": "코리아워터협회",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (차세대융합일자리협회)/③ 정렬 (가운데 정렬)" "item": "문구 (코리아워터협회)/③ 정렬 (가운데 정렬)"
}, },
"25": { "25": {
"path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "DIAT", "searchValue": "DIAT",
"value": "굴림", "value": "궁서",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (DIAT)/① 글꼴 (굴림)" "item": "문구 (DIAT)/① 글꼴 (궁서)"
}, },
"26": { "26": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
@@ -280,7 +280,7 @@
}, },
"28": { "28": {
"path": "//PAGENUM/@FormatType", "path": "//PAGENUM/@FormatType",
"value": "RomanSmall", "value": "DecagonCircleHanja",
"points": 2, "points": 2,
"category": "PageNumber", "category": "PageNumber",
"item": "① 쪽 번호 매기기 (가,나,다 순으로)", "item": "① 쪽 번호 매기기 (가,나,다 순으로)",
@@ -288,6 +288,7 @@
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
"1,2,3": "Digit", "1,2,3": "Digit",
"갑,을,병": "DecagonCircle", "갑,을,병": "DecagonCircle",
"甲,乙,丙": "DecagonCircleHanja",
"A,B,C": "LatinCapital", "A,B,C": "LatinCapital",
"a,b,c": "LatinSmall", "a,b,c": "LatinSmall",
"①,②,③": "CircledDigit", "①,②,③": "CircledDigit",
@@ -296,7 +297,7 @@
"ⓐ,ⓑ,ⓒ": "CircledLatinSmall", "ⓐ,ⓑ,ⓒ": "CircledLatinSmall",
"i,ii,iii": "RomanSmall", "i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital", "I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja", "+,++,+++": "UserChar",
"desc": "정답에 맞는 값 value에 입력" "desc": "정답에 맞는 값 value에 입력"
}, },
"desc2": "1, 2페이지 모두 정답이어야 점수 부여" "desc2": "1, 2페이지 모두 정답이어야 점수 부여"
@@ -316,11 +317,11 @@
}, },
"30": { "30": {
"path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing",
"value": "180", "value": "200",
"first_word": "", "first_word": "",
"points": 2, "points": 2,
"category": "LineSpacing", "category": "LineSpacing",
"item": "문제 1 줄간격 180% 설정", "item": "문제 1 줄간격 200% 설정",
"desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다." "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다."
} }
}, },
@@ -353,89 +354,89 @@
}, },
"4": { "4": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "인공지능의 영향", "searchValue": "댐의 종류",
"value": "65", "value": "45",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (인공지능의 영향)/① 크기-너비 (65 mm)" "item": "문구 (댐의 종류)/① 크기-너비 (45 mm)"
}, },
"5": { "5": {
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "인공지능의 영향", "searchValue": "댐의 종류",
"value": "12", "value": "12",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "문구 (인공지능의 영향)/② 크기-높이 (12 mm)" "item": "문구 (댐의 종류)/② 크기-높이 (12 mm)"
}, },
"6": { "6": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE",
"searchValue": "인공지능의 영향", "searchValue": "댐의 종류",
"value": { "value": {
"Style": "DoubleSlim", "Style": "DoubleSlim",
"Width": "283" "Width": "283"
}, },
"points": 2, "points": 2,
"category": "LineShape", "category": "LineShape",
"item": "문구 (인공지능의 영향)/③ 테두리 : 이중 실선(1.00mm)", "item": "문구 (댐의 종류)/③ 테두리 : 이중 실선(1.00mm)",
"desc": "1mm = 283pt value['Width']에 pt값 입력" "desc": "1mm = 283pt value['Width']에 pt값 입력"
}, },
"7": { "7": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio",
"searchValue": "인공지능의 영향", "searchValue": "댐의 종류",
"value": "0", "value": "50",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (인공지능의 영향)/④ 글상자 모서리 (직각)", "item": "문구 (댐의 종류)/④ 글상자 모서리 (직각)",
"desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0" "desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0"
}, },
"8": { "8": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
"searchValue": "인공지능의 영향", "searchValue": "댐의 종류",
"value": "239,238,20", "value": "249,207,27",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "문구 (인공지능의 영향)/⑤ 채우기 : 색상(RGB:239,238,20)" "item": "문구 (댐의 종류)/⑤ 채우기 : 색상(RGB:249,207,27)"
}, },
"9": { "9": {
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "인공지능의 영향", "searchValue": "댐의 종류",
"value": "true", "value": "true",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (인공지능의 영향)/⑥ 글상자 위치 (글자처럼 취급)" "item": "문구 (댐의 종류)/⑥ 글상자 위치 (글자처럼 취급)"
}, },
"10": { "10": {
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "인공지능의 영향", "searchValue": "댐의 종류",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (인공지능의 영향)/⑦ 글상자 정렬 (가운데 정렬)" "item": "문구 (댐의 종류)/⑦ 글상자 정렬 (가운데 정렬)"
}, },
"11": { "11": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "인공지능의 영향", "searchValue": "댐의 종류",
"value": "돋움체", "value": "맑은 고딕",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (인공지능의 영향)/⑧ 글씨체 (돋움체)" "item": "문구 (댐의 종류)/⑧ 글씨체 (맑은 고딕)"
}, },
"12": { "12": {
"path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "인공지능의 영향", "searchValue": "댐의 종류",
"value": "2300", "value": "1800",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (인공지능의 영향)/⑨ 글씨크기 (2300)", "item": "문구 (댐의 종류)/⑨ 글씨크기 (1800)",
"desc": "1pt당 100" "desc": "1pt당 100"
}, },
"13": { "13": {
"path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "인공지능의 영향", "searchValue": "댐의 종류",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (인공지능의 영향)/⑩ 정렬 (가운데 정렬)" "item": "문구 (댐의 종류)/⑩ 정렬 (가운데 정렬)"
}, },
"14": { "14": {
"path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']", "path": "//BINITEM[@BinData=//PICTURE/IMAGE/@BinItem][@Format='JPG']",
@@ -447,10 +448,10 @@
}, },
"15": { "15": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width",
"value": "85", "value": "80",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "② 크기-너비 (85 mm)" "item": "② 크기-너비 (80 mm)"
}, },
"16": { "16": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height",
@@ -468,93 +469,94 @@
}, },
"18": { "18": {
"path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset",
"value": "22", "value": "24",
"points": 2, "points": 2,
"category": "mmSize", "category": "mmSize",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)" "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)"
}, },
"19": { "19": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "1. 취업시장의 변화", "searchValue": "1. 댐의 기원",
"value": "궁서", "value": "돋움체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구① (1. 취업시장의 변화)/① 글씨체 (궁서)" "item": "문구① (1. 댐의 기원)/① 글씨체 (돋움체)"
}, },
"20": { "20": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "1. 취업시장의 변화", "searchValue": "1. 댐의 기원",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구① (1. 취업시장의 변화)/② 크기 (12pt)" "item": "문구① (1. 댐의 기원)/② 크기 (12pt)"
}, },
"21": { "21": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "1. 취업시장의 변화", "searchValue": "1. 댐의 기원",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구① (1. 취업시장의 변화)/③ 진하게" "item": "문구① (1. 댐의 기원)/③ 진하게"
}, },
"22": { "22": {
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
"searchValue": "2. 중장년층의 일자리", "searchValue": "2. 댐의 종류",
"value": "궁서", "value": "돋움체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구② (2. 중장년층의 일자리)/① 글씨체 (궁서)" "item": "문구② (2. 댐의 종류)/① 글씨체 (돋움체)"
}, },
"23": { "23": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "2. 중장년층의 일자리", "searchValue": "2. 댐의 종류",
"value": "1200", "value": "1200",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구② (2. 중장년층의 일자리)/② 크기 (1200)" "item": "문구② (2. 댐의 종류)/② 크기 (1200)"
}, },
"24": { "24": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "2. 중장년층의 일자리", "searchValue": "2. 댐의 종류",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "문구② (2. 중장년층의 일자리)/③ 진하게" "item": "문구② (2. 댐의 종류)/③ 진하게"
}, },
"25": { "25": {
"path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)",
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)",
"option": "디지털 리터러시", "option": "수문",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "Boolean", "category": "Boolean",
"item": "문구 (디지털 리터러시)/① 각주 설정 및 문구 입력" "item": "문구 (수문)/① 각주 설정 및 문구 입력"
}, },
"26": { "26": {
"path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape",
"searchValue": "디지털 기술에 대한 이해와 활용 능력", "searchValue": "저수지나 수로에 설치하여 수량을 조절하는 문",
"value": "굴림", "value": "굴림",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "문구 (디지털 리터러시)/② 글씨체 (굴림)" "item": "문구 (수문)/② 글씨체 (굴림)"
}, },
"27": { "27": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height",
"searchValue": "디지털 기술에 대한 이해와 활용 능력", "searchValue": "저수지나 수로에 설치하여 수량을 조절하는 문",
"value": "900", "value": "900",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (디지털 리터러시)/③ 크기 (9pt)" "item": "문구 (수문)/③ 크기 (9pt)"
}, },
"28": { "28": {
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
"searchValue": "디지털 기술에 대한 이해와 활용 능력", "searchValue": "저수지나 수로에 설치하여 수량을 조절하는 문",
"value": "Digit", "value": "CircledLatinSmall",
"points": 2, "points": 2,
"category": "OneAnswer", "category": "OneAnswer",
"item": "문구 (전당)/④ 각주 번호모양", "item": "문구 (전당)/④ 각주 번호모양",
"desc": { "desc": {
"가,나,다": "HangulSyllable", "가,나,다": "HangulSyllable",
"㉮,㉯,㉰": "CircledHangulSyllable",
"1,2,3": "Digit", "1,2,3": "Digit",
"갑,을,병": "DecagonCircle", "갑,을,병": "DecagonCircle",
"A,B,C": "LatinCapital", "A,B,C": "LatinCapital",
@@ -566,85 +568,86 @@
"i,ii,iii": "RomanSmall", "i,ii,iii": "RomanSmall",
"I,II,III": "RomanCapital", "I,II,III": "RomanCapital",
"甲,乙,丙": "DecagonCircleHanja", "甲,乙,丙": "DecagonCircleHanja",
"+,++,+++": "UserChar",
"정답에 맞는 값 value에 입력": "" "정답에 맞는 값 value에 입력": ""
} }
}, },
"29": { "29": {
"path": "boolean(//CHAR[contains(text(),'Cooperation')])", "path": "boolean(//CHAR[contains(text(),'Landslide')])",
"ignoreWord": "Cooperation", "ignoreWord": "Landslide",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "Cooperation/영단어 미입력, 대소문자/오타 시 전체 감점", "item": "Landslide/영단어 미입력, 대소문자/오타 시 전체 감점",
"desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요"
}, },
"30": { "30": {
"path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]",
"word": [ "word": [
["양상", "樣相"], ["유적", "遺跡"],
["확보", "確保"], ["축조", "築造"],
["불균형", "不均衡"], ["선구", "先驅"],
["대체", "代替"], ["획기적", "劃期的"],
["창출", "創出"] ["방류", "放流"]
], ],
"value": 10, "value": 10,
"points": 10, "points": 10,
"category": "Hanja", "category": "Hanja",
"item": "① 양상(樣相), ② 확보(確保), ③ 불균형(不均衡), ④ 대체(代替), ⑤ 창출(創出)" "item": "① 유적(遺跡), ② 축조(築造), ③ 선구(先驅), ④ 획기적(劃期的), ⑤ 방류(放流)"
}, },
"31": { "31": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'전통산업')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'이와더불')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…전손 산업과 신산업 간의…)>'' → '' 글자바꿈" "item": "문구 (…이는 더불어…)>'' → '' 글자바꿈"
}, },
"32": { "32": {
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'간이연장')])", "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'향을미치')])",
"value": true, "value": true,
"points": 3, "points": 3,
"category": "Boolean", "category": "Boolean",
"item": "문구 (…경제활동 연장되면서 기간이 60세…)>'연장되면서 / 기간이' 순서바꿈" "item": "문구 (…크게 미치지 영향을 않을 만큼…)>'미치지' / '영향을' 순서바꿈"
}, },
"33": { "33": {
"path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape",
"searchValue": "연도별 구직률 현황(%)", "searchValue": "국가별 연평균 강수량(단위:밀리미터)",
"value": "돋움체", "value": "굴림체",
"points": 1, "points": 1,
"category": "FontName", "category": "FontName",
"item": "제목 문구 (연도별 구직률 현황(%))/① 글씨체 (돋움체)" "item": "제목 문구 (국가별 연평균 강수량(단위:밀리미터))/① 글씨체 (굴림체)"
}, },
"34": { "34": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height",
"searchValue": "연도별 구직률 현황(%)", "searchValue": "국가별 연평균 강수량(단위:밀리미터)",
"value": "1200", "value": "1100",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연도별 구직률 현황(%))/② 크기 (1200)" "item": "제목 문구 (국가별 연평균 강수량(단위:밀리미터))/② 크기 (1100)"
}, },
"35": { "35": {
"path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]",
"searchValue": "연도별 구직률 현황(%)", "searchValue": "국가별 연평균 강수량(단위:밀리미터)",
"value": "BOLD", "value": "BOLD",
"points": 1, "points": 1,
"category": "FontAttribute", "category": "FontAttribute",
"item": "제목 문구 (연도별 구직률 현황(%))/③ 진하게" "item": "제목 문구 (국가별 연평균 강수량(단위:밀리미터))/③ 진하게"
}, },
"36": { "36": {
"path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align",
"searchValue": "연도별 구직률 현황(%)", "searchValue": "국가별 연평균 강수량(단위:밀리미터)",
"value": "Center", "value": "Center",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연도별 구직률 현황(%))/④ 정렬 (가운데 정렬)" "item": "제목 문구 (국가별 연평균 강수량(단위:밀리미터))/④ 정렬 (가운데 정렬)"
}, },
"37": { "37": {
"path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"value": "229,183,242", "value": "179,197,243",
"points": 2, "points": 2,
"category": "Color", "category": "Color",
"item": "위쪽 제목 셀/① 색상(RGB:229,183,242)" "item": "위쪽 제목 셀/① 색상(RGB:179,197,243)"
}, },
"38": { "38": {
"path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]",
@@ -673,11 +676,11 @@
"41": { "41": {
"path": "//TABLE//TEXT/@CharShape", "path": "//TABLE//TEXT/@CharShape",
"path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"value": "굴림체", "value": "돋움",
"points": 1, "points": 1,
"category": "TableFontName", "category": "TableFontName",
"category_tmp": "FontName", "category_tmp": "FontName",
"item": "글자모양/① 글씨체 (굴림체)", "item": "글자모양/① 글씨체 (돋움)",
"desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경"
}, },
"42": { "42": {
@@ -705,11 +708,11 @@
}, },
"45": { "45": {
"chart_xpath": "", "chart_xpath": "",
"chart_type": "꺾은선형", "chart_type": "묶은 가로 막대형",
"value": true, "value": true,
"points": 2, "points": 2,
"category": "ChartType", "category": "ChartType",
"item": "① 종류 (꺾은선형)", "item": "① 종류 (묶은 가로 막대형)",
"desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)"
}, },
"46": { "46": {
@@ -744,28 +747,28 @@
}, },
"50": { "50": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
"searchValue": "연도별 구직률 현황(%)", "searchValue": "국가별 연평균 강수량",
"value": "궁서체", "value": "궁서체",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연도별 구직률 현황(%))/① 글씨체 (궁서체)" "item": "제목 문구 (국가별 연평균 강수량)/① 글씨체 (궁서체)"
}, },
"51": { "51": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
"searchValue": "연도별 구직률 현황(%)", "searchValue": "국가별 연평균 강수량",
"value": "1400", "value": "1300",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연도별 구직률 현황(%))/② 크기 (1400)" "item": "제목 문구 (국가별 연평균 강수량)/② 크기 (1300)"
}, },
"52": { "52": {
"chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}",
"option": "b", "option": "b",
"searchValue": "연도별 구직률 현황(%)", "searchValue": "국가별 연평균 강수량",
"value": "1", "value": "1",
"points": 1, "points": 1,
"category": "OneAnswer", "category": "OneAnswer",
"item": "제목 문구 (연도별 구직률 현황(%))/③ 진하게", "item": "제목 문구 (국가별 연평균 강수량)/③ 진하게",
"desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b"
}, },
"53": { "53": {

View File

@@ -0,0 +1,844 @@
{
"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"
}
}
}