score5.py > diwScoring.py 변경 / JSON파일 구조 변경에 따라 일부 소스코드 변경
This commit is contained in:
855
DIW_2503A copy.json
Normal file
855
DIW_2503A copy.json
Normal file
@@ -0,0 +1,855 @@
|
|||||||
|
{
|
||||||
|
"0-0": {
|
||||||
|
"path": "",
|
||||||
|
"path2": "",
|
||||||
|
"points": 0,
|
||||||
|
"category": "파일저장",
|
||||||
|
"item": "파일명 (수검번호.hwp/hwpx)"
|
||||||
|
},
|
||||||
|
"0-1": {
|
||||||
|
"path": "boolean(//PAGEMARGIN[(@Bottom='5668'or @Bottom='5669') and (@Footer='2834' or @Footer='2835') and @Gutter='0' and (@Header='2834' or @Header='2835') and (@Left='5668' or @Left='5669') and (@Right='5668' or @Right='5669') and (@Top='5668' or @Top='5669')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "용지설정",
|
||||||
|
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
|
||||||
|
},
|
||||||
|
"0-2": {
|
||||||
|
"path": "boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "기본설정",
|
||||||
|
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
|
||||||
|
},
|
||||||
|
"0-3": {
|
||||||
|
"path": "",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": null,
|
||||||
|
"points": 40,
|
||||||
|
"category": "오타감점",
|
||||||
|
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
|
||||||
|
},
|
||||||
|
"1-1": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경이동수단컨퍼런스",
|
||||||
|
"value": "견고딕",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (친환경이동수단컨퍼런스)/① 글씨체 (견고딕)"
|
||||||
|
},
|
||||||
|
"1-2": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경이동수단컨퍼런스",
|
||||||
|
"value": "9920305",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (친환경이동수단컨퍼런스)/② 채우기 : 색상(RGB:49,95,151)"
|
||||||
|
},
|
||||||
|
"1-3": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경이동수단컨퍼런스",
|
||||||
|
"value": 28346,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (친환경이동수단컨퍼런스)/③ 크기-너비 (100mm)"
|
||||||
|
},
|
||||||
|
"1-4": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경이동수단컨퍼런스",
|
||||||
|
"value": 5669,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (친환경이동수단컨퍼런스)/④ 크기-높이 (20mm)"
|
||||||
|
},
|
||||||
|
"1-5": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경이동수단컨퍼런스",
|
||||||
|
"value": "true",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (친환경이동수단컨퍼런스)/⑤ 위치 (글자처럼 취급)"
|
||||||
|
},
|
||||||
|
"1-6": {
|
||||||
|
"path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경이동수단컨퍼런스",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (친환경이동수단컨퍼런스)/⑥ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-7": {
|
||||||
|
"path": "boolean(//TEXTART[@Text='{searchValue}'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경이동수단컨퍼런스",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (친환경이동수단컨퍼런스)/⑦ 글맵시모양 (육안확인)"
|
||||||
|
},
|
||||||
|
"1-8": {
|
||||||
|
"path": "boolean(//RECTANGLE[.//CHAR[text()='지']][.//SIZE[(@Height >= 2600 and @Height <= 2800)and(@Width >= 2600 and @Width <= 2800)]])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "지/① 모양 (2줄)"
|
||||||
|
},
|
||||||
|
"1-9": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TEXT[CHAR[text()='지']]/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "궁서체",
|
||||||
|
"points": 1,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "지/② 글씨체 (궁서체)"
|
||||||
|
},
|
||||||
|
"1-10": {
|
||||||
|
"path": "//RECTANGLE[.//CHAR[text()='지']]//WINDOWBRUSH/@FaceColor",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "3644265",
|
||||||
|
"points": 2,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "지/③ 면색 : 색상(RGB:105,155,55)"
|
||||||
|
},
|
||||||
|
"1-11": {
|
||||||
|
"path": "//RECTANGLE[.//CHAR[text()='지']]//OUTSIDEMARGIN/@Right",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "850",
|
||||||
|
"points": 2,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "지/④ 본문과의 간격 : 3.0mm"
|
||||||
|
},
|
||||||
|
"1-12": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][ITALIC])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "전 세계적으로 차량의 수는 약 13억 대가 있고 국내는 약 2,500만 대",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (전 세계적으로 차량의 수는 약 13억 대가 있고 국내는 약 2,500만 대)/① 기울임"
|
||||||
|
},
|
||||||
|
"1-13": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][UNDERLINE])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "전 세계적으로 차량의 수는 약 13억 대가 있고 국내는 약 2,500만 대",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (전 세계적으로 차량의 수는 약 13억 대가 있고 국내는 약 2,500만 대)/② 밑줄"
|
||||||
|
},
|
||||||
|
"1-14": {
|
||||||
|
"path": "count(//CHAR[contains(text(),'☆')]) + count(//CHAR[contains(text(),'※')])",
|
||||||
|
"path2": "string-length(//CHAR[contains(text(),'☆')]) - string-length(translate(//CHAR[contains(text(),'☆')], '☆', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 3,
|
||||||
|
"points": 3,
|
||||||
|
"category": "특수문자",
|
||||||
|
"item": "① ☆, ② ☆, ③ ※"
|
||||||
|
},
|
||||||
|
"1-15": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "☆ 행사안내 ☆",
|
||||||
|
"value": "궁서",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (☆ 행사안내 ☆)/① 글씨체 (궁서)"
|
||||||
|
},
|
||||||
|
"1-16": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "☆ 행사안내 ☆",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (☆ 행사안내 ☆)/② 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-17": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][BOLD])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2025. 03. 27.(목) 24:00까지",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2025. 03. 27.(목) 24:00까지)/① 진하게"
|
||||||
|
},
|
||||||
|
"1-18": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][UNDERLINE])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2025. 03. 27.(목) 24:00까지",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2025. 03. 27.(목) 24:00까지)/② 밑줄"
|
||||||
|
},
|
||||||
|
"1-19": {
|
||||||
|
"path": "boolean(//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Left=3000 and //PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Indent=-2400)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "기타사항",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "문단모양",
|
||||||
|
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)"
|
||||||
|
},
|
||||||
|
"1-20": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2025. 03. 22.",
|
||||||
|
"value": 1300,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2025. 03. 22.)/① 크기 (13pt)"
|
||||||
|
},
|
||||||
|
"1-21": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2025. 03. 22.",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2025. 03. 22.)/② 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-22": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한국육상운송협회",
|
||||||
|
"value": "굴림체",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (한국육상운송협회)/① 글씨체 (굴림체)"
|
||||||
|
},
|
||||||
|
"1-23": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한국육상운송협회",
|
||||||
|
"value": 2400,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (한국육상운송협회)/② 크기 (24pt)"
|
||||||
|
},
|
||||||
|
"1-24": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한국육상운송협회",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (한국육상운송협회)/③ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-25": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "DIAT",
|
||||||
|
"value": "돋움",
|
||||||
|
"points": 1,
|
||||||
|
"category": "머리말",
|
||||||
|
"item": "문구 (DIAT)/① 글꼴 (돋움)"
|
||||||
|
},
|
||||||
|
"1-26": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "DIAT",
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "머리말",
|
||||||
|
"item": "문구 (DIAT)/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"1-27": {
|
||||||
|
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "DIAT",
|
||||||
|
"value": "Right",
|
||||||
|
"points": 1,
|
||||||
|
"category": "머리말",
|
||||||
|
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
|
||||||
|
},
|
||||||
|
"1-28": {
|
||||||
|
"path": "//PAGENUM/@FormatType",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "LatinCapital",
|
||||||
|
"points": 2,
|
||||||
|
"category": "쪽번호",
|
||||||
|
"item": "① 쪽 번호 매기기 (A,B,C 순으로)"
|
||||||
|
},
|
||||||
|
"1-29": {
|
||||||
|
"path": "//PAGENUM/@Pos",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "BottomCenter",
|
||||||
|
"points": 2,
|
||||||
|
"category": "쪽번호",
|
||||||
|
"item": "② 가운데 아래"
|
||||||
|
},
|
||||||
|
"1-30": {
|
||||||
|
"path": "not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!='180'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "줄간격",
|
||||||
|
"item": "문제 1 줄간격 180% 설정"
|
||||||
|
},
|
||||||
|
"2-01": {
|
||||||
|
"path": "boolean(//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside='true' and //BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim')",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "쪽 테두리",
|
||||||
|
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
|
||||||
|
},
|
||||||
|
"2-02": {
|
||||||
|
"path": "count(//SECTION)>1",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "다단",
|
||||||
|
"item": "① 구역나누기"
|
||||||
|
},
|
||||||
|
"2-03": {
|
||||||
|
"path": "//COLDEF/@Count>1",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "다단",
|
||||||
|
"item": "② 다단 2단"
|
||||||
|
},
|
||||||
|
"2-04": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": 19842,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/① 크기-너비 (70mm)"
|
||||||
|
},
|
||||||
|
"2-05": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": 3401,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/② 크기-높이 (12mm)"
|
||||||
|
},
|
||||||
|
"2-06": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": "DoubleSlim",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/③ 테두리 (이중실선(1.00mm))"
|
||||||
|
},
|
||||||
|
"2-07": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": 50,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/④ 글상자 모서리 (반원)"
|
||||||
|
},
|
||||||
|
"2-08": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": "9537333",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/⑤ 채우기 : 색상(RGB:53,135,145)"
|
||||||
|
},
|
||||||
|
"2-09": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": "true",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/⑥ 글상자 위치 (글자처럼 취급)"
|
||||||
|
},
|
||||||
|
"2-10": {
|
||||||
|
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/⑦ 글상자 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-11": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": "맑은 고딕",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/⑧ 글씨체 (맑은 고딕)"
|
||||||
|
},
|
||||||
|
"2-12": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='2400')",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/⑨ 글씨크기 (24pt)"
|
||||||
|
},
|
||||||
|
"2-13": {
|
||||||
|
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/⑩ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-14": {
|
||||||
|
"path": "boolean(//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "원본 그림의 이름: 그림",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "① 파일명 \"그림A.jpg\" 삽입"
|
||||||
|
},
|
||||||
|
"2-15": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 24094,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "② 크기-너비 (85mm)"
|
||||||
|
},
|
||||||
|
"2-16": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 11338,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "③ 크기-높이 (40mm)"
|
||||||
|
},
|
||||||
|
"2-17": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@HorzOffset",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 0,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
|
||||||
|
},
|
||||||
|
"2-18": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 6236,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22mm)"
|
||||||
|
},
|
||||||
|
"2-19": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "1. 친환경 자동차",
|
||||||
|
"value": "궁서",
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구① (1. 친환경 자동차)/① 글씨체 (궁서)"
|
||||||
|
},
|
||||||
|
"2-20": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "1. 친환경 자동차",
|
||||||
|
"value": 1200,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구① (1. 친환경 자동차)/② 크기 (12pt)"
|
||||||
|
},
|
||||||
|
"2-21": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "1. 친환경 자동차",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구① (1. 친환경 자동차)/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-22": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2. 친환경 자동차 보급 추이",
|
||||||
|
"value": "궁서",
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구② (2. 친환경 자동차 보급 추이)/① 글씨체 (궁서)"
|
||||||
|
},
|
||||||
|
"2-23": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2. 친환경 자동차 보급 추이",
|
||||||
|
"value": 1200,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구② (2. 친환경 자동차 보급 추이)/② 크기 (12pt)"
|
||||||
|
},
|
||||||
|
"2-24": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2. 친환경 자동차 보급 추이",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구② (2. 친환경 자동차 보급 추이)/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-25": {
|
||||||
|
"path":"boolean(//CHAR[contains(text(),'자동차 탄소발자국')]/ancestor::TEXT/FOOTNOTE/descendant::CHAR)",
|
||||||
|
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('자동차 탄소발자국') + 1) = '자동차 탄소발자국']/following-sibling::FOOTNOTE/descendant::CHAR)",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (자동차 탄소발자국)/① 각주 설정 및 문구 입력"
|
||||||
|
},
|
||||||
|
"2-26": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 생애에서 배출하는 이산화탄소의 총량",
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (자동차 탄소발자국)/② 글씨체 (굴림)"
|
||||||
|
},
|
||||||
|
"2-27": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 생애에서 배출하는 이산화탄소의 총량",
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (자동차 탄소발자국)/③ 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-28": {
|
||||||
|
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 생애에서 배출하는 이산화탄소의 총량",
|
||||||
|
"value": "CircledHangulSyllable",
|
||||||
|
"points": 2,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (자동차 탄소발자국)/④ 각주 번호모양"
|
||||||
|
},
|
||||||
|
"2-29": {
|
||||||
|
"path": "boolean(//CHAR[contains(text(),'Hybrid')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "영단어",
|
||||||
|
"item": "Hybrid/영단어 미입력, 대소문자/오타 시 전체 감점"
|
||||||
|
},
|
||||||
|
"2-30": {
|
||||||
|
"path": "(count(//CHAR[contains(text(),'전지')][contains(text(),'電池')])+count(//CHAR[contains(text(),'유해')][contains(text(),'有害')])+count(//CHAR[contains(text(),'내연')][contains(text(),'內燃')])+count(//CHAR[contains(text(),'이륜차')][contains(text(),'二輪車')])+count(//CHAR[contains(text(),'기타')][contains(text(),'其他')]))*2",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 10,
|
||||||
|
"points": 10,
|
||||||
|
"category": "한자",
|
||||||
|
"item": "① 전지(電池), ② 유해(有害), ③내연(內燃), ④ 이륜차(二輪車), ⑤ 기타(其他)"
|
||||||
|
},
|
||||||
|
"2-31": {
|
||||||
|
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'터를독립')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "편집",
|
||||||
|
"item": "문구 (…내장된 전기모터이 독립적으로 또는 병행해서…)/\"이\" → \"를\" 글자바꿈"
|
||||||
|
},
|
||||||
|
"2-32": {
|
||||||
|
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'면서환경')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "편집",
|
||||||
|
"item": "문구 (…주행하는 방식으로 환경에 주행하면서 유해(有害)한 물질을…)/\"환경에\" / \"주행하면서\" 순서바꿈"
|
||||||
|
},
|
||||||
|
"2-33": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 증가 추이",
|
||||||
|
"value": "돋움",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (자동차 증가 추이)/① 글씨체 (돋움)"
|
||||||
|
},
|
||||||
|
"2-34": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 증가 추이",
|
||||||
|
"value": 1200,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (자동차 증가 추이)/② 크기 (12pt)"
|
||||||
|
},
|
||||||
|
"2-35": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 증가 추이",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (자동차 증가 추이)/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-36": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 증가 추이",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (자동차 증가 추이)/④ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-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='2']/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "7034570",
|
||||||
|
"points": 2,
|
||||||
|
"category": "표",
|
||||||
|
"item": "위쪽 제목 셀/① 색상(RGB:202,86,107)"
|
||||||
|
},
|
||||||
|
"2-38": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "위쪽 제목 셀/② 진하게"
|
||||||
|
},
|
||||||
|
"2-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='2']/@BorderFill]/BOTTOMBORDER/@Type",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "DoubleSlim",
|
||||||
|
"points": 2,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 셀 아래선/① 이중실선"
|
||||||
|
},
|
||||||
|
"2-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='2']/@BorderFill]/BOTTOMBORDER/@Width",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "0.5mm",
|
||||||
|
"points": 2,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 셀 아래선/② 0.5mm"
|
||||||
|
},
|
||||||
|
"2-41": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "궁서체",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "글자모양/① 글씨체 (궁서체)"
|
||||||
|
},
|
||||||
|
"2-42": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1000,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "글자모양/② 크기 (10pt)"
|
||||||
|
},
|
||||||
|
"2-43": {
|
||||||
|
"path": "//PARASHAPE[@Id=//TABLE/ROW/descendant::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "글자모양/③ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-44": {
|
||||||
|
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=SUM') and substring(@Command, string-length(@Command) - 2) = '290'] and //TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=SUM') and substring(@Command, string-length(@Command) - 2) = '190'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "표",
|
||||||
|
"item": "블록계산식/합계"
|
||||||
|
},
|
||||||
|
"2-45": {
|
||||||
|
"path": "boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "① 종류 (묶은세로막대형)"
|
||||||
|
},
|
||||||
|
"2-46": {
|
||||||
|
"path": "//c:valAx/c:majorTickMark/@val",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "out",
|
||||||
|
"points": 2,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "② 값 축 주 눈금선"
|
||||||
|
},
|
||||||
|
"2-47": {
|
||||||
|
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 22677,
|
||||||
|
"points": 2,
|
||||||
|
"category": "차트",
|
||||||
|
"item": "③ 크기-너비 (80mm)"
|
||||||
|
},
|
||||||
|
"2-48": {
|
||||||
|
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 25511,
|
||||||
|
"points": 2,
|
||||||
|
"category": "차트",
|
||||||
|
"item": "④ 크기-높이 (90mm)"
|
||||||
|
},
|
||||||
|
"2-49": {
|
||||||
|
"path": "//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)"
|
||||||
|
},
|
||||||
|
"2-50": {
|
||||||
|
"path": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 증가 추이",
|
||||||
|
"value": "바탕체",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "제목 문구 (자동차 증가 추이) : 제목 문구 불일치는 오타감점에서 반영/① 글씨체 (바탕체)"
|
||||||
|
},
|
||||||
|
"2-51": {
|
||||||
|
"path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 증가 추이",
|
||||||
|
"value": 1300,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "제목 문구 (자동차 증가 추이) : 제목 문구 불일치는 오타감점에서 반영/② 크기 (13pt)"
|
||||||
|
},
|
||||||
|
"2-52": {
|
||||||
|
"path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@b",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 증가 추이",
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "제목 문구 (자동차 증가 추이) : 제목 문구 불일치는 오타감점에서 반영/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-53": {
|
||||||
|
"path": "//c:catAx//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "X축/① 글꼴 (굴림)"
|
||||||
|
},
|
||||||
|
"2-54": {
|
||||||
|
"path": "//c:catAx//a:defRPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "X축/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-55": {
|
||||||
|
"path": "//c:catAx//a:defRPr/@i",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "X축/③ 기울임"
|
||||||
|
},
|
||||||
|
"2-56": {
|
||||||
|
"path": "//c:valAx//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "Y축/① 글꼴 (굴림)"
|
||||||
|
},
|
||||||
|
"2-57": {
|
||||||
|
"path": "//c:valAx//a:defRPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "Y축/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-58": {
|
||||||
|
"path": "//c:valAx//a:defRPr/@i",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "Y축/③ 기울임"
|
||||||
|
},
|
||||||
|
"2-59": {
|
||||||
|
"path": "//c:legend//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "범례/① 글꼴 (굴림)"
|
||||||
|
},
|
||||||
|
"2-60": {
|
||||||
|
"path": "//c:legend//a:defRPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "범례/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-61": {
|
||||||
|
"path": "//c:legend//a:defRPr/@i",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "범례/③ 기울임"
|
||||||
|
}
|
||||||
|
}
|
||||||
1710
DIW_2503A.json
1710
DIW_2503A.json
File diff suppressed because it is too large
Load Diff
1712
DIW_2503B.json
1712
DIW_2503B.json
File diff suppressed because it is too large
Load Diff
1712
DIW_2503C.json
1712
DIW_2503C.json
File diff suppressed because it is too large
Load Diff
567
diwScoring.py
Normal file
567
diwScoring.py
Normal file
@@ -0,0 +1,567 @@
|
|||||||
|
import tkinter as tk
|
||||||
|
from tkinter import filedialog, messagebox
|
||||||
|
from datetime import datetime
|
||||||
|
import difflib
|
||||||
|
import json
|
||||||
|
from pathlib import Path
|
||||||
|
import os
|
||||||
|
from lxml import etree as ET
|
||||||
|
import re
|
||||||
|
from difflib import SequenceMatcher
|
||||||
|
import pandas as pd
|
||||||
|
import base64
|
||||||
|
# from xpathSearch import XMLPathHandler
|
||||||
|
|
||||||
|
class XMLScorer:
|
||||||
|
# 채점 기준 경로 초기화
|
||||||
|
def __init__(self, scoring_criteria_path):
|
||||||
|
# 채점 기준 로드
|
||||||
|
self.scoring_criteria = self._load_scoring_criteria(scoring_criteria_path)
|
||||||
|
|
||||||
|
def set_typo_score(self, score):
|
||||||
|
self.typo_score = score
|
||||||
|
|
||||||
|
def get_typo_score(self):
|
||||||
|
return self.typo_score
|
||||||
|
|
||||||
|
# 채점 기준파일 로드(JSON 파일)
|
||||||
|
def _load_scoring_criteria(self, file_path):
|
||||||
|
with open(file_path, 'r', encoding='utf-8') as f:
|
||||||
|
return json.load(f)
|
||||||
|
|
||||||
|
# XML 파일에서 element의 값을 찾아 반환
|
||||||
|
def query_xml(self, root, *args):
|
||||||
|
first_xpath = args[0]
|
||||||
|
second_xpath = args[1]
|
||||||
|
points = args[2]
|
||||||
|
category = args[3]
|
||||||
|
|
||||||
|
if ("특수문자" in category) and (second_xpath is not None):
|
||||||
|
try:
|
||||||
|
result = root.xpath(first_xpath)
|
||||||
|
# 결과값이 리스트형인데 내부에 정보가 없는경우
|
||||||
|
# 결과값이 없음
|
||||||
|
if type(result) is list and len(result) == 0:
|
||||||
|
return None
|
||||||
|
elif result < points:
|
||||||
|
result = root.xpath(second_xpath)
|
||||||
|
return result
|
||||||
|
else:
|
||||||
|
return result
|
||||||
|
|
||||||
|
except ET.XPathEvalError as e:
|
||||||
|
return None
|
||||||
|
|
||||||
|
elif second_xpath is not None:
|
||||||
|
try:
|
||||||
|
result1 = root.xpath(first_xpath)
|
||||||
|
result2 = root.xpath(second_xpath)
|
||||||
|
if (type(result1) is list and len(result1) == 0) and (type(result2) is list and len(result2) == 0):
|
||||||
|
return None
|
||||||
|
return result1 if result1 else result2
|
||||||
|
|
||||||
|
except ET.XPathEvalError as e:
|
||||||
|
return None
|
||||||
|
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
result = root.xpath(first_xpath)
|
||||||
|
if type(result) is list and len(result) == 0:
|
||||||
|
return None
|
||||||
|
return result
|
||||||
|
except ET.XPathEvalError as e:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def chart_query_xml(self, tree, xpath, namespaces):
|
||||||
|
|
||||||
|
result = tree.xpath(xpath, namespaces=namespaces)
|
||||||
|
if type(result) is list and len(result) == 0:
|
||||||
|
return None
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
# 유사한 텍스트 찾기
|
||||||
|
def find_similar_text(self, root, target_text, threshold=0.7):
|
||||||
|
"""
|
||||||
|
전체 문서에서 유사한 텍스트를 찾아 반환
|
||||||
|
|
||||||
|
Args:
|
||||||
|
root (_type_): xml root element 객체
|
||||||
|
target_text (_type_): 찾을 텍스트
|
||||||
|
threshold (float, optional): 유사도 설정 Defaults to 0.3.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: 유사도 기준을 만족하는 텍스트
|
||||||
|
"""
|
||||||
|
# 전체 텍스트 추출
|
||||||
|
# all_text = root.xpath(f"//CHAR/text()")
|
||||||
|
# all_text.append(root.xpath(f"//TEXTART/@text"))
|
||||||
|
|
||||||
|
namespaces = {
|
||||||
|
'a': 'http://schemas.openxmlformats.org/drawingml/2006/main',
|
||||||
|
'c': 'http://schemas.openxmlformats.org/drawingml/2006/chart'
|
||||||
|
}
|
||||||
|
|
||||||
|
all_text = root.xpath(f"//BODY//text() | //TEXTART/@Text | //c:chart//text()", namespaces=namespaces)
|
||||||
|
|
||||||
|
# 유사도 비교
|
||||||
|
max_score = 0
|
||||||
|
similar_text = ''
|
||||||
|
|
||||||
|
for text in all_text:
|
||||||
|
score = SequenceMatcher(None, target_text, text).ratio()
|
||||||
|
|
||||||
|
if score > max_score:
|
||||||
|
max_score = score
|
||||||
|
similar_text = text
|
||||||
|
|
||||||
|
if max_score >= threshold:
|
||||||
|
return similar_text
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
# 하나의 XML 파일 채점
|
||||||
|
def _score_xml_file(self, xml_file, chart_xml):
|
||||||
|
try:
|
||||||
|
tree = ET.parse(xml_file)
|
||||||
|
root = tree.getroot()
|
||||||
|
|
||||||
|
# 네임스페이스 정의
|
||||||
|
namespaces = {
|
||||||
|
'a': 'http://schemas.openxmlformats.org/drawingml/2006/main',
|
||||||
|
'c': 'http://schemas.openxmlformats.org/drawingml/2006/chart'
|
||||||
|
}
|
||||||
|
|
||||||
|
# 차트 XML 파일이 없는 경우 0점 채점을 위헤 빈 XML 생성
|
||||||
|
if chart_xml is None:
|
||||||
|
chart_tree = ET.fromstring('<xml></xml>')
|
||||||
|
else:
|
||||||
|
chart_tree = ET.fromstring(chart_xml)
|
||||||
|
|
||||||
|
# 결과값을 Dictionary로 저장
|
||||||
|
results = {
|
||||||
|
'filename': os.path.basename(xml_file),
|
||||||
|
'score_results': [],
|
||||||
|
'total_score': 0,
|
||||||
|
'partial_scores': []
|
||||||
|
}
|
||||||
|
|
||||||
|
print(f"File name: {results['filename']}")
|
||||||
|
|
||||||
|
total_score = 0
|
||||||
|
for section_id, section in self.scoring_criteria.items():
|
||||||
|
partial_score = 0
|
||||||
|
|
||||||
|
for criterion_id, criterion in section.items():
|
||||||
|
id = criterion_id
|
||||||
|
xpath = criterion['path'] if 'path' in criterion else None
|
||||||
|
xpath2 = criterion['path2'] if 'path2' in criterion else None
|
||||||
|
search_value = criterion['searchValue'] if 'searchValue' in criterion else None
|
||||||
|
right_answer = criterion['value'] if 'value' in criterion else None
|
||||||
|
points = criterion['points'] if 'points' in criterion else None
|
||||||
|
category = criterion['category']
|
||||||
|
item = criterion['item']
|
||||||
|
similar_text = None
|
||||||
|
|
||||||
|
# chart xml 파일에서 채점하는 경우
|
||||||
|
if "chart_xml" in category:
|
||||||
|
if search_value is not None:
|
||||||
|
similar_text = self.find_similar_text(chart_tree, search_value)
|
||||||
|
if similar_text is None:
|
||||||
|
xpath = xpath.replace('{searchValue}', search_value)
|
||||||
|
else:
|
||||||
|
xpath = xpath.replace('{searchValue}', similar_text)
|
||||||
|
|
||||||
|
result = self.chart_query_xml(chart_tree, xpath, namespaces)
|
||||||
|
|
||||||
|
# 그 외의 hml 파일에서 채점하는 경우
|
||||||
|
else:
|
||||||
|
if search_value is not None:
|
||||||
|
similar_text = self.find_similar_text(root, search_value)
|
||||||
|
if similar_text is None:
|
||||||
|
xpath = xpath.replace('{searchValue}', search_value)
|
||||||
|
else:
|
||||||
|
xpath = xpath.replace('{searchValue}', similar_text)
|
||||||
|
|
||||||
|
result = self.query_xml(root, xpath, xpath2, points, category)
|
||||||
|
|
||||||
|
# [ boolean 타입 ]
|
||||||
|
# 1. 이텔릭체, 굵게, 밑줄 등 효과가 적용 여부에 따라
|
||||||
|
# [ITALIC] [BOLD] [UNDERLINE] 태그가 있거나 없을 수 있으므로
|
||||||
|
# 존재 유무에 따라 True, False로 판단
|
||||||
|
# 2. 두 가지 이상의 조건을 모두 만족해야 하는 경우 and 연산자로 연결되어
|
||||||
|
# 반환값 True/False로 판단
|
||||||
|
# [ float 타입 ]
|
||||||
|
# 1. 부분점수의 합산으로 반환되는 경우 float 타입으로 반환
|
||||||
|
if type(result) is not list:
|
||||||
|
if type(result) is float and (result > points):
|
||||||
|
actual_answer = float(points)
|
||||||
|
else:
|
||||||
|
actual_answer = result
|
||||||
|
else:
|
||||||
|
if type(right_answer) is int:
|
||||||
|
actual_answer = int(result[0])
|
||||||
|
else:
|
||||||
|
actual_answer = result[0]
|
||||||
|
|
||||||
|
if "오타감점" in category:
|
||||||
|
points = self.get_typo_score()
|
||||||
|
|
||||||
|
scoring = {
|
||||||
|
'section': section_id,
|
||||||
|
'id': id,
|
||||||
|
'category': category, # 채점 분류
|
||||||
|
'item': item, # 채점 항목
|
||||||
|
'right_answer': right_answer, # 정답
|
||||||
|
'actual_answer': actual_answer, # 실제 작성 답안
|
||||||
|
'points': points,
|
||||||
|
'deductions': [] # 각 기준별 감점 내역
|
||||||
|
}
|
||||||
|
|
||||||
|
# 점수 차감 조건
|
||||||
|
# 1. 정답이 실수형으로 반환받은 경우는 채점항목의 부분점수 합산 결과이므로
|
||||||
|
# 반환받은 값 그대로를 점수로 사용
|
||||||
|
# 2. 정답이 정수형(사이즈 비교)의 경우 오차범위를 넘는다면 감점
|
||||||
|
# 3. 그 외의 경우 정답과 실제 작성 답안이 다른 경우 점수 차감
|
||||||
|
if type(actual_answer) is float:
|
||||||
|
scoring['points'] = actual_answer
|
||||||
|
|
||||||
|
elif type(actual_answer) is int:
|
||||||
|
# 오차범위 3 이상이면 감점
|
||||||
|
if abs(actual_answer - right_answer) > 3:
|
||||||
|
scoring['points'] -= points
|
||||||
|
else:
|
||||||
|
# right_answer(JSON파일 내 valuer값) null일 경우 점수감점 없이 진행
|
||||||
|
if right_answer != actual_answer:
|
||||||
|
scoring['points'] -= points
|
||||||
|
|
||||||
|
results['score_results'].append(scoring)
|
||||||
|
total_score += scoring['points']
|
||||||
|
partial_score += scoring['points']
|
||||||
|
|
||||||
|
print(f'scoring: {scoring}')
|
||||||
|
|
||||||
|
results['partial_scores'].append({
|
||||||
|
'section': section_id,
|
||||||
|
'score': partial_score
|
||||||
|
})
|
||||||
|
results['total_score'] = total_score
|
||||||
|
return results
|
||||||
|
|
||||||
|
except ET.ParseError as e:
|
||||||
|
return {
|
||||||
|
'filename': os.path.basename(xml_file),
|
||||||
|
'error': f"XML 파싱 오류: {str(e)}",
|
||||||
|
'total_score': 0
|
||||||
|
}
|
||||||
|
|
||||||
|
def binary_to_chartxml(self, xml_path):
|
||||||
|
tree = ET.parse(xml_path)
|
||||||
|
root = tree.getroot()
|
||||||
|
|
||||||
|
binary_data = root.xpath('//BINDATA[@Id=//BINITEM[@Format="OLE"]/@BinData]/text()')
|
||||||
|
if not binary_data:
|
||||||
|
return None
|
||||||
|
binary_data = binary_data[0].encode('utf-8')
|
||||||
|
|
||||||
|
# <BINDATA ...> 태그와 그 내부 내용을 삭제합니다.
|
||||||
|
encoded_data = re.sub(b'<BINDATA.*?>', b'', binary_data)
|
||||||
|
encoded_data = encoded_data.replace(b'</BINDATA>', b'')
|
||||||
|
encoded_data = encoded_data.replace(b'\r\n', b'')
|
||||||
|
|
||||||
|
# base64 디코딩을 수행합니다.
|
||||||
|
decoded_data = base64.b64decode(encoded_data+b'==')
|
||||||
|
|
||||||
|
# 디코딩된 데이터 내용 중 xml 형식만 추출할 때 <c:chartSpace>, </c:chartSpace> 사이의 데이터만 추출.
|
||||||
|
start = decoded_data.find(b'<?xml')
|
||||||
|
print(start)
|
||||||
|
end = decoded_data.find(b'</c:chartSpace>')
|
||||||
|
print(end)
|
||||||
|
xml_data = decoded_data[start:end+len(b'</c:chartSpace>')]
|
||||||
|
|
||||||
|
# xml 데이터가 없는 경우 None을 반환합니다.
|
||||||
|
if -1 in [start, end]:
|
||||||
|
return None
|
||||||
|
|
||||||
|
# 디코딩된 데이터를 파일로 저장합니다.
|
||||||
|
base_filename = os.path.splitext(xml_path)[0]
|
||||||
|
new_filename = f'{base_filename}.xml'
|
||||||
|
with open(new_filename, 'wb') as file:
|
||||||
|
file.write(xml_data)
|
||||||
|
|
||||||
|
return xml_data
|
||||||
|
|
||||||
|
def typo_check(self, correct_answer_file, user_answer_file):
|
||||||
|
user_answer_tree = ET.parse(user_answer_file)
|
||||||
|
user_answer_root = user_answer_tree.getroot()
|
||||||
|
correct_answer_tree = ET.parse(correct_answer_file)
|
||||||
|
correct_answer_root = correct_answer_tree.getroot()
|
||||||
|
|
||||||
|
# xpath로 바이너리 부분추출
|
||||||
|
user_input_text = user_answer_root.xpath('//CHAR//text()[not(ancestor::HEADER) and not(ancestor::TABLE)]')
|
||||||
|
user_table_text = user_answer_root.xpath('//TABLE//CHAR//text()')
|
||||||
|
user_input_text += user_table_text
|
||||||
|
|
||||||
|
correct_input_text = correct_answer_root.xpath('//CHAR//text()[not(ancestor::HEADER) and not(ancestor::TABLE)]')
|
||||||
|
correct_table_text = correct_answer_root.xpath('//TABLE//CHAR//text()')
|
||||||
|
correct_input_text += correct_table_text
|
||||||
|
|
||||||
|
# 각 요소에서 공백 제거
|
||||||
|
user_input_text = [text.replace(' ', '') for text in user_input_text]
|
||||||
|
correct_input_text = [text.replace(' ', '') for text in correct_input_text]
|
||||||
|
|
||||||
|
|
||||||
|
# 숫자와 특정 형식 제거 (예: 1., 2., 3., -)
|
||||||
|
user_input_text = [re.sub(r'\d+\.\s*|-', '', text) for text in user_input_text]
|
||||||
|
correct_input_text = [re.sub(r'\d+\.\s*|-', '', text) for text in correct_input_text]
|
||||||
|
|
||||||
|
try :
|
||||||
|
xpath = self.scoring_criteria["2-29"]['path'].split("'")[1]
|
||||||
|
ignore_word = xpath.split("'")[1]
|
||||||
|
# 특정 단어 제거
|
||||||
|
# 오타와 누락의 경우만 판단하면 정상작동하지만
|
||||||
|
# 추가 된 단어의 경우를 채점기준에 추가하면 정확하게 채점 되지 않을 수 있음
|
||||||
|
# [정답] Hybrid [실제작성]
|
||||||
|
user_input_text = [text.replace(ignore_word, '') for text in user_input_text]
|
||||||
|
correct_input_text = [text.replace(ignore_word, '') for text in correct_input_text]
|
||||||
|
except (KeyError, IndexError, AttributeError):
|
||||||
|
ignore_word = None
|
||||||
|
|
||||||
|
print(f"ignore_word: {ignore_word}")
|
||||||
|
|
||||||
|
# 리스트를 하나의 문자열로 변경
|
||||||
|
user_input_text_str = ''.join(user_input_text)
|
||||||
|
currect_input_text_str = ''.join(correct_input_text)
|
||||||
|
|
||||||
|
print("user_input_text as string:")
|
||||||
|
print(user_input_text_str)
|
||||||
|
print("\ncurrect_input_text_answer as string:")
|
||||||
|
print(currect_input_text_str)
|
||||||
|
|
||||||
|
|
||||||
|
# 문자열의 차이를 비교
|
||||||
|
diff = difflib.ndiff(currect_input_text_str, user_input_text_str)
|
||||||
|
diff_list = list(diff)
|
||||||
|
|
||||||
|
# 차이점을 정리하여 result_diff에 저장
|
||||||
|
result_diff = []
|
||||||
|
|
||||||
|
# 누락 된 단어만 따로 리스트로 저장
|
||||||
|
missing_list = []
|
||||||
|
|
||||||
|
# 오타와 누락된 단어 리스트 저장
|
||||||
|
error_missing_list = []
|
||||||
|
|
||||||
|
skip_next = False
|
||||||
|
|
||||||
|
for i, line in enumerate(diff_list):
|
||||||
|
if skip_next:
|
||||||
|
skip_next = False
|
||||||
|
continue
|
||||||
|
# diff_list의 line 시작이 '-'이면서 다음 line이 '+'이면 두 line을 붙여서 맞춤법이 틀린 단어로 판단
|
||||||
|
if line.startswith('- '):
|
||||||
|
# 오타
|
||||||
|
if i + 1 < len(diff_list) and diff_list[i + 1].startswith('+ '):
|
||||||
|
line = line.replace('- ', '-')
|
||||||
|
next = diff_list[i + 1].replace('+ ', '')
|
||||||
|
result_diff.append(line+'=>'+next)
|
||||||
|
error_missing_list.append(line+'=>'+next)
|
||||||
|
skip_next = True
|
||||||
|
# 누락
|
||||||
|
else:
|
||||||
|
line = line.replace('- ', '-')
|
||||||
|
result_diff.append(line)
|
||||||
|
missing_list.append(line)
|
||||||
|
error_missing_list.append(line)
|
||||||
|
# 없어도 되는 글자가 있는 경우 (추가)
|
||||||
|
elif line.startswith('+ '):
|
||||||
|
line = line.replace('+ ', '+')
|
||||||
|
result_diff.append(line)
|
||||||
|
|
||||||
|
# result_diff 출력
|
||||||
|
# print("\nResult Differences:")
|
||||||
|
# for diff in result_diff:
|
||||||
|
# print(diff)
|
||||||
|
|
||||||
|
# result_diff 배열의 길이를 맨 앞에 저장
|
||||||
|
|
||||||
|
# 모든 차이를 계산해 점수 차감
|
||||||
|
# temp = 40 - min(len(result_diff)*2, 40)
|
||||||
|
|
||||||
|
# 누락된 텍스트만 계산해 점수 차감
|
||||||
|
# temp = 40 - min(len(missing_list)*2, 40)
|
||||||
|
|
||||||
|
# 2503회 기준 오타 1개당 [2점]->[1점] 차감
|
||||||
|
temp = 40 - min(len(error_missing_list)*1, 40)
|
||||||
|
|
||||||
|
self.set_typo_score(temp)
|
||||||
|
|
||||||
|
result_diff.insert(0, temp)
|
||||||
|
return result_diff
|
||||||
|
|
||||||
|
# XML 파일 채점
|
||||||
|
def score_directory(self, xml_directory, correct_answer_file):
|
||||||
|
# xml 파일 불러오기
|
||||||
|
xml_files = Path(xml_directory).glob('*.hml')
|
||||||
|
|
||||||
|
# 결과 저장할 리스트
|
||||||
|
results = []
|
||||||
|
|
||||||
|
for user_answer_file in xml_files:
|
||||||
|
result = {}
|
||||||
|
chart_xml = self.binary_to_chartxml(user_answer_file)
|
||||||
|
result['typo'] = self.typo_check(correct_answer_file, user_answer_file)
|
||||||
|
result['score'] = self._score_xml_file(user_answer_file, chart_xml)
|
||||||
|
# result['score']['score_results'][2]['points'] = result['typo'][0]
|
||||||
|
results.append(result)
|
||||||
|
return results
|
||||||
|
|
||||||
|
def parse_filename(self, filename):
|
||||||
|
if isinstance(filename, dict):
|
||||||
|
filename = filename.get('파일명', '')
|
||||||
|
match = re.match(r'.*-(\d+)-(.+)\.hml', filename)
|
||||||
|
if match:
|
||||||
|
number = match.group(1)
|
||||||
|
name = match.group(2)
|
||||||
|
return number, name
|
||||||
|
|
||||||
|
return None, None
|
||||||
|
|
||||||
|
def export_to_excel(self, results, output_path=None):
|
||||||
|
if output_path is None:
|
||||||
|
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") #연월일_시분초
|
||||||
|
# timestamp = datetime.now().strftime("%Y%m%d") #연월일
|
||||||
|
output_path = f"scoring_results_{timestamp}.xlsx"
|
||||||
|
|
||||||
|
summary_data = []
|
||||||
|
detail_data = []
|
||||||
|
typo_data = []
|
||||||
|
|
||||||
|
for temp in results:
|
||||||
|
# 요약 정보
|
||||||
|
result = temp['score']
|
||||||
|
summary_row = {
|
||||||
|
'파일명': result['filename'],
|
||||||
|
'총점': result.get('total_score', 0)
|
||||||
|
}
|
||||||
|
if 'error' in result:
|
||||||
|
summary_row['오류'] = result['error']
|
||||||
|
|
||||||
|
summary_data.append(summary_row)
|
||||||
|
|
||||||
|
# 상세 정보
|
||||||
|
if 'score_results' in result:
|
||||||
|
filename = {'파일명': result['filename']}
|
||||||
|
number, name = self.parse_filename(filename)
|
||||||
|
if (number or name) is None:
|
||||||
|
detail_row = {'채점항목': result['filename'] }
|
||||||
|
else:
|
||||||
|
detail_row = {'채점항목':f"{number}-{name}"}
|
||||||
|
|
||||||
|
section_num = None
|
||||||
|
row_index = []
|
||||||
|
for i, score_result in enumerate(result['score_results']):
|
||||||
|
current_section = score_result['section']
|
||||||
|
|
||||||
|
if section_num is None:
|
||||||
|
section_num = current_section
|
||||||
|
|
||||||
|
# 다음 섹션(문제0 => 문제1)로 넘어갔을 경우 or 마지막 문제일 경우
|
||||||
|
if current_section != section_num:
|
||||||
|
# 이전 섹션의 부분합을 출력
|
||||||
|
detail_row[f'문제{section_num}'] = result['partial_scores'][int(section_num)]['score']
|
||||||
|
row_index.append(f'문제{section_num}')
|
||||||
|
section_num = current_section
|
||||||
|
|
||||||
|
detail_row[f'{i+1}'] = score_result['points']
|
||||||
|
row_index.append(score_result['id'])
|
||||||
|
|
||||||
|
# 마지막 섹션(문제2)부분합 점수를 출력
|
||||||
|
if i == len(result['score_results']) - 1:
|
||||||
|
detail_row[f'문제{current_section}'] = result['partial_scores'][int(current_section)]['score']
|
||||||
|
row_index.append(f'문제{current_section}')
|
||||||
|
|
||||||
|
detail_row['총점'] = result.get('total_score', 0)
|
||||||
|
row_index.append('총점')
|
||||||
|
detail_data.append(detail_row)
|
||||||
|
|
||||||
|
summary_df = pd.DataFrame(summary_data)
|
||||||
|
detail_df = pd.DataFrame(detail_data).transpose()
|
||||||
|
detail_df.columns = detail_df.iloc[0]
|
||||||
|
detail_df = detail_df[1:]
|
||||||
|
|
||||||
|
detail_df.index = row_index
|
||||||
|
# detail_df = pd.DataFrame(detail_data)
|
||||||
|
|
||||||
|
for temp in results:
|
||||||
|
result = temp['typo']
|
||||||
|
typo_data.append(result)
|
||||||
|
|
||||||
|
typo_df = pd.DataFrame(typo_data).transpose()
|
||||||
|
# detail_df = pd.DataFrame(detail_data)
|
||||||
|
|
||||||
|
# ExcelWriter 객체 생성
|
||||||
|
with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
|
||||||
|
summary_df.to_excel(writer, sheet_name='채점결과요약', index=False)
|
||||||
|
detail_df.to_excel(writer, sheet_name='채점상세내역', index=True)
|
||||||
|
typo_df.to_excel(writer, sheet_name='오타내역', index=False)
|
||||||
|
|
||||||
|
# 열 너비 자동 조정
|
||||||
|
# for sheet_name in writer.sheets:
|
||||||
|
# worksheet = writer.sheets[sheet_name]
|
||||||
|
# for column_cells in worksheet.columns:
|
||||||
|
# max_length = 0
|
||||||
|
# column = column_cells[0].column_letter # 열의 문자
|
||||||
|
# for cell in column_cells:
|
||||||
|
# try:
|
||||||
|
# if cell.value:
|
||||||
|
# max_length = max(max_length, len(str(cell.value)))
|
||||||
|
# except:
|
||||||
|
# pass
|
||||||
|
# adjusted_width = (max_length + 2)
|
||||||
|
# worksheet.column_dimensions[column].width = adjusted_width
|
||||||
|
|
||||||
|
return output_path
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
|
||||||
|
# 시험회차 및 유형
|
||||||
|
exam_round = '2503'
|
||||||
|
exam_types = [
|
||||||
|
'A',
|
||||||
|
'B',
|
||||||
|
'C',
|
||||||
|
]
|
||||||
|
# test_mode = False
|
||||||
|
test_mode = True
|
||||||
|
|
||||||
|
output_excel_paths = []
|
||||||
|
for exam_type in exam_types:
|
||||||
|
scoring_criteria_path = f'./DIW_{exam_round}{exam_type}.json'
|
||||||
|
# xml(hml)파일 디렉토리 경로
|
||||||
|
|
||||||
|
xml_directory = f'./output/{exam_type}/{"TEST" if test_mode else "DIW"}'
|
||||||
|
|
||||||
|
|
||||||
|
# 오탈자 체크를 위한 정답 파일 경로 (형식:DIW_2503A.hml)
|
||||||
|
correct_answer_file = f'./output/{exam_type}/DIW/DIW_{exam_round}{exam_type}.hml'
|
||||||
|
|
||||||
|
# 엑셀 파일명 (비어있으면 자동생성)
|
||||||
|
timestamp = datetime.now().strftime("%y%m%d")
|
||||||
|
output_path = f'{timestamp}_DIW_{exam_round}{exam_type}_{"TEST" if test_mode else "채점결과"}.xlsx'
|
||||||
|
|
||||||
|
# 채점 클래스 초기화
|
||||||
|
scorer = XMLScorer(scoring_criteria_path)
|
||||||
|
|
||||||
|
# 폴더 내 모든 xml 파일 채점
|
||||||
|
results = scorer.score_directory(xml_directory, correct_answer_file)
|
||||||
|
|
||||||
|
# 채점 결과 엑셀로 저장
|
||||||
|
output_excel_paths.append(scorer.export_to_excel(results, output_path))
|
||||||
|
|
||||||
|
print(f"채점 결과 엑셀 파일: {output_excel_paths}")
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
Binary file not shown.
Binary file not shown.
64
score5.py
64
score5.py
@@ -139,7 +139,7 @@ class XMLScorer:
|
|||||||
else:
|
else:
|
||||||
chart_tree = ET.fromstring(chart_xml)
|
chart_tree = ET.fromstring(chart_xml)
|
||||||
|
|
||||||
total_score = 0
|
total_score = 0
|
||||||
partial_score = 0
|
partial_score = 0
|
||||||
previous_first_digit = None
|
previous_first_digit = None
|
||||||
|
|
||||||
@@ -308,29 +308,29 @@ class XMLScorer:
|
|||||||
|
|
||||||
return xml_data
|
return xml_data
|
||||||
|
|
||||||
def typo_check(self, xml_path_origin, xml_path):
|
def typo_check(self, correct_answer_file, user_answer_file):
|
||||||
tree = ET.parse(xml_path)
|
user_answer_tree = ET.parse(user_answer_file)
|
||||||
root = tree.getroot()
|
user_answer_root = user_answer_tree.getroot()
|
||||||
tree_origin = ET.parse(xml_path_origin)
|
correct_answer_tree = ET.parse(correct_answer_file)
|
||||||
root_origin = tree_origin.getroot()
|
correct_answer_root = correct_answer_tree.getroot()
|
||||||
|
|
||||||
# xpath로 바이너리 부분추출
|
# xpath로 바이너리 부분추출
|
||||||
input_text = root.xpath('//CHAR//text()[not(ancestor::HEADER) and not(ancestor::TABLE)]')
|
user_input_text = user_answer_root.xpath('//CHAR//text()[not(ancestor::HEADER) and not(ancestor::TABLE)]')
|
||||||
table_text = root.xpath('//TABLE//CHAR//text()')
|
user_table_text = user_answer_root.xpath('//TABLE//CHAR//text()')
|
||||||
input_text += table_text
|
user_input_text += user_table_text
|
||||||
|
|
||||||
input_text_origin = root_origin.xpath('//CHAR//text()[not(ancestor::HEADER) and not(ancestor::TABLE)]')
|
correct_input_text = correct_answer_root.xpath('//CHAR//text()[not(ancestor::HEADER) and not(ancestor::TABLE)]')
|
||||||
table_text_origin = root_origin.xpath('//TABLE//CHAR//text()')
|
correct_table_text = correct_answer_root.xpath('//TABLE//CHAR//text()')
|
||||||
input_text_origin += table_text_origin
|
correct_input_text += correct_table_text
|
||||||
|
|
||||||
# 각 요소에서 공백 제거
|
# 각 요소에서 공백 제거
|
||||||
input_text = [text.replace(' ', '') for text in input_text]
|
user_input_text = [text.replace(' ', '') for text in user_input_text]
|
||||||
input_text_origin = [text.replace(' ', '') for text in input_text_origin]
|
correct_input_text = [text.replace(' ', '') for text in correct_input_text]
|
||||||
|
|
||||||
|
|
||||||
# 숫자와 특정 형식 제거 (예: 1., 2., 3., -)
|
# 숫자와 특정 형식 제거 (예: 1., 2., 3., -)
|
||||||
input_text = [re.sub(r'\d+\.\s*|-', '', text) for text in input_text]
|
user_input_text = [re.sub(r'\d+\.\s*|-', '', text) for text in user_input_text]
|
||||||
input_text_origin = [re.sub(r'\d+\.\s*|-', '', text) for text in input_text_origin]
|
correct_input_text = [re.sub(r'\d+\.\s*|-', '', text) for text in correct_input_text]
|
||||||
|
|
||||||
ignore_word = self.scoring_criteria["2-29"]['path'].split("'")[1]
|
ignore_word = self.scoring_criteria["2-29"]['path'].split("'")[1]
|
||||||
print(f"ignore_word: {ignore_word}")
|
print(f"ignore_word: {ignore_word}")
|
||||||
@@ -338,21 +338,21 @@ class XMLScorer:
|
|||||||
# 오타와 누락의 경우만 판단하면 정상작동하지만
|
# 오타와 누락의 경우만 판단하면 정상작동하지만
|
||||||
# 추가 된 단어의 경우를 채점기준에 추가하면 정확하게 채점 되지 않을 수 있음
|
# 추가 된 단어의 경우를 채점기준에 추가하면 정확하게 채점 되지 않을 수 있음
|
||||||
# [정답] Hybrid [실제작성]
|
# [정답] Hybrid [실제작성]
|
||||||
input_text = [text.replace(ignore_word, '') for text in input_text]
|
user_input_text = [text.replace(ignore_word, '') for text in user_input_text]
|
||||||
input_text_origin = [text.replace(ignore_word, '') for text in input_text_origin]
|
correct_input_text = [text.replace(ignore_word, '') for text in correct_input_text]
|
||||||
|
|
||||||
# 리스트를 하나의 문자열로 변경
|
# 리스트를 하나의 문자열로 변경
|
||||||
input_text_str = ''.join(input_text)
|
user_input_text_str = ''.join(user_input_text)
|
||||||
input_text_origin_str = ''.join(input_text_origin)
|
currect_input_text_str = ''.join(correct_input_text)
|
||||||
|
|
||||||
print("input_text as string:")
|
print("user_input_text as string:")
|
||||||
print(input_text_str)
|
print(user_input_text_str)
|
||||||
print("\ninput_text_origin as string:")
|
print("\ncurrect_input_text_answer as string:")
|
||||||
print(input_text_origin_str)
|
print(currect_input_text_str)
|
||||||
|
|
||||||
|
|
||||||
# 문자열의 차이를 비교
|
# 문자열의 차이를 비교
|
||||||
diff = difflib.ndiff(input_text_origin_str, input_text_str)
|
diff = difflib.ndiff(currect_input_text_str, user_input_text_str)
|
||||||
diff_list = list(diff)
|
diff_list = list(diff)
|
||||||
|
|
||||||
# 차이점을 정리하여 result_diff에 저장
|
# 차이점을 정리하여 result_diff에 저장
|
||||||
@@ -412,18 +412,18 @@ class XMLScorer:
|
|||||||
return result_diff
|
return result_diff
|
||||||
|
|
||||||
# XML 파일 채점
|
# XML 파일 채점
|
||||||
def score_directory(self, xml_directory, answer_path):
|
def score_directory(self, xml_directory, correct_answer_file):
|
||||||
# xml 파일 불러오기
|
# xml 파일 불러오기
|
||||||
xml_files = Path(xml_directory).glob('*.hml')
|
xml_files = Path(xml_directory).glob('*.hml')
|
||||||
|
|
||||||
# 결과 저장할 리스트
|
# 결과 저장할 리스트
|
||||||
results = []
|
results = []
|
||||||
|
|
||||||
for xml_file in xml_files:
|
for user_answer_file in xml_files:
|
||||||
result = {}
|
result = {}
|
||||||
chart_xml = self.binary_to_chartxml(xml_file)
|
chart_xml = self.binary_to_chartxml(user_answer_file)
|
||||||
result['typo'] = self.typo_check(answer_path, xml_file)
|
result['typo'] = self.typo_check(correct_answer_file, user_answer_file)
|
||||||
result['score'] = self._score_xml_file(xml_file, chart_xml)
|
result['score'] = self._score_xml_file(user_answer_file, chart_xml)
|
||||||
# result['score']['score_results'][2]['points'] = result['typo'][0]
|
# result['score']['score_results'][2]['points'] = result['typo'][0]
|
||||||
results.append(result)
|
results.append(result)
|
||||||
return results
|
return results
|
||||||
@@ -559,7 +559,7 @@ def main():
|
|||||||
|
|
||||||
|
|
||||||
# 오탈자 체크를 위한 정답 파일 경로 (형식:DIW_2503A.hml)
|
# 오탈자 체크를 위한 정답 파일 경로 (형식:DIW_2503A.hml)
|
||||||
answer_path = f'./output/{exam_type}/DIW/DIW_{exam_round}{exam_type}.hml'
|
correct_answer_file = f'./output/{exam_type}/DIW/DIW_{exam_round}{exam_type}.hml'
|
||||||
|
|
||||||
# 엑셀 파일명 (비어있으면 자동생성)
|
# 엑셀 파일명 (비어있으면 자동생성)
|
||||||
timestamp = datetime.now().strftime("%y%m%d")
|
timestamp = datetime.now().strftime("%y%m%d")
|
||||||
@@ -569,7 +569,7 @@ def main():
|
|||||||
scorer = XMLScorer(scoring_criteria_path)
|
scorer = XMLScorer(scoring_criteria_path)
|
||||||
|
|
||||||
# 폴더 내 모든 xml 파일 채점
|
# 폴더 내 모든 xml 파일 채점
|
||||||
results = scorer.score_directory(xml_directory, answer_path)
|
results = scorer.score_directory(xml_directory, correct_answer_file)
|
||||||
|
|
||||||
# 채점 결과 엑셀로 저장
|
# 채점 결과 엑셀로 저장
|
||||||
output_excel_paths.append(scorer.export_to_excel(results, output_path))
|
output_excel_paths.append(scorer.export_to_excel(results, output_path))
|
||||||
|
|||||||
855
회차별채점자료/2503/json_채점기준표/0402/DIW_2503A.json
Normal file
855
회차별채점자료/2503/json_채점기준표/0402/DIW_2503A.json
Normal file
@@ -0,0 +1,855 @@
|
|||||||
|
{
|
||||||
|
"0-0": {
|
||||||
|
"path": "",
|
||||||
|
"path2": "",
|
||||||
|
"points": 0,
|
||||||
|
"category": "파일저장",
|
||||||
|
"item": "파일명 (수검번호.hwp/hwpx)"
|
||||||
|
},
|
||||||
|
"0-1": {
|
||||||
|
"path": "boolean(//PAGEMARGIN[(@Bottom='5668'or @Bottom='5669') and (@Footer='2834' or @Footer='2835') and @Gutter='0' and (@Header='2834' or @Header='2835') and (@Left='5668' or @Left='5669') and (@Right='5668' or @Right='5669') and (@Top='5668' or @Top='5669')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "용지설정",
|
||||||
|
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
|
||||||
|
},
|
||||||
|
"0-2": {
|
||||||
|
"path": "boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "기본설정",
|
||||||
|
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
|
||||||
|
},
|
||||||
|
"0-3": {
|
||||||
|
"path": "",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": null,
|
||||||
|
"points": 40,
|
||||||
|
"category": "오타감점",
|
||||||
|
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
|
||||||
|
},
|
||||||
|
"1-1": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경이동수단컨퍼런스",
|
||||||
|
"value": "견고딕",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (친환경이동수단컨퍼런스)/① 글씨체 (견고딕)"
|
||||||
|
},
|
||||||
|
"1-2": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경이동수단컨퍼런스",
|
||||||
|
"value": "9920305",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (친환경이동수단컨퍼런스)/② 채우기 : 색상(RGB:49,95,151)"
|
||||||
|
},
|
||||||
|
"1-3": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경이동수단컨퍼런스",
|
||||||
|
"value": 28346,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (친환경이동수단컨퍼런스)/③ 크기-너비 (100mm)"
|
||||||
|
},
|
||||||
|
"1-4": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경이동수단컨퍼런스",
|
||||||
|
"value": 5669,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (친환경이동수단컨퍼런스)/④ 크기-높이 (20mm)"
|
||||||
|
},
|
||||||
|
"1-5": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경이동수단컨퍼런스",
|
||||||
|
"value": "true",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (친환경이동수단컨퍼런스)/⑤ 위치 (글자처럼 취급)"
|
||||||
|
},
|
||||||
|
"1-6": {
|
||||||
|
"path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경이동수단컨퍼런스",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (친환경이동수단컨퍼런스)/⑥ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-7": {
|
||||||
|
"path": "boolean(//TEXTART[@Text='{searchValue}'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경이동수단컨퍼런스",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (친환경이동수단컨퍼런스)/⑦ 글맵시모양 (육안확인)"
|
||||||
|
},
|
||||||
|
"1-8": {
|
||||||
|
"path": "boolean(//RECTANGLE[.//CHAR[text()='지']][.//SIZE[(@Height >= 2600 and @Height <= 2800)and(@Width >= 2600 and @Width <= 2800)]])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "지/① 모양 (2줄)"
|
||||||
|
},
|
||||||
|
"1-9": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TEXT[CHAR[text()='지']]/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "궁서체",
|
||||||
|
"points": 1,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "지/② 글씨체 (궁서체)"
|
||||||
|
},
|
||||||
|
"1-10": {
|
||||||
|
"path": "//RECTANGLE[.//CHAR[text()='지']]//WINDOWBRUSH/@FaceColor",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "3644265",
|
||||||
|
"points": 2,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "지/③ 면색 : 색상(RGB:105,155,55)"
|
||||||
|
},
|
||||||
|
"1-11": {
|
||||||
|
"path": "//RECTANGLE[.//CHAR[text()='지']]//OUTSIDEMARGIN/@Right",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "850",
|
||||||
|
"points": 2,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "지/④ 본문과의 간격 : 3.0mm"
|
||||||
|
},
|
||||||
|
"1-12": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][ITALIC])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "전 세계적으로 차량의 수는 약 13억 대가 있고 국내는 약 2,500만 대",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (전 세계적으로 차량의 수는 약 13억 대가 있고 국내는 약 2,500만 대)/① 기울임"
|
||||||
|
},
|
||||||
|
"1-13": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][UNDERLINE])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "전 세계적으로 차량의 수는 약 13억 대가 있고 국내는 약 2,500만 대",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (전 세계적으로 차량의 수는 약 13억 대가 있고 국내는 약 2,500만 대)/② 밑줄"
|
||||||
|
},
|
||||||
|
"1-14": {
|
||||||
|
"path": "count(//CHAR[contains(text(),'☆')]) + count(//CHAR[contains(text(),'※')])",
|
||||||
|
"path2": "string-length(//CHAR[contains(text(),'☆')]) - string-length(translate(//CHAR[contains(text(),'☆')], '☆', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 3,
|
||||||
|
"points": 3,
|
||||||
|
"category": "특수문자",
|
||||||
|
"item": "① ☆, ② ☆, ③ ※"
|
||||||
|
},
|
||||||
|
"1-15": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "☆ 행사안내 ☆",
|
||||||
|
"value": "궁서",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (☆ 행사안내 ☆)/① 글씨체 (궁서)"
|
||||||
|
},
|
||||||
|
"1-16": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "☆ 행사안내 ☆",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (☆ 행사안내 ☆)/② 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-17": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][BOLD])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2025. 03. 27.(목) 24:00까지",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2025. 03. 27.(목) 24:00까지)/① 진하게"
|
||||||
|
},
|
||||||
|
"1-18": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][UNDERLINE])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2025. 03. 27.(목) 24:00까지",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2025. 03. 27.(목) 24:00까지)/② 밑줄"
|
||||||
|
},
|
||||||
|
"1-19": {
|
||||||
|
"path": "boolean(//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Left=3000 and //PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Indent=-2400)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "기타사항",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "문단모양",
|
||||||
|
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)"
|
||||||
|
},
|
||||||
|
"1-20": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2025. 03. 22.",
|
||||||
|
"value": 1300,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2025. 03. 22.)/① 크기 (13pt)"
|
||||||
|
},
|
||||||
|
"1-21": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2025. 03. 22.",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2025. 03. 22.)/② 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-22": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한국육상운송협회",
|
||||||
|
"value": "굴림체",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (한국육상운송협회)/① 글씨체 (굴림체)"
|
||||||
|
},
|
||||||
|
"1-23": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한국육상운송협회",
|
||||||
|
"value": 2400,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (한국육상운송협회)/② 크기 (24pt)"
|
||||||
|
},
|
||||||
|
"1-24": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한국육상운송협회",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (한국육상운송협회)/③ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-25": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "DIAT",
|
||||||
|
"value": "돋움",
|
||||||
|
"points": 1,
|
||||||
|
"category": "머리말",
|
||||||
|
"item": "문구 (DIAT)/① 글꼴 (돋움)"
|
||||||
|
},
|
||||||
|
"1-26": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "DIAT",
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "머리말",
|
||||||
|
"item": "문구 (DIAT)/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"1-27": {
|
||||||
|
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "DIAT",
|
||||||
|
"value": "Right",
|
||||||
|
"points": 1,
|
||||||
|
"category": "머리말",
|
||||||
|
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
|
||||||
|
},
|
||||||
|
"1-28": {
|
||||||
|
"path": "//PAGENUM/@FormatType",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "LatinCapital",
|
||||||
|
"points": 2,
|
||||||
|
"category": "쪽번호",
|
||||||
|
"item": "① 쪽 번호 매기기 (A,B,C 순으로)"
|
||||||
|
},
|
||||||
|
"1-29": {
|
||||||
|
"path": "//PAGENUM/@Pos",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "BottomCenter",
|
||||||
|
"points": 2,
|
||||||
|
"category": "쪽번호",
|
||||||
|
"item": "② 가운데 아래"
|
||||||
|
},
|
||||||
|
"1-30": {
|
||||||
|
"path": "not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!='180'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "줄간격",
|
||||||
|
"item": "문제 1 줄간격 180% 설정"
|
||||||
|
},
|
||||||
|
"2-01": {
|
||||||
|
"path": "boolean(//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside='true' and //BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim')",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "쪽 테두리",
|
||||||
|
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
|
||||||
|
},
|
||||||
|
"2-02": {
|
||||||
|
"path": "count(//SECTION)>1",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "다단",
|
||||||
|
"item": "① 구역나누기"
|
||||||
|
},
|
||||||
|
"2-03": {
|
||||||
|
"path": "//COLDEF/@Count>1",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "다단",
|
||||||
|
"item": "② 다단 2단"
|
||||||
|
},
|
||||||
|
"2-04": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": 19842,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/① 크기-너비 (70mm)"
|
||||||
|
},
|
||||||
|
"2-05": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": 3401,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/② 크기-높이 (12mm)"
|
||||||
|
},
|
||||||
|
"2-06": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": "DoubleSlim",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/③ 테두리 (이중실선(1.00mm))"
|
||||||
|
},
|
||||||
|
"2-07": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": 50,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/④ 글상자 모서리 (반원)"
|
||||||
|
},
|
||||||
|
"2-08": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": "9537333",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/⑤ 채우기 : 색상(RGB:53,135,145)"
|
||||||
|
},
|
||||||
|
"2-09": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": "true",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/⑥ 글상자 위치 (글자처럼 취급)"
|
||||||
|
},
|
||||||
|
"2-10": {
|
||||||
|
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/⑦ 글상자 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-11": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": "맑은 고딕",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/⑧ 글씨체 (맑은 고딕)"
|
||||||
|
},
|
||||||
|
"2-12": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='2400')",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/⑨ 글씨크기 (24pt)"
|
||||||
|
},
|
||||||
|
"2-13": {
|
||||||
|
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "친환경 이동수단",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (친환경 이동수단)/⑩ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-14": {
|
||||||
|
"path": "boolean(//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "원본 그림의 이름: 그림",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "① 파일명 \"그림A.jpg\" 삽입"
|
||||||
|
},
|
||||||
|
"2-15": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 24094,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "② 크기-너비 (85mm)"
|
||||||
|
},
|
||||||
|
"2-16": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 11338,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "③ 크기-높이 (40mm)"
|
||||||
|
},
|
||||||
|
"2-17": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@HorzOffset",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 0,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
|
||||||
|
},
|
||||||
|
"2-18": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 6236,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22mm)"
|
||||||
|
},
|
||||||
|
"2-19": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "1. 친환경 자동차",
|
||||||
|
"value": "궁서",
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구① (1. 친환경 자동차)/① 글씨체 (궁서)"
|
||||||
|
},
|
||||||
|
"2-20": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "1. 친환경 자동차",
|
||||||
|
"value": 1200,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구① (1. 친환경 자동차)/② 크기 (12pt)"
|
||||||
|
},
|
||||||
|
"2-21": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "1. 친환경 자동차",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구① (1. 친환경 자동차)/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-22": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2. 친환경 자동차 보급 추이",
|
||||||
|
"value": "궁서",
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구② (2. 친환경 자동차 보급 추이)/① 글씨체 (궁서)"
|
||||||
|
},
|
||||||
|
"2-23": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2. 친환경 자동차 보급 추이",
|
||||||
|
"value": 1200,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구② (2. 친환경 자동차 보급 추이)/② 크기 (12pt)"
|
||||||
|
},
|
||||||
|
"2-24": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2. 친환경 자동차 보급 추이",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구② (2. 친환경 자동차 보급 추이)/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-25": {
|
||||||
|
"path":"boolean(//CHAR[contains(text(),'자동차 탄소발자국')]/ancestor::TEXT/FOOTNOTE/descendant::CHAR)",
|
||||||
|
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('자동차 탄소발자국') + 1) = '자동차 탄소발자국']/following-sibling::FOOTNOTE/descendant::CHAR)",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (자동차 탄소발자국)/① 각주 설정 및 문구 입력"
|
||||||
|
},
|
||||||
|
"2-26": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 생애에서 배출하는 이산화탄소의 총량",
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (자동차 탄소발자국)/② 글씨체 (굴림)"
|
||||||
|
},
|
||||||
|
"2-27": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 생애에서 배출하는 이산화탄소의 총량",
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (자동차 탄소발자국)/③ 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-28": {
|
||||||
|
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 생애에서 배출하는 이산화탄소의 총량",
|
||||||
|
"value": "CircledHangulSyllable",
|
||||||
|
"points": 2,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (자동차 탄소발자국)/④ 각주 번호모양"
|
||||||
|
},
|
||||||
|
"2-29": {
|
||||||
|
"path": "boolean(//CHAR[contains(text(),'Hybrid')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "영단어",
|
||||||
|
"item": "Hybrid/영단어 미입력, 대소문자/오타 시 전체 감점"
|
||||||
|
},
|
||||||
|
"2-30": {
|
||||||
|
"path": "(count(//CHAR[contains(text(),'전지')][contains(text(),'電池')])+count(//CHAR[contains(text(),'유해')][contains(text(),'有害')])+count(//CHAR[contains(text(),'내연')][contains(text(),'內燃')])+count(//CHAR[contains(text(),'이륜차')][contains(text(),'二輪車')])+count(//CHAR[contains(text(),'기타')][contains(text(),'其他')]))*2",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 10,
|
||||||
|
"points": 10,
|
||||||
|
"category": "한자",
|
||||||
|
"item": "① 전지(電池), ② 유해(有害), ③내연(內燃), ④ 이륜차(二輪車), ⑤ 기타(其他)"
|
||||||
|
},
|
||||||
|
"2-31": {
|
||||||
|
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'터를독립')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "편집",
|
||||||
|
"item": "문구 (…내장된 전기모터이 독립적으로 또는 병행해서…)/\"이\" → \"를\" 글자바꿈"
|
||||||
|
},
|
||||||
|
"2-32": {
|
||||||
|
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'면서환경')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "편집",
|
||||||
|
"item": "문구 (…주행하는 방식으로 환경에 주행하면서 유해(有害)한 물질을…)/\"환경에\" / \"주행하면서\" 순서바꿈"
|
||||||
|
},
|
||||||
|
"2-33": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 증가 추이",
|
||||||
|
"value": "돋움",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (자동차 증가 추이)/① 글씨체 (돋움)"
|
||||||
|
},
|
||||||
|
"2-34": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 증가 추이",
|
||||||
|
"value": 1200,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (자동차 증가 추이)/② 크기 (12pt)"
|
||||||
|
},
|
||||||
|
"2-35": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 증가 추이",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (자동차 증가 추이)/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-36": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 증가 추이",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (자동차 증가 추이)/④ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-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='2']/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "7034570",
|
||||||
|
"points": 2,
|
||||||
|
"category": "표",
|
||||||
|
"item": "위쪽 제목 셀/① 색상(RGB:202,86,107)"
|
||||||
|
},
|
||||||
|
"2-38": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "위쪽 제목 셀/② 진하게"
|
||||||
|
},
|
||||||
|
"2-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='2']/@BorderFill]/BOTTOMBORDER/@Type",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "DoubleSlim",
|
||||||
|
"points": 2,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 셀 아래선/① 이중실선"
|
||||||
|
},
|
||||||
|
"2-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='2']/@BorderFill]/BOTTOMBORDER/@Width",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "0.5mm",
|
||||||
|
"points": 2,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 셀 아래선/② 0.5mm"
|
||||||
|
},
|
||||||
|
"2-41": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "궁서체",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "글자모양/① 글씨체 (궁서체)"
|
||||||
|
},
|
||||||
|
"2-42": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1000,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "글자모양/② 크기 (10pt)"
|
||||||
|
},
|
||||||
|
"2-43": {
|
||||||
|
"path": "//PARASHAPE[@Id=//TABLE/ROW/descendant::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "글자모양/③ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-44": {
|
||||||
|
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=SUM') and substring(@Command, string-length(@Command) - 2) = '290'] and //TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=SUM') and substring(@Command, string-length(@Command) - 2) = '190'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "표",
|
||||||
|
"item": "블록계산식/합계"
|
||||||
|
},
|
||||||
|
"2-45": {
|
||||||
|
"path": "boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "① 종류 (묶은세로막대형)"
|
||||||
|
},
|
||||||
|
"2-46": {
|
||||||
|
"path": "//c:valAx/c:majorTickMark/@val",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "out",
|
||||||
|
"points": 2,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "② 값 축 주 눈금선"
|
||||||
|
},
|
||||||
|
"2-47": {
|
||||||
|
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 22677,
|
||||||
|
"points": 2,
|
||||||
|
"category": "차트",
|
||||||
|
"item": "③ 크기-너비 (80mm)"
|
||||||
|
},
|
||||||
|
"2-48": {
|
||||||
|
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 25511,
|
||||||
|
"points": 2,
|
||||||
|
"category": "차트",
|
||||||
|
"item": "④ 크기-높이 (90mm)"
|
||||||
|
},
|
||||||
|
"2-49": {
|
||||||
|
"path": "//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)"
|
||||||
|
},
|
||||||
|
"2-50": {
|
||||||
|
"path": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 증가 추이",
|
||||||
|
"value": "바탕체",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "제목 문구 (자동차 증가 추이) : 제목 문구 불일치는 오타감점에서 반영/① 글씨체 (바탕체)"
|
||||||
|
},
|
||||||
|
"2-51": {
|
||||||
|
"path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 증가 추이",
|
||||||
|
"value": 1300,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "제목 문구 (자동차 증가 추이) : 제목 문구 불일치는 오타감점에서 반영/② 크기 (13pt)"
|
||||||
|
},
|
||||||
|
"2-52": {
|
||||||
|
"path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@b",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자동차 증가 추이",
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "제목 문구 (자동차 증가 추이) : 제목 문구 불일치는 오타감점에서 반영/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-53": {
|
||||||
|
"path": "//c:catAx//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "X축/① 글꼴 (굴림)"
|
||||||
|
},
|
||||||
|
"2-54": {
|
||||||
|
"path": "//c:catAx//a:defRPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "X축/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-55": {
|
||||||
|
"path": "//c:catAx//a:defRPr/@i",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "X축/③ 기울임"
|
||||||
|
},
|
||||||
|
"2-56": {
|
||||||
|
"path": "//c:valAx//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "Y축/① 글꼴 (굴림)"
|
||||||
|
},
|
||||||
|
"2-57": {
|
||||||
|
"path": "//c:valAx//a:defRPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "Y축/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-58": {
|
||||||
|
"path": "//c:valAx//a:defRPr/@i",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "Y축/③ 기울임"
|
||||||
|
},
|
||||||
|
"2-59": {
|
||||||
|
"path": "//c:legend//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "범례/① 글꼴 (굴림)"
|
||||||
|
},
|
||||||
|
"2-60": {
|
||||||
|
"path": "//c:legend//a:defRPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "범례/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-61": {
|
||||||
|
"path": "//c:legend//a:defRPr/@i",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "범례/③ 기울임"
|
||||||
|
}
|
||||||
|
}
|
||||||
855
회차별채점자료/2503/json_채점기준표/0402/DIW_2503B.json
Normal file
855
회차별채점자료/2503/json_채점기준표/0402/DIW_2503B.json
Normal file
@@ -0,0 +1,855 @@
|
|||||||
|
{
|
||||||
|
"0-0": {
|
||||||
|
"path": "",
|
||||||
|
"path2": "",
|
||||||
|
"points": 0,
|
||||||
|
"category": "파일저장",
|
||||||
|
"item": "파일명 (수검번호.hwp/hwpx)"
|
||||||
|
},
|
||||||
|
"0-1": {
|
||||||
|
"path": "boolean(//PAGEMARGIN[(@Bottom='5668'or @Bottom='5669') and (@Footer='2834' or @Footer='2835') and @Gutter='0' and (@Header='2834' or @Header='2835') and (@Left='5668' or @Left='5669') and (@Right='5668' or @Right='5669') and (@Top='5668' or @Top='5669')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "용지설정",
|
||||||
|
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
|
||||||
|
},
|
||||||
|
"0-2": {
|
||||||
|
"path": "boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "기본설정",
|
||||||
|
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
|
||||||
|
},
|
||||||
|
"0-3": {
|
||||||
|
"path": "",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": null,
|
||||||
|
"points": 40,
|
||||||
|
"category": "오타감점",
|
||||||
|
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
|
||||||
|
},
|
||||||
|
"1-1": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "건강100세프로젝트행사",
|
||||||
|
"value": "궁서",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (건강100세프로젝트행사)/① 글씨체 (궁서)"
|
||||||
|
},
|
||||||
|
"1-2": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "건강100세프로젝트행사",
|
||||||
|
"value": "3644265",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (건강100세프로젝트행사)/② 채우기 : 색상(RGB:105,155,55)"
|
||||||
|
},
|
||||||
|
"1-3": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "건강100세프로젝트행사",
|
||||||
|
"value": 34015,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (건강100세프로젝트행사)/③ 크기-너비 (120mm)"
|
||||||
|
},
|
||||||
|
"1-4": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "건강100세프로젝트행사",
|
||||||
|
"value": 5669,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (건강100세프로젝트행사)/④ 크기-높이 (20mm)"
|
||||||
|
},
|
||||||
|
"1-5": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "건강100세프로젝트행사",
|
||||||
|
"value": "true",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (건강100세프로젝트행사)/⑤ 위치 (글자처럼 취급)"
|
||||||
|
},
|
||||||
|
"1-6": {
|
||||||
|
"path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "건강100세프로젝트행사",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (건강100세프로젝트행사)/⑥ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-7": {
|
||||||
|
"path": "boolean(//TEXTART[@Text='{searchValue}'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "건강100세프로젝트행사",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (건강100세프로젝트행사)/⑦ 글맵시모양 (육안확인)"
|
||||||
|
},
|
||||||
|
"1-8": {
|
||||||
|
"path": "boolean(//RECTANGLE[.//CHAR[text()='인']][.//SIZE[(@Height >= 2600 and @Height <= 2800)and(@Width >= 2600 and @Width <= 2800)]])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "인/① 모양 (2줄)"
|
||||||
|
},
|
||||||
|
"1-9": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TEXT[CHAR[text()='인']]/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "돋움",
|
||||||
|
"points": 1,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "인/② 글씨체 (돋움)"
|
||||||
|
},
|
||||||
|
"1-10": {
|
||||||
|
"path": "//RECTANGLE[.//CHAR[text()='인']]//WINDOWBRUSH/@FaceColor",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "10966730",
|
||||||
|
"points": 2,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "인/③ 면색 : 색상(RGB:202,86,167)"
|
||||||
|
},
|
||||||
|
"1-11": {
|
||||||
|
"path": "//RECTANGLE[.//CHAR[text()='인']]//OUTSIDEMARGIN/@Right",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "850",
|
||||||
|
"points": 2,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "인/④ 본문과의 간격 : 3.0mm"
|
||||||
|
},
|
||||||
|
"1-12": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][BOLD])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2023년 경제협력개발기구 보건통계 기준 한국의 기대수명은 83.6년",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2023년 경제협력개발기구 보건통계 기준 한국의 기대수명은 83.6년)/① 진하게"
|
||||||
|
},
|
||||||
|
"1-13": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][UNDERLINE])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2023년 경제협력개발기구 보건통계 기준 한국의 기대수명은 83.6년",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2023년 경제협력개발기구 보건통계 기준 한국의 기대수명은 83.6년)/② 밑줄"
|
||||||
|
},
|
||||||
|
"1-14": {
|
||||||
|
"path": "count(//CHAR[contains(text(),'■')]) + count(//CHAR[contains(text(),'※')])",
|
||||||
|
"path2": "string-length(//CHAR[contains(text(),'■')]) - string-length(translate(//CHAR[contains(text(),'■')], '■', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 3,
|
||||||
|
"points": 3,
|
||||||
|
"category": "특수문자",
|
||||||
|
"item": "① ■, ② ■, ③ ※"
|
||||||
|
},
|
||||||
|
"1-15": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "■ 행사개요 ■",
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (■ 행사개요 ■)/① 글씨체 (굴림)"
|
||||||
|
},
|
||||||
|
"1-16": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "■ 행사개요 ■",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (■ 행사개요 ■)/② 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-17": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][BOLD])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2025. 03. 30.(일) 18:00까지 온라인으로 등록(http://www.ihd.or.kr)",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2025. 03. 30.(일) 18:00까지 온라인으로 등록(http://www.ihd.or.kr))/① 진하게"
|
||||||
|
},
|
||||||
|
"1-18": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2025. 03. 30.(일) 18:00까지 온라인으로 등록(http://www.ihd.or.kr)",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2025. 03. 30.(일) 18:00까지 온라인으로 등록(http://www.ihd.or.kr))/② 기울임"
|
||||||
|
},
|
||||||
|
"1-19": {
|
||||||
|
"path": "boolean(//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Left=3000 and //PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Indent=-2400)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "기타사항",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "문단모양",
|
||||||
|
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)"
|
||||||
|
},
|
||||||
|
"1-20": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2025. 03. 22.",
|
||||||
|
"value": 1300,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2025. 03. 22.)/① 크기 (13pt)"
|
||||||
|
},
|
||||||
|
"1-21": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2025. 03. 22.",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2025. 03. 22.)/② 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-22": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한국질병관리협회",
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (한국질병관리협회)/① 글씨체 (굴림)"
|
||||||
|
},
|
||||||
|
"1-23": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한국질병관리협회",
|
||||||
|
"value": 2400,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (한국질병관리협회)/② 크기 (24pt)"
|
||||||
|
},
|
||||||
|
"1-24": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한국질병관리협회",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (한국질병관리협회)/③ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-25": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "DIAT",
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "머리말",
|
||||||
|
"item": "문구 (DIAT)/① 글꼴 (굴림)"
|
||||||
|
},
|
||||||
|
"1-26": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "DIAT",
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "머리말",
|
||||||
|
"item": "문구 (DIAT)/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"1-27": {
|
||||||
|
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "DIAT",
|
||||||
|
"value": "Right",
|
||||||
|
"points": 1,
|
||||||
|
"category": "머리말",
|
||||||
|
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
|
||||||
|
},
|
||||||
|
"1-28": {
|
||||||
|
"path": "//PAGENUM/@FormatType",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "LatinCapital",
|
||||||
|
"points": 2,
|
||||||
|
"category": "쪽번호",
|
||||||
|
"item": "① 쪽 번호 매기기 (A,B,C 순으로)"
|
||||||
|
},
|
||||||
|
"1-29": {
|
||||||
|
"path": "//PAGENUM/@Pos",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "BottomCenter",
|
||||||
|
"points": 2,
|
||||||
|
"category": "쪽번호",
|
||||||
|
"item": "② 가운데 아래"
|
||||||
|
},
|
||||||
|
"1-30": {
|
||||||
|
"path": "not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!=180])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "줄간격",
|
||||||
|
"item": "문제 1 줄간격 180% 설정"
|
||||||
|
},
|
||||||
|
"2-01": {
|
||||||
|
"path": "boolean(//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside='true' and //BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim')",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "쪽 테두리",
|
||||||
|
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
|
||||||
|
},
|
||||||
|
"2-02": {
|
||||||
|
"path": "count(//SECTION)>1",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "다단",
|
||||||
|
"item": "① 구역나누기"
|
||||||
|
},
|
||||||
|
"2-03": {
|
||||||
|
"path": "//COLDEF/@Count>1",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "다단",
|
||||||
|
"item": "② 다단 2단"
|
||||||
|
},
|
||||||
|
"2-04": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "비만과 비만치료",
|
||||||
|
"value": 19842,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (비만과 비만치료)/① 크기-너비 (70mm)"
|
||||||
|
},
|
||||||
|
"2-05": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "비만과 비만치료",
|
||||||
|
"value": 3402,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (비만과 비만치료)/② 크기-높이 (12mm)"
|
||||||
|
},
|
||||||
|
"2-06": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "비만과 비만치료",
|
||||||
|
"value": "DoubleSlim",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (비만과 비만치료)/③ 테두리 (이중실선(1.00mm))"
|
||||||
|
},
|
||||||
|
"2-07": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "비만과 비만치료",
|
||||||
|
"value": 20,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (비만과 비만치료)/④ 글상자 모서리 (둥근 모양)"
|
||||||
|
},
|
||||||
|
"2-08": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "비만과 비만치료",
|
||||||
|
"value": "2862825",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (비만과 비만치료)/⑤ 채우기 : 색상(RGB:233,174,43)"
|
||||||
|
},
|
||||||
|
"2-09": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "비만과 비만치료",
|
||||||
|
"value": "true",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (비만과 비만치료)/⑥ 글상자 위치 (글자처럼 취급)"
|
||||||
|
},
|
||||||
|
"2-10": {
|
||||||
|
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "비만과 비만치료",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (비만과 비만치료)/⑦ 글상자 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-11": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "비만과 비만치료",
|
||||||
|
"value": "맑은 고딕",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (비만과 비만치료)/⑧ 글씨체 (맑은 고딕)"
|
||||||
|
},
|
||||||
|
"2-12": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='2300')",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "비만과 비만치료",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (비만과 비만치료)/⑨ 글씨크기 (23pt)"
|
||||||
|
},
|
||||||
|
"2-13": {
|
||||||
|
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "비만과 비만치료",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (비만과 비만치료)/⑩ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-14": {
|
||||||
|
"path": "boolean(//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "원본 그림의 이름: 그림",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "① 파일명 \"그림B.jpg\" 삽입"
|
||||||
|
},
|
||||||
|
"2-15": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 24094,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "② 크기-너비 (85mm)"
|
||||||
|
},
|
||||||
|
"2-16": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 11338,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "③ 크기-높이 (40mm)"
|
||||||
|
},
|
||||||
|
"2-17": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@HorzOffset",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 0,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
|
||||||
|
},
|
||||||
|
"2-18": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 6520,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 23mm)"
|
||||||
|
},
|
||||||
|
"2-19": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "1. 비만",
|
||||||
|
"value": "바탕체",
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구① (1. 비만)/① 글씨체 (바탕체)"
|
||||||
|
},
|
||||||
|
"2-20": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "1. 비만",
|
||||||
|
"value": 1200,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구① (1. 비만)/② 크기 (12pt)"
|
||||||
|
},
|
||||||
|
"2-21": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "1. 비만",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구① (1. 비만)/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-22": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2. 비만치료",
|
||||||
|
"value": "바탕체",
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구② (2. 비만치료)/① 글씨체 (바탕체)"
|
||||||
|
},
|
||||||
|
"2-23": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2. 비만치료",
|
||||||
|
"value": 1200,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구② (2. 비만치료)/② 크기 (12pt)"
|
||||||
|
},
|
||||||
|
"2-24": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2. 비만치료",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구② (2. 비만치료)/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-25": {
|
||||||
|
"path":"boolean(//CHAR[contains(text(),'비만 약물치료')]/ancestor::TEXT/FOOTNOTE/descendant::CHAR)",
|
||||||
|
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('비만 약물치료') + 1) = '비만 약물치료']/following-sibling::FOOTNOTE/descendant::CHAR)",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (비만 약물치료)/① 각주 설정 및 문구 입력"
|
||||||
|
},
|
||||||
|
"2-26": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "비약물로 어려운 체질량지수 25 이상인 경우 시행",
|
||||||
|
"value": "돋움",
|
||||||
|
"points": 1,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (비만 약물치료)/② 글씨체 (돋움)"
|
||||||
|
},
|
||||||
|
"2-27": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "비약물로 어려운 체질량지수 25 이상인 경우 시행",
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (비만 약물치료)/③ 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-28": {
|
||||||
|
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue":"비약물로 어려운 체질량지수 25 이상인 경우 시행",
|
||||||
|
"value": "LatinSmall",
|
||||||
|
"points": 2,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (비만 약물치료)/④ 각주 번호모양"
|
||||||
|
},
|
||||||
|
"2-29": {
|
||||||
|
"path": "boolean(//CHAR[contains(text(),'Obesity')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "영단어",
|
||||||
|
"item": "Obesity/영단어 미입력, 대소문자/오타 시 전체 감점"
|
||||||
|
},
|
||||||
|
"2-30": {
|
||||||
|
"path": "(count(//CHAR[contains(text(),'비만')][contains(text(),'肥滿')])+count(//CHAR[contains(text(),'복부')][contains(text(),'腹部')])+count(//CHAR[contains(text(),'대사')][contains(text(),'代謝')])+count(//CHAR[contains(text(),'특정')][contains(text(),'特定')])+count(//CHAR[contains(text(),'축적')][contains(text(),'特定')]))*2",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 10,
|
||||||
|
"points": 10,
|
||||||
|
"category": "한자",
|
||||||
|
"item": "① 비만(肥滿), ② 복부(腹部), ③대사(代謝), ④ 특정(特定), ⑤ 축적(特定)"
|
||||||
|
},
|
||||||
|
"2-31": {
|
||||||
|
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'정의다른')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "편집",
|
||||||
|
"item": "문구 (…비만 측정을 다른 방법으로는…)/\"을\" → \"의\" 글자바꿈"
|
||||||
|
},
|
||||||
|
"2-32": {
|
||||||
|
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'거나복부')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "편집",
|
||||||
|
"item": "문구 (…허리둘레를 복부(腹部)지방 측정하거나 전산화…)/\"복부지방\" / \"측정하거나\" 순서바꿈"
|
||||||
|
},
|
||||||
|
"2-33": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "성별 비만 인구수",
|
||||||
|
"value": "궁서체",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (성별 비만 인구수)/① 글씨체 (궁서체)"
|
||||||
|
},
|
||||||
|
"2-34": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "성별 비만 인구수",
|
||||||
|
"value": 1200,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (성별 비만 인구수)/② 크기 (12pt)"
|
||||||
|
},
|
||||||
|
"2-35": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "성별 비만 인구수",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (성별 비만 인구수)/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-36": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "성별 비만 인구수",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (성별 비만 인구수)/④ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-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='2']/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "5395143",
|
||||||
|
"points": 2,
|
||||||
|
"category": "표",
|
||||||
|
"item": "위쪽 제목 셀/① 색상(RGB:199,82,82)"
|
||||||
|
},
|
||||||
|
"2-38": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "위쪽 제목 셀/② 진하게"
|
||||||
|
},
|
||||||
|
"2-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='2']/@BorderFill]/BOTTOMBORDER/@Type",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "DoubleSlim",
|
||||||
|
"points": 2,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 셀 아래선/① 이중실선"
|
||||||
|
},
|
||||||
|
"2-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='2']/@BorderFill]/BOTTOMBORDER/@Width",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "0.5mm",
|
||||||
|
"points": 2,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 셀 아래선/② 0.5mm"
|
||||||
|
},
|
||||||
|
"2-41": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "한양중고딕",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "글자모양/① 글씨체 (한양중고딕)"
|
||||||
|
},
|
||||||
|
"2-42": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1000,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "글자모양/② 크기 (10pt)"
|
||||||
|
},
|
||||||
|
"2-43": {
|
||||||
|
"path": "//PARASHAPE[@Id=//TABLE/ROW/descendant::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "글자모양/③ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-44": {
|
||||||
|
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=SUM') and substring(@Command, string-length(@Command) - 2) = '145'] and //TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=SUM') and substring(@Command, string-length(@Command) - 2) = '105'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "표",
|
||||||
|
"item": "블록계산식/합계"
|
||||||
|
},
|
||||||
|
"2-45": {
|
||||||
|
"path": "boolean(//c:barChart[c:barDir[@val='bar'] and c:grouping[@val='clustered']])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "① 종류 (묶은가로막대형)"
|
||||||
|
},
|
||||||
|
"2-46": {
|
||||||
|
"path": "//c:valAx/c:majorTickMark/@val",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "out",
|
||||||
|
"points": 2,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "② 값 축 주 눈금선"
|
||||||
|
},
|
||||||
|
"2-47": {
|
||||||
|
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 22677,
|
||||||
|
"points": 2,
|
||||||
|
"category": "차트",
|
||||||
|
"item": "③ 크기-너비 (80mm)"
|
||||||
|
},
|
||||||
|
"2-48": {
|
||||||
|
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 25512,
|
||||||
|
"points": 2,
|
||||||
|
"category": "차트",
|
||||||
|
"item": "④ 크기-높이 (90mm)"
|
||||||
|
},
|
||||||
|
"2-49": {
|
||||||
|
"path": "//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)"
|
||||||
|
},
|
||||||
|
"2-50": {
|
||||||
|
"path": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "성별 비만 인구수",
|
||||||
|
"value": "궁서",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "제목 문구 (성별 비만 인구수)/① 글씨체 (궁서)"
|
||||||
|
},
|
||||||
|
"2-51": {
|
||||||
|
"path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "성별 비만 인구수",
|
||||||
|
"value": 1300,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "제목 문구 (성별 비만 인구수)/② 크기 (13pt)"
|
||||||
|
},
|
||||||
|
"2-52": {
|
||||||
|
"path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@b",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "성별 비만 인구수",
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "제목 문구 (성별 비만 인구수)/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-53": {
|
||||||
|
"path": "//c:catAx//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "X축/① 글꼴 (굴림)"
|
||||||
|
},
|
||||||
|
"2-54": {
|
||||||
|
"path": "//c:catAx//a:defRPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "X축/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-55": {
|
||||||
|
"path": "//c:catAx//a:defRPr/@i",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "X축/③ 기울임"
|
||||||
|
},
|
||||||
|
"2-56": {
|
||||||
|
"path": "//c:valAx//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "Y축/① 글꼴 (굴림)"
|
||||||
|
},
|
||||||
|
"2-57": {
|
||||||
|
"path": "//c:valAx//a:defRPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "Y축/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-58": {
|
||||||
|
"path": "//c:valAx//a:defRPr/@i",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "Y축/③ 기울임"
|
||||||
|
},
|
||||||
|
"2-59": {
|
||||||
|
"path": "//c:legend//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "범례/① 글꼴 (굴림)"
|
||||||
|
},
|
||||||
|
"2-60": {
|
||||||
|
"path": "//c:legend//a:defRPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "범례/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-61": {
|
||||||
|
"path": "//c:legend//a:defRPr/@i",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "범례/③ 기울임"
|
||||||
|
}
|
||||||
|
}
|
||||||
855
회차별채점자료/2503/json_채점기준표/0402/DIW_2503C.json
Normal file
855
회차별채점자료/2503/json_채점기준표/0402/DIW_2503C.json
Normal file
@@ -0,0 +1,855 @@
|
|||||||
|
{
|
||||||
|
"0-0": {
|
||||||
|
"path": "",
|
||||||
|
"path2": "",
|
||||||
|
"points": 0,
|
||||||
|
"category": "파일저장",
|
||||||
|
"item": "파일명 (수검번호.hwp/hwpx)"
|
||||||
|
},
|
||||||
|
"0-1": {
|
||||||
|
"path": "boolean(//PAGEMARGIN[(@Bottom='5668'or @Bottom='5669') and (@Footer='2834' or @Footer='2835') and @Gutter='0' and (@Header='2834' or @Header='2835') and (@Left='5668' or @Left='5669') and (@Right='5668' or @Right='5669') and (@Top='5668' or @Top='5669')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "용지설정",
|
||||||
|
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
|
||||||
|
},
|
||||||
|
"0-2": {
|
||||||
|
"path": "boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "기본설정",
|
||||||
|
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
|
||||||
|
},
|
||||||
|
"0-3": {
|
||||||
|
"path": "",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": null,
|
||||||
|
"points": 40,
|
||||||
|
"category": "오타감점",
|
||||||
|
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
|
||||||
|
},
|
||||||
|
"1-1": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥마을사생대회안내",
|
||||||
|
"value": "궁서",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (한옥마을사생대회안내)/① 글씨체 (궁서)"
|
||||||
|
},
|
||||||
|
"1-2": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥마을사생대회안내",
|
||||||
|
"value": "6072932",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (한옥마을사생대회안내)/② 채우기 : 색상(RGB:100,170,92)"
|
||||||
|
},
|
||||||
|
"1-3": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥마을사생대회안내",
|
||||||
|
"value": 28346,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (한옥마을사생대회안내)/③ 크기-너비 (100mm)"
|
||||||
|
},
|
||||||
|
"1-4": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥마을사생대회안내",
|
||||||
|
"value": 5669,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (한옥마을사생대회안내)/④ 크기-높이 (20mm)"
|
||||||
|
},
|
||||||
|
"1-5": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥마을사생대회안내",
|
||||||
|
"value": "true",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (한옥마을사생대회안내)/⑤ 위치 (글자처럼 취급)"
|
||||||
|
},
|
||||||
|
"1-6": {
|
||||||
|
"path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥마을사생대회안내",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (한옥마을사생대회안내)/⑥ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-7": {
|
||||||
|
"path": "boolean(//TEXTART[@Text='{searchValue}'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥마을사생대회안내",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글맵시",
|
||||||
|
"item": "문구 (한옥마을사생대회안내)/⑦ 글맵시모양 (육안확인)"
|
||||||
|
},
|
||||||
|
"1-8": {
|
||||||
|
"path": "boolean(//RECTANGLE[.//CHAR[text()='자']][.//SIZE[(@Height >= 2600 and @Height <= 2800)and(@Width >= 2600 and @Width <= 2800)]])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "자/① 모양 (2줄)"
|
||||||
|
},
|
||||||
|
"1-9": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TEXT[CHAR[text()='자']]/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "맑은 고딕",
|
||||||
|
"points": 1,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "자/② 글씨체 (맑은 고딕)"
|
||||||
|
},
|
||||||
|
"1-10": {
|
||||||
|
"path": "//RECTANGLE[.//CHAR[text()='자']]//WINDOWBRUSH/@FaceColor",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "9537333",
|
||||||
|
"points": 2,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "자/③ 면색 : 색상(RGB:53,135,145)"
|
||||||
|
},
|
||||||
|
"1-11": {
|
||||||
|
"path": "//RECTANGLE[.//CHAR[text()='자']]//OUTSIDEMARGIN/@Right",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "850",
|
||||||
|
"points": 2,
|
||||||
|
"category": "문단첫글자장식",
|
||||||
|
"item": "자/④ 본문과의 간격 : 3.0mm"
|
||||||
|
},
|
||||||
|
"1-12": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][BOLD])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/① 진하게"
|
||||||
|
},
|
||||||
|
"1-13": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][UNDERLINE])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/② 밑줄"
|
||||||
|
},
|
||||||
|
"1-14": {
|
||||||
|
"path": "count(//CHAR[contains(text(),'■')]) + count(//CHAR[contains(text(),'※')])",
|
||||||
|
"path2": "string-length(//CHAR[contains(text(),'■')]) - string-length(translate(//CHAR[contains(text(),'■')], '■', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 3,
|
||||||
|
"points": 3,
|
||||||
|
"category": "특수문자",
|
||||||
|
"item": "① ■, ② ■, ③ ※"
|
||||||
|
},
|
||||||
|
"1-15": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "■ 행사안내 ■",
|
||||||
|
"value": "돋움",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (■ 행사안내 ■)/① 글씨체 (돋움)"
|
||||||
|
},
|
||||||
|
"1-16": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "■ 행사안내 ■",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (■ 행사안내 ■)/② 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-17": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/① 기울임"
|
||||||
|
},
|
||||||
|
"1-18": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][UNDERLINE])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/② 밑줄"
|
||||||
|
},
|
||||||
|
"1-19": {
|
||||||
|
"path": "boolean(//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Left=3000 and //PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Indent=-2400)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "기타사항",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "문단모양",
|
||||||
|
"item": "문구 (※ 기타… 이하 문단)/왼쪽여백 (15pt), 내어쓰기 (12pt)"
|
||||||
|
},
|
||||||
|
"1-20": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2025. 03. 22.",
|
||||||
|
"value": 1300,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2025. 03. 22.)/① 크기 (13pt)"
|
||||||
|
},
|
||||||
|
"1-21": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2025. 03. 22.",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (2025. 03. 22.)/② 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-22": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한국고건축협회",
|
||||||
|
"value": "궁서",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (한국고건축협회)/① 글씨체 (궁서)"
|
||||||
|
},
|
||||||
|
"1-23": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한국고건축협회",
|
||||||
|
"value": 2400,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (한국고건축협회)/② 크기 (24pt)"
|
||||||
|
},
|
||||||
|
"1-24": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한국고건축협회",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글꼴 속성",
|
||||||
|
"item": "문구 (한국고건축협회)/③ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"1-25": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "DIAT",
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "머리말",
|
||||||
|
"item": "문구 (DIAT)/① 글꼴 (굴림)"
|
||||||
|
},
|
||||||
|
"1-26": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "DIAT",
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "머리말",
|
||||||
|
"item": "문구 (DIAT)/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"1-27": {
|
||||||
|
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "DIAT",
|
||||||
|
"value": "Right",
|
||||||
|
"points": 1,
|
||||||
|
"category": "머리말",
|
||||||
|
"item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)"
|
||||||
|
},
|
||||||
|
"1-28": {
|
||||||
|
"path": "//PAGENUM/@FormatType",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "HangulSyllable",
|
||||||
|
"points": 2,
|
||||||
|
"category": "쪽번호",
|
||||||
|
"item": "① 쪽 번호 매기기 (가,나,다 순으로)"
|
||||||
|
},
|
||||||
|
"1-29": {
|
||||||
|
"path": "//PAGENUM/@Pos",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "BottomCenter",
|
||||||
|
"points": 2,
|
||||||
|
"category": "쪽번호",
|
||||||
|
"item": "② 가운데 아래"
|
||||||
|
},
|
||||||
|
"1-30": {
|
||||||
|
"path": "not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!='180'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "줄간격",
|
||||||
|
"item": "문제 1 줄간격 180% 설정"
|
||||||
|
},
|
||||||
|
"2-01": {
|
||||||
|
"path": "boolean(//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside='true' and //BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim')",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "쪽 테두리",
|
||||||
|
"item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정"
|
||||||
|
},
|
||||||
|
"2-02": {
|
||||||
|
"path": "count(//SECTION)>1",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "다단",
|
||||||
|
"item": "① 구역나누기"
|
||||||
|
},
|
||||||
|
"2-03": {
|
||||||
|
"path": "//COLDEF/@Count>1",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "다단",
|
||||||
|
"item": "② 다단 2단"
|
||||||
|
},
|
||||||
|
"2-04": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥의 형태와 구조",
|
||||||
|
"value": 19842,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (한옥의 형태와 구조)/① 크기-너비 (70mm)"
|
||||||
|
},
|
||||||
|
"2-05": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥의 형태와 구조",
|
||||||
|
"value": 3401,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (한옥의 형태와 구조)/② 크기-높이 (12mm)"
|
||||||
|
},
|
||||||
|
"2-06": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥의 형태와 구조",
|
||||||
|
"value": "DoubleSlim",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (한옥의 형태와 구조)/③ 테두리 (이중실선(1.00mm))"
|
||||||
|
},
|
||||||
|
"2-07": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥의 형태와 구조",
|
||||||
|
"value": 20,
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (한옥의 형태와 구조)/④ 글상자 모서리 (둥근 모양)"
|
||||||
|
},
|
||||||
|
"2-08": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥의 형태와 구조",
|
||||||
|
"value": "12704995",
|
||||||
|
"points": 2,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (한옥의 형태와 구조)/⑤ 채우기 : 색상(RGB:227,220,193)"
|
||||||
|
},
|
||||||
|
"2-09": {
|
||||||
|
"path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥의 형태와 구조",
|
||||||
|
"value": "true",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (한옥의 형태와 구조)/⑥ 글상자 위치 (글자처럼 취급)"
|
||||||
|
},
|
||||||
|
"2-10": {
|
||||||
|
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥의 형태와 구조",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (한옥의 형태와 구조)/⑦ 글상자 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-11": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥의 형태와 구조",
|
||||||
|
"value": "한양견고딕",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (한옥의 형태와 구조)/⑧ 글씨체 (견고딕)"
|
||||||
|
},
|
||||||
|
"2-12": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='2000')",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥의 형태와 구조",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (한옥의 형태와 구조)/⑨ 글씨크기 (20pt)"
|
||||||
|
},
|
||||||
|
"2-13": {
|
||||||
|
"path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥의 형태와 구조",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "글상자",
|
||||||
|
"item": "문구 (한옥의 형태와 구조)/⑩ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-14": {
|
||||||
|
"path": "boolean(//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "원본 그림의 이름: 그림",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "① 파일명 \"그림C.jpg\" 삽입"
|
||||||
|
},
|
||||||
|
"2-15": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 24094,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "② 크기-너비 (85mm)"
|
||||||
|
},
|
||||||
|
"2-16": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 11338,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "③ 크기-높이 (40mm)"
|
||||||
|
},
|
||||||
|
"2-17": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@HorzOffset",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 0,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
|
||||||
|
},
|
||||||
|
"2-18": {
|
||||||
|
"path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 6236,
|
||||||
|
"points": 2,
|
||||||
|
"category": "그림삽입",
|
||||||
|
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 22mm)"
|
||||||
|
},
|
||||||
|
"2-19": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "1. 한옥",
|
||||||
|
"value": "돋움",
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구① (1. 한옥)/① 글씨체 (돋움)"
|
||||||
|
},
|
||||||
|
"2-20": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "1. 한옥",
|
||||||
|
"value": 1200,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구① (1. 한옥)/② 크기 (12pt)"
|
||||||
|
},
|
||||||
|
"2-21": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "1. 한옥",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구① (1. 한옥)/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-22": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2. 한옥의 형태와 구조",
|
||||||
|
"value": "돋움",
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구② (2. 한옥의 형태와 구조)/① 글씨체 (돋움)"
|
||||||
|
},
|
||||||
|
"2-23": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2. 한옥의 형태와 구조",
|
||||||
|
"value": 1200,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구② (2. 한옥의 형태와 구조)/② 크기 (12pt)"
|
||||||
|
},
|
||||||
|
"2-24": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "2. 한옥의 형태와 구조",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "속성",
|
||||||
|
"item": "문구② (2. 한옥의 형태와 구조)/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-25": {
|
||||||
|
"path":"boolean(//CHAR[contains(text(),'기초')]/ancestor::TEXT/FOOTNOTE/descendant::CHAR)",
|
||||||
|
"path2": "boolean(//CHAR[substring(., string-length(.) - string-length('기초') + 1) = '기초']/following-sibling::FOOTNOTE/descendant::CHAR)",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (기초)/① 각주 설정 및 문구 입력"
|
||||||
|
},
|
||||||
|
"2-26": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량",
|
||||||
|
"value": "한양중고딕",
|
||||||
|
"points": 1,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (기초)/② 글씨체 (중고딕)"
|
||||||
|
},
|
||||||
|
"2-27": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량",
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (기초)/③ 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-28": {
|
||||||
|
"path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": " 기둥의 침하를 방지하기 위한 지반의 보강 및 개량",
|
||||||
|
"value": "CircledDigit",
|
||||||
|
"points": 2,
|
||||||
|
"category": "각주",
|
||||||
|
"item": "문구 (기초)/④ 각주 번호모양"
|
||||||
|
},
|
||||||
|
"2-29": {
|
||||||
|
"path": "boolean(//CHAR[contains(text(),'cornerstone')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "",
|
||||||
|
"item": "cornerstone/영단어 미입력, 대소문자/오타 시 전체 감점"
|
||||||
|
},
|
||||||
|
"2-30": {
|
||||||
|
"path": "(count(//CHAR[contains(text(),'한옥')][contains(text(),'韓屋')])+count(//CHAR[contains(text(),'사계절')][contains(text(),'四季節')])+count(//CHAR[contains(text(),'거주')][contains(text(),'居住')])+count(//CHAR[contains(text(),'구조')][contains(text(),'構造')])+count(//CHAR[contains(text(),'골격')][contains(text(),'骨格')]))*2",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 10,
|
||||||
|
"points": 10,
|
||||||
|
"category": "한자",
|
||||||
|
"item": "① 한옥(韓屋), ② 사계절(四季節), ③거주(居住), ④ 구조(構造), ⑤ 골격(骨格)"
|
||||||
|
},
|
||||||
|
"2-31": {
|
||||||
|
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'철의추운')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "편집",
|
||||||
|
"item": "문구 (…더운 날씨와 겨울철이 추운…)/\"이\" → \"의\" 글자바꿈"
|
||||||
|
},
|
||||||
|
"2-32": {
|
||||||
|
"path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'돌과마루')])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 3,
|
||||||
|
"category": "편집",
|
||||||
|
"item": "문구 (…대비해 마루를 온돌과 갖고…)/\"마루를\" / \"온돌과\" 순서바꿈"
|
||||||
|
},
|
||||||
|
"2-33": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "교육기관별 참가인원",
|
||||||
|
"value": "궁서",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (교육기관별 참가인원)/① 글씨체 (궁서)"
|
||||||
|
},
|
||||||
|
"2-34": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "교육기관별 참가인원",
|
||||||
|
"value": 1200,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (교육기관별 참가인원)/② 크기 (12pt)"
|
||||||
|
},
|
||||||
|
"2-35": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "교육기관별 참가인원",
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (교육기관별 참가인원)/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-36": {
|
||||||
|
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "교육기관별 참가인원",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 문구 (교육기관별 참가인원)/④ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-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='2']/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "15616893",
|
||||||
|
"points": 2,
|
||||||
|
"category": "표",
|
||||||
|
"item": "위쪽 제목 셀/① 색상(RGB:125,75,238)"
|
||||||
|
},
|
||||||
|
"2-38": {
|
||||||
|
"path": "boolean(//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "위쪽 제목 셀/② 진하게"
|
||||||
|
},
|
||||||
|
"2-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='2']/@BorderFill]/BOTTOMBORDER/@Type",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "DoubleSlim",
|
||||||
|
"points": 2,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 셀 아래선/① 이중실선"
|
||||||
|
},
|
||||||
|
"2-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='2']/@BorderFill]/BOTTOMBORDER/@Width",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "0.5mm",
|
||||||
|
"points": 2,
|
||||||
|
"category": "표",
|
||||||
|
"item": "제목 셀 아래선/② 0.5mm"
|
||||||
|
},
|
||||||
|
"2-41": {
|
||||||
|
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "글자모양/① 글씨체 (굴림)"
|
||||||
|
},
|
||||||
|
"2-42": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1000,
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "글자모양/② 크기 (10pt)"
|
||||||
|
},
|
||||||
|
"2-43": {
|
||||||
|
"path": "//PARASHAPE[@Id=//TABLE/ROW/descendant::P/@ParaShape]/@Align",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "Center",
|
||||||
|
"points": 1,
|
||||||
|
"category": "표",
|
||||||
|
"item": "글자모양/③ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"2-44": {
|
||||||
|
"path": "boolean(//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=SUM') and substring(@Command, string-length(@Command) - 2) = '110'] and //TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=SUM') and substring(@Command, string-length(@Command) - 2) = '220'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 4,
|
||||||
|
"category": "표",
|
||||||
|
"item": "블록계산식/합계"
|
||||||
|
},
|
||||||
|
"2-45": {
|
||||||
|
"path": "//c:lineChart/c:grouping/@val='standard'",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "① 종류 (꺾은선형)"
|
||||||
|
},
|
||||||
|
"2-46": {
|
||||||
|
"path": "//c:valAx/c:majorTickMark/@val",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "out",
|
||||||
|
"points": 2,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "② 값 축 주 눈금선"
|
||||||
|
},
|
||||||
|
"2-47": {
|
||||||
|
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 22677,
|
||||||
|
"points": 2,
|
||||||
|
"category": "차트",
|
||||||
|
"item": "③ 크기-너비 (80mm)"
|
||||||
|
},
|
||||||
|
"2-48": {
|
||||||
|
"path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 25511,
|
||||||
|
"points": 2,
|
||||||
|
"category": "차트",
|
||||||
|
"item": "④ 크기-높이 (90mm)"
|
||||||
|
},
|
||||||
|
"2-49": {
|
||||||
|
"path": "//c:chart and not(//c:pt[not(ancestor::c:tx)]/c:v[text()='합계'])",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)"
|
||||||
|
},
|
||||||
|
"2-50": {
|
||||||
|
"path": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "교육기관별 참가인원",
|
||||||
|
"value": "굴림체",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "제목 문구 (교육기관별 참가인원)/① 글씨체 (굴림체)"
|
||||||
|
},
|
||||||
|
"2-51": {
|
||||||
|
"path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "교육기관별 참가인원",
|
||||||
|
"value": 1300,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "제목 문구 (교육기관별 참가인원)/② 크기 (13pt)"
|
||||||
|
},
|
||||||
|
"2-52": {
|
||||||
|
"path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@b",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "교육기관별 참가인원",
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "제목 문구 (교육기관별 참가인원)/③ 진하게"
|
||||||
|
},
|
||||||
|
"2-53": {
|
||||||
|
"path": "//c:catAx//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "X축/① 글꼴 (굴림)"
|
||||||
|
},
|
||||||
|
"2-54": {
|
||||||
|
"path": "//c:catAx//a:defRPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "X축/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-55": {
|
||||||
|
"path": "//c:catAx//a:defRPr/@i",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "X축/③ 기울임"
|
||||||
|
},
|
||||||
|
"2-56": {
|
||||||
|
"path": "//c:valAx//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "Y축/① 글꼴 (굴림)"
|
||||||
|
},
|
||||||
|
"2-57": {
|
||||||
|
"path": "//c:valAx//a:defRPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "Y축/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-58": {
|
||||||
|
"path": "//c:valAx//a:defRPr/@i",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "Y축/③ 기울임"
|
||||||
|
},
|
||||||
|
"2-59": {
|
||||||
|
"path": "//c:legend//a:ea/@typeface",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": "굴림",
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "범례/① 글꼴 (굴림)"
|
||||||
|
},
|
||||||
|
"2-60": {
|
||||||
|
"path": "//c:legend//a:defRPr/@sz",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 900,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "범례/② 크기 (9pt)"
|
||||||
|
},
|
||||||
|
"2-61": {
|
||||||
|
"path": "//c:legend//a:defRPr/@i",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": null,
|
||||||
|
"value": 1,
|
||||||
|
"points": 1,
|
||||||
|
"category": "chart_xml",
|
||||||
|
"item": "범례/③ 기울임"
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user