diff --git a/DIW_2504A.json b/DIW_2504A.json new file mode 100644 index 0000000..3b3e645 --- /dev/null +++ b/DIW_2504A.json @@ -0,0 +1,863 @@ +{ + "0": { + "0": { + "path": "", + "path2": "", + "points": 0, + "category": "파일저장", + "item": "파일명 (수검번호.hwp/hwpx)" + }, + "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)" + }, + "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%)" + }, + "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": "문구 (클라우드컴퓨팅컨퍼런스)/① 글씨체 (맑은 고딕)" + }, + "2": { + "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": "클라우드컴퓨팅컨퍼런스", + "value": "6438172", + "points": 2, + "category": "글맵시", + "item": "문구 (클라우드컴퓨팅컨퍼런스)/② 채우기 : 색상(RGB:100,170,92)" + }, + "3": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": "클라우드컴퓨팅컨퍼런스", + "value": 31181, + "points": 2, + "category": "글맵시", + "item": "문구 (클라우드컴퓨팅컨퍼런스)/③ 크기-너비 (100mm)" + }, + "4": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": "클라우드컴퓨팅컨퍼런스", + "value": 5669, + "points": 2, + "category": "글맵시", + "item": "문구 (클라우드컴퓨팅컨퍼런스)/④ 크기-높이 (20mm)" + }, + "5": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", + "path2": null, + "searchValue": "클라우드컴퓨팅컨퍼런스", + "value": "true", + "points": 2, + "category": "글맵시", + "item": "문구 (클라우드컴퓨팅컨퍼런스)/⑤ 위치 (글자처럼 취급)" + }, + "6": { + "path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "클라우드컴퓨팅컨퍼런스", + "value": "Center", + "points": 2, + "category": "글맵시", + "item": "문구 (클라우드컴퓨팅컨퍼런스)/⑥ 정렬 (가운데 정렬)" + }, + "7": { + "path": "boolean(//TEXTART[@Text='{searchValue}'])", + "path2": null, + "searchValue": "클라우드컴퓨팅컨퍼런스", + "value": true, + "points": 2, + "category": "글맵시", + "item": "문구 (클라우드컴퓨팅컨퍼런스)/⑦ 글맵시모양 (육안확인)" + }, + "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줄)" + }, + "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": "전/② 글씨체 (궁서체)" + }, + "10": { + "path": "//RECTANGLE[.//CHAR[text()='전']]//WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": null, + "value": "3835135", + "points": 2, + "category": "문단첫글자장식", + "item": "전/③ 면색 : 색상(RGB:255,132,58)" + }, + "11": { + "path": "//RECTANGLE[.//CHAR[text()='전']]//OUTSIDEMARGIN/@Right", + "path2": null, + "searchValue": null, + "value": "850", + "points": 2, + "category": "문단첫글자장식", + "item": "전/④ 본문과의 간격 : 3.0mm" + }, + "12": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][BOLD])", + "path2": null, + "searchValue": "글로벌 클라우드 컴퓨팅 컨퍼런스", + "value": true, + "points": 2, + "category": "글꼴 속성", + "item": "문구 (글로벌 클라우드 컴퓨팅 컨퍼런스)/① 진하게" + }, + "13": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][UNDERLINE])", + "path2": null, + "searchValue": "글로벌 클라우드 컴퓨팅 컨퍼런스", + "value": true, + "points": 2, + "category": "글꼴 속성", + "item": "문구 (글로벌 클라우드 컴퓨팅 컨퍼런스)/② 밑줄" + }, + "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": "① ●, ② ●, ③ ※" + }, + "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": "문구 (● 참여안내 ●)/① 글씨체 (궁서)" + }, + "16": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "참여안내", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (● 참여안내 ●)/② 정렬 (가운데 정렬)" + }, + "17": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])", + "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][ITALIC])", + "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "홈페이지(http://www.ihd.or.kr) 참조", + "value": true, + "points": 1, + "category": "Hyperlink", + "item": "문구 (홈페이지(http://www.ihd.or.kr) 참조)/① 기울임" + }, + "18": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][UNDERLINE])", + "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][UNDERLINE])", + "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "홈페이지(http://www.ihd.or.kr) 참조", + "value": true, + "points": 1, + "category": "Hyperlink", + "item": "문구 (홈페이지(http://www.ihd.or.kr) 참조)/② 밑줄" + }, + "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)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "2025. 04. 26.", + "value": 1400, + "points": 1, + "category": "글꼴 속성", + "item": "문구 (2025. 04. 26.)/① 크기 (14pt)" + }, + "21": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "2025. 04. 26.", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (2025. 04. 26.)/② 정렬 (가운데 정렬)" + }, + "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": "문구 (글로벌멀티클라우드협의회)/① 글씨체 (궁서체)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "글로벌멀티클라우드협의회", + "value": 2600, + "points": 1, + "category": "글꼴 속성", + "item": "문구 (글로벌멀티클라우드협의회)/② 크기 (26pt)" + }, + "24": { + "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "글로벌멀티클라우드협의회", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (글로벌멀티클라우드협의회)/③ 정렬 (가운데 정렬)" + }, + "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)/① 글꼴 (궁서)" + }, + "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)" + }, + "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)/③ 정렬 (오른쪽 정렬)" + }, + "28": { + "path": "//PAGENUM/@FormatType", + "path2": null, + "searchValue": null, + "value": "LatinCapital", + "points": 2, + "category": "쪽번호", + "item": "① 쪽 번호 매기기 (A,B,C 순으로)" + }, + "29": { + "path": "//PAGENUM/@Pos", + "path2": null, + "searchValue": null, + "value": "BottomRight", + "points": 2, + "category": "쪽번호", + "item": "② 오른쪽 아래" + }, + "30": { + "path": "not(//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN[@LineSpacing!='200'])", + "path2": null, + "searchValue": null, + "value": true, + "points": 2, + "category": "줄간격", + "item": "문제 1 줄간격 200% 설정" + } + }, + "2": { + "1": { + "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": { + "path": "count(//SECTION)>1", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "다단", + "item": "① 구역나누기" + }, + "3": { + "path": "//COLDEF/@Count>1", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "다단", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": "클라우드 컴퓨팅", + "value": 17007, + "points": 2, + "category": "글상자", + "item": "문구 (클라우드 컴퓨팅)/① 크기-너비 (60mm)" + }, + "5": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": "클라우드 컴퓨팅", + "value": 3401, + "points": 2, + "category": "글상자", + "item": "문구 (클라우드 컴퓨팅)/② 크기-높이 (12mm)" + }, + "6": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style", + "path2": null, + "searchValue": "클라우드 컴퓨팅", + "value": "DoubleSlim", + "points": 2, + "category": "글상자", + "item": "문구 (클라우드 컴퓨팅)/③ 테두리 : 이중 실선(1.00mm)" + }, + "7": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio", + "path2": null, + "searchValue": "클라우드 컴퓨팅", + "value": 50, + "points": 2, + "category": "글상자", + "item": "문구 (클라우드 컴퓨팅)/④ 글상자 모서리 (반원)" + }, + "8": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": "클라우드 컴퓨팅", + "value": "10966730", + "points": 2, + "category": "글상자", + "item": "문구 (클라우드 컴퓨팅)/⑤ 채우기 : 색상(RGB:202,86,167)" + }, + "9": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", + "path2": null, + "searchValue": "클라우드 컴퓨팅", + "value": "true", + "points": 1, + "category": "글상자", + "item": "문구 (클라우드 컴퓨팅)/⑥ 글상자 위치 (글자처럼 취급)" + }, + "10": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", + "path2": null, + "searchValue": "클라우드 컴퓨팅", + "value": "Center", + "points": 1, + "category": "글상자", + "item": "문구 (클라우드 컴퓨팅)/⑦ 글상자 정렬 (가운데 정렬)" + }, + "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": "문구 (클라우드 컴퓨팅)/⑧ 글씨체 (견고딕)" + }, + "12": { + "path": "boolean(//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='2000')", + "path2": null, + "searchValue": "클라우드 컴퓨팅", + "value": true, + "points": 1, + "category": "글상자", + "item": "문구 (클라우드 컴퓨팅)/⑨ 글씨크기 (20pt)" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align", + "path2": null, + "searchValue": "클라우드 컴퓨팅", + "value": "Center", + "points": 1, + "category": "글상자", + "item": "문구 (클라우드 컴퓨팅)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "boolean(//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])", + "path2": null, + "searchValue": "원본 그림의 이름: 그림", + "value": true, + "points": 2, + "category": "그림삽입", + "item": "① 파일명 \"그림A.jpg\" 삽입" + }, + "15": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": null, + "value": 22677, + "points": 2, + "category": "그림삽입", + "item": "② 크기-너비 (80mm)" + }, + "16": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": null, + "value": 11338, + "points": 2, + "category": "그림삽입", + "item": "③ 크기-높이 (40mm)" + }, + "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)" + }, + "18": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset", + "path2": null, + "searchValue": null, + "value": 6236, + "points": 2, + "category": "그림삽입", + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 22mm)" + }, + "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. 주목하는 최신 트렌드)/① 글씨체 (굴림)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "1. 주목하는 최신 트렌드", + "value": 1200, + "points": 1, + "category": "속성", + "item": "문구① (1. 주목하는 최신 트렌드)/② 크기 (12pt)" + }, + "21": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "1. 주목하는 최신 트렌드", + "value": true, + "points": 1, + "category": "속성", + "item": "문구① (1. 주목하는 최신 트렌드)/③ 진하게" + }, + "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. 기술의 경제적 가치)/① 글씨체 (굴림)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "2. 기술의 경제적 가치", + "value": 1200, + "points": 1, + "category": "속성", + "item": "문구② (2. 기술의 경제적 가치)/② 크기 (12pt)" + }, + "24": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "2. 기술의 경제적 가치", + "value": true, + "points": 1, + "category": "속성", + "item": "문구② (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": "문구 (클라우드)/① 각주 설정 및 문구 입력" + }, + "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": "문구 (클라우드)/② 글씨체 (한양중고딕)" + }, + "27": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경", + "value": 900, + "points": 1, + "category": "각주", + "item": "문구 (클라우드)/③ 크기 (9pt)" + }, + "28": { + "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", + "path2": null, + "searchValue": "인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경", + "value": "Ideograph", + "points": 2, + "category": "각주", + "item": "문구 (클라우드)/④ 각주 번호모양" + }, + "29": { + "path": "boolean(//CHAR[contains(text(),'Digital')])", + "path2": null, + "ignoreWord": "Digital", + "value": true, + "points": 3, + "category": "영단어", + "item": "Digital/영단어 미입력, 대소문자/오타 시 전체 감점" + }, + "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": "① 전환(轉換), ② 핵심(核心), ③ 확산(擴散), ④ 보안(保安), ⑤ 도입(導入)" + }, + "31": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'션이발전')])", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "편집", + "item": "문구 (…보안(保安) 솔루션은 발전하면서…)/\"은\" → \"이\" 글자바꿈" + }, + "32": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'이터유출')])", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "편집", + "item": "문구 (…유출과 데이터 사이버…)/\"유출과\" / \"데이터\" 순서바꿈" + }, + "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": "제목 문구 (클라우드 보안(단위: 백만 달러))/① 글씨체 (돋움)" + }, + "34": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "클라우드 보안(단위: 백만 달러)", + "value": 1200, + "points": 1, + "category": "표", + "item": "제목 문구 (클라우드 보안(단위: 백만 달러))/② 크기 (12pt)" + }, + "35": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "클라우드 보안(단위: 백만 달러)", + "value": true, + "points": 1, + "category": "표", + "item": "제목 문구 (클라우드 보안(단위: 백만 달러))/③ 진하게" + }, + "36": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "클라우드 보안(단위: 백만 달러)", + "value": "Center", + "points": 1, + "category": "표", + "item": "제목 문구 (클라우드 보안(단위: 백만 달러))/④ 정렬 (가운데 정렬)" + }, + "37": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr='2']/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "searchValue": null, + "value": "2862825", + "points": 2, + "category": "표", + "item": "위쪽 제목 셀/① 색상(RGB:233,174,43)" + }, + "38": { + "path": "boolean(//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": null, + "value": true, + "points": 1, + "category": "표", + "item": "위쪽 제목 셀/② 진하게" + }, + "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": "제목 셀 아래선/① 이중실선" + }, + "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" + }, + "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": "글자모양/① 글씨체 (중고딕)" + }, + "42": { + "path": "//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": null, + "value": 1000, + "points": 1, + "category": "표", + "item": "글자모양/② 크기 (10pt)" + }, + "43": { + "path": "//PARASHAPE[@Id=//TABLE/ROW/descendant::P/@ParaShape]/@Align", + "path2": null, + "searchValue": null, + "value": "Center", + "points": 1, + "category": "표", + "item": "글자모양/③ 정렬 (가운데 정렬)" + }, + "44": { + "path": "boolean(//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=SUM') and //TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=SUM')]])", + "path2": null, + "searchValue": null, + "value": true, + "points": 4, + "category": "표", + "item": "블록 계산식/합계" + }, + "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": "① 종류 (묶은 세로 막대형)" + }, + "46": { + "path": "//c:valAx/c:majorTickMark/@val", + "path2": null, + "searchValue": null, + "value": "out", + "points": 2, + "category": "chart_xml", + "item": "② 값 축 주 눈금선" + }, + "47": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width", + "path2": null, + "searchValue": null, + "value": 22677, + "points": 2, + "category": "차트", + "item": "③ 크기-너비 (80mm)" + }, + "48": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height", + "path2": null, + "searchValue": null, + "value": 25511, + "points": 2, + "category": "차트", + "item": "④ 크기-높이 (90mm)" + }, + "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": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)" + }, + "50": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", + "path2": null, + "searchValue": "클라우드 보안 투자", + "value": "굴림", + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (클라우드 보안 투자)/① 글씨체 (굴림)" + }, + "51": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", + "path2": null, + "searchValue": "클라우드 보안 투자", + "value": 1300, + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (클라우드 보안 투자)/② 크기 (13pt)" + }, + "52": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@b", + "path2": null, + "searchValue": "클라우드 보안 투자", + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (클라우드 보안 투자)/③ 진하게" + }, + "53": { + "path": "//c:catAx//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "돋움", + "points": 1, + "category": "chart_xml", + "item": "X축/① 글꼴 (돋움)" + }, + "54": { + "path": "//c:catAx//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "X축/② 크기 (9pt)" + }, + "55": { + "path": "//c:catAx//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "X축/③ 기울임" + }, + "56": { + "path": "//c:valAx//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "돋움", + "points": 1, + "category": "chart_xml", + "item": "Y축/① 글꼴 (돋움)" + }, + "57": { + "path": "//c:valAx//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "Y축/② 크기 (9pt)" + }, + "58": { + "path": "//c:valAx//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "Y축/③ 기울임" + }, + "59": { + "path": "//c:legend//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "돋움", + "points": 1, + "category": "chart_xml", + "item": "범례/① 글꼴 (돋움)" + }, + "60": { + "path": "//c:legend//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "범례/② 크기 (9pt)" + }, + "61": { + "path": "//c:legend//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "범례/③ 기울임" + } + } +} \ No newline at end of file diff --git a/DIW_2504B.json b/DIW_2504B.json new file mode 100644 index 0000000..f678c7a --- /dev/null +++ b/DIW_2504B.json @@ -0,0 +1,863 @@ +{ + "0": { + "0": { + "path": "", + "path2": "", + "points": 0, + "category": "파일저장", + "item": "파일명 (수검번호.hwp/hwpx)" + }, + "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)" + }, + "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%)" + }, + "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": "문구 (친환경에너지박람회)/① 글씨체 : 궁서체" + }, + "2": { + "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": "친환경에너지박람회", + "value": "5395143", + "points": 2, + "category": "글맵시", + "item": "문구 (친환경에너지박람회)/② 채우기 : 색상(RGB:199,82,82)" + }, + "3": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": "친환경에너지박람회", + "value": 31181, + "points": 2, + "category": "글맵시", + "item": "문구 (친환경에너지박람회)/③ 크기 : 너비(110mm)" + }, + "4": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": "친환경에너지박람회", + "value": 5669, + "points": 2, + "category": "글맵시", + "item": "문구 (친환경에너지박람회)/④ 크기 : 높이(20mm)" + }, + "5": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", + "path2": null, + "searchValue": "친환경에너지박람회", + "value": "true", + "points": 2, + "category": "글맵시", + "item": "문구 (친환경에너지박람회)/⑤ 위치 (글자처럼 취급)" + }, + "6": { + "path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "친환경에너지박람회", + "value": "Center", + "points": 2, + "category": "글맵시", + "item": "문구 (친환경에너지박람회)/⑥ 정렬 (가운데 정렬)" + }, + "7": { + "path": "boolean(//TEXTART[@Text='{searchValue}'])", + "path2": null, + "searchValue": "친환경에너지박람회", + "value": true, + "points": 2, + "category": "글맵시", + "item": "문구 (친환경에너지박람회)/⑦ 글맵시모양 (육안확인)" + }, + "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줄)" + }, + "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": "지/② 글씨체 (궁서)" + }, + "10": { + "path": "//RECTANGLE[.//CHAR[text()='지']]//WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": null, + "value": "16768058", + "points": 2, + "category": "문단첫글자장식", + "item": "지/③ 면색 : 색상(RGB:58,220,255)" + }, + "11": { + "path": "//RECTANGLE[.//CHAR[text()='지']]//OUTSIDEMARGIN/@Right", + "path2": null, + "searchValue": null, + "value": "850", + "points": 2, + "category": "문단첫글자장식", + "item": "지/④ 본문과의 간격 : 3.0mm" + }, + "12": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][BOLD])", + "path2": null, + "searchValue": "제주파크", + "value": true, + "points": 2, + "category": "글꼴 속성", + "item": "문구 (제주파크)/① 진하게" + }, + "13": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][UNDERLINE])", + "path2": null, + "searchValue": "제주파크", + "value": true, + "points": 2, + "category": "글꼴 속성", + "item": "문구 (제주파크)/② 밑줄" + }, + "14": { + "path": "count(//CHAR[contains(text(),'▶')]) + 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(),'◀')], '◀', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))", + "searchValue": null, + "value": 3, + "points": 3, + "category": "특수문자", + "item": "① ▶, ② ◀, ③ ※" + }, + "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": "문구 (▶ 행사안내 ◀)/① 글씨체 (중고딕)" + }, + "16": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "행사안내", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (▶ 행사안내 ◀)/② 정렬 (가운데 정렬)" + }, + "17": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][BOLD])", + "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][BOLD])", + "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "블로그(http://www.ihd.or.kr) 참조하여 온라인으로 등록", + "value": true, + "points": 1, + "category": "Hyperlink", + "item": "문구 (블로그(http://www.ihd.or.kr) 참조하여 온라인으로 등록)/① 진하게" + }, + "18": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])", + "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][ITALIC])", + "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "블로그(http://www.ihd.or.kr) 참조하여 온라인으로 등록", + "value": true, + "points": 1, + "category": "Hyperlink", + "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=2000 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": "문구 (※ 기타… 이하 문단)/왼쪽여백 (10pt), 내어쓰기 (12pt)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "2025. 04. 26.", + "value": 1300, + "points": 1, + "category": "글꼴 속성", + "item": "문구 (2025. 04. 26.)/① 크기 (13pt)" + }, + "21": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "2025. 04. 26.", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (2025. 04. 26.)/② 정렬 (가운데 정렬)" + }, + "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": "문구 (친환경에너지발전협의회)/① 글씨체 (돋움)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "친환경에너지발전협의회", + "value": 2700, + "points": 1, + "category": "글꼴 속성", + "item": "문구 (친환경에너지발전협의회)/② 크기 (27pt)" + }, + "24": { + "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "친환경에너지발전협의회", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (친환경에너지발전협의회)/③ 정렬 (가운데 정렬)" + }, + "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)/① 글꼴 (굴림)" + }, + "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)" + }, + "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)/③ 정렬 (오른쪽 정렬)" + }, + "28": { + "path": "//PAGENUM/@FormatType", + "path2": null, + "searchValue": null, + "value": "HangulSyllable", + "points": 2, + "category": "쪽번호", + "item": "① 쪽 번호 매기기 (가,나,다 순으로)" + }, + "29": { + "path": "//PAGENUM/@Pos", + "path2": null, + "searchValue": null, + "value": "BottomCenter", + "points": 2, + "category": "쪽번호", + "item": "② 가운데 아래" + }, + "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": { + "1": { + "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": { + "path": "count(//SECTION)>1", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "다단", + "item": "① 구역나누기" + }, + "3": { + "path": "//COLDEF/@Count>1", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "다단", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": "친환경 에너지", + "value": 14173, + "points": 2, + "category": "글상자", + "item": "문구 (친환경 에너지)/① 크기-너비 (50mm)" + }, + "5": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": "친환경 에너지", + "value": 3402, + "points": 2, + "category": "글상자", + "item": "문구 (친환경 에너지)/② 크기-높이 (12mm)" + }, + "6": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style", + "path2": null, + "searchValue": "친환경 에너지", + "value": "DoubleSlim", + "points": 2, + "category": "글상자", + "item": "문구 (친환경 에너지)/③ 테두리 : 이중 실선(1.00mm)" + }, + "7": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio", + "path2": null, + "searchValue": "친환경 에너지", + "value": 20, + "points": 2, + "category": "글상자", + "item": "문구 (친환경 에너지)/④ 글상자 모서리 (둥근 모양)" + }, + "8": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": "친환경 에너지", + "value": "9537333", + "points": 2, + "category": "글상자", + "item": "문구 (친환경 에너지)/⑤ 채우기 : 색상(RGB:53,135,145)" + }, + "9": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", + "path2": null, + "searchValue": "친환경 에너지", + "value": "true", + "points": 1, + "category": "글상자", + "item": "문구 (친환경 에너지)/⑥ 글상자 위치 (글자처럼 취급)" + }, + "10": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", + "path2": null, + "searchValue": "친환경 에너지", + "value": "Center", + "points": 1, + "category": "글상자", + "item": "문구 (친환경 에너지)/⑦ 글상자 정렬 (가운데 정렬)" + }, + "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": "문구 (친환경 에너지)/⑧ 글씨체 (궁서체)" + }, + "12": { + "path": "boolean(//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='2000')", + "path2": null, + "searchValue": "친환경 에너지", + "value": true, + "points": 1, + "category": "글상자", + "item": "문구 (친환경 에너지)/⑨ 글씨크기 (20pt)" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align", + "path2": null, + "searchValue": "친환경 에너지", + "value": "Center", + "points": 1, + "category": "글상자", + "item": "문구 (친환경 에너지)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "boolean(//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])", + "path2": null, + "searchValue": "원본 그림의 이름: 그림", + "value": true, + "points": 2, + "category": "그림삽입", + "item": "① 파일명 \"그림B.jpg\" 삽입" + }, + "15": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": null, + "value": 24094, + "points": 2, + "category": "그림삽입", + "item": "② 크기-너비 (85mm)" + }, + "16": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": null, + "value": 11338, + "points": 2, + "category": "그림삽입", + "item": "③ 크기-높이 (40mm)" + }, + "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)" + }, + "18": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset", + "path2": null, + "searchValue": null, + "value": 6800, + "points": 2, + "category": "그림삽입", + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24mm)" + }, + "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. 친환경 에너지 개요)/① 글씨체 (돋움)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "1. 친환경 에너지 개요", + "value": 1200, + "points": 1, + "category": "속성", + "item": "문구① (1. 친환경 에너지 개요)/② 크기 (12pt)" + }, + "21": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "1. 친환경 에너지 개요", + "value": true, + "points": 1, + "category": "속성", + "item": "문구① (1. 친환경 에너지 개요)/③ 진하게" + }, + "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. 신재생 에너지)/① 글씨체 (돋움)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "2. 신재생 에너지", + "value": 1200, + "points": 1, + "category": "속성", + "item": "문구② (2. 신재생 에너지)/② 크기 (12pt)" + }, + "24": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "2. 신재생 에너지", + "value": true, + "points": 1, + "category": "속성", + "item": "문구② (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": "문구 (태양전지)/① 문구입력" + }, + "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": "문구 (태양전지)/② 글씨체 (굴림)" + }, + "27": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "태양의 빛에너지를 전기에너지로 변환시켜 전기를 발생하는 장치로 친환경 방식으로 알려져 있음", + "value": 900, + "points": 1, + "category": "각주", + "item": "문구 (태양전지)/③ 크기 (9pt)" + }, + "28": { + "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", + "path2": null, + "searchValue": "태양의 빛에너지를 전기에너지로 변환시켜 전기를 발생하는 장치로 친환경 방식으로 알려져 있음", + "value": "CircledHangulJamo", + "points": 2, + "category": "각주", + "item": "문구 (태양전지)/④ 각주 번호 모양" + }, + "29": { + "path": "boolean(//CHAR[contains(text(),'Campaign')])", + "path2": null, + "ignoreWord": "Campaign", + "value": true, + "points": 3, + "category": "영단어", + "item": "Campaign/영단어 미입력, 대소문자/오타 시 전체 감점" + }, + "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": "① 한옥(韓屋), ② 사계절(四季節), ③거주(居住), ④ 구조(構造), ⑤ 골격(骨格)" + }, + "31": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'택을제공')])", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "편집", + "item": "문구 (…세금 혜택이 제공하고 있으며…)/\"이\" → \"을\" 글자바꿈" + }, + "32": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'탄소배출')])", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "편집", + "item": "문구 (…배출 탄소 규제가 강화되면서…)/\"배출\" / \"탄소\" 순서바꿈" + }, + "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": "제목 문구 (친환경 에너지 성장률(단위: %))/① 글씨체 (돋움)" + }, + "34": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "친환경 에너지 성장률(단위: %)", + "value": 1200, + "points": 1, + "category": "표", + "item": "제목 문구 (친환경 에너지 성장률(단위: %))/② 크기 (12pt)" + }, + "35": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "친환경 에너지 성장률(단위: %)", + "value": true, + "points": 1, + "category": "표", + "item": "제목 문구 (친환경 에너지 성장률(단위: %))/③ 진하게" + }, + "36": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "친환경 에너지 성장률(단위: %)", + "value": "Center", + "points": 1, + "category": "표", + "item": "제목 문구 (친환경 에너지 성장률(단위: %))/④ 정렬 (가운데 정렬)" + }, + "37": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr='2']/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "searchValue": null, + "value": "10966730", + "points": 2, + "category": "표", + "item": "위쪽 제목 셀/① 색상(RGB:202,86,167)" + }, + "38": { + "path": "boolean(//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": null, + "value": true, + "points": 1, + "category": "표", + "item": "위쪽 제목 셀/② 진하게" + }, + "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": "제목 셀 아래선/① 이중 실선" + }, + "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" + }, + "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": "글자모양/① 글씨체 (중고딕)" + }, + "42": { + "path": "//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": null, + "value": 1000, + "points": 1, + "category": "표", + "item": "글자모양/② 크기 (10pt)" + }, + "43": { + "path": "//PARASHAPE[@Id=//TABLE/ROW/descendant::P/@ParaShape]/@Align", + "path2": null, + "searchValue": null, + "value": "Center", + "points": 1, + "category": "표", + "item": "글자모양/③ 정렬 (가운데 정렬)" + }, + "44": { + "path": "boolean(//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=SUM') and //TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=SUM')]])", + "path2": null, + "searchValue": null, + "value": true, + "points": 4, + "category": "표", + "item": "블록계산식/평균" + }, + "45": { + "path": "//c:lineChart/c:grouping/@val='standard'", + "path2": null, + "searchValue": null, + "value": true, + "points": 2, + "category": "chart_xml", + "item": "① 종류 (꺾은선형)" + }, + "46": { + "path": "//c:valAx/c:majorTickMark/@val", + "path2": null, + "searchValue": null, + "value": "out", + "points": 2, + "category": "chart_xml", + "item": "② 값 축 주 눈금선" + }, + "47": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width", + "path2": null, + "searchValue": null, + "value": 22677, + "points": 2, + "category": "차트", + "item": "③ 크기-너비 (80mm)" + }, + "48": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height", + "path2": null, + "searchValue": null, + "value": 22677, + "points": 2, + "category": "차트", + "item": "④ 크기-높이 (80mm)" + }, + "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": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)" + }, + "50": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", + "path2": null, + "searchValue": "친환경 에너지 성장률", + "value": "궁서체", + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (친환경 에너지 성장률)/① 글씨체 (궁서체)" + }, + "51": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", + "path2": null, + "searchValue": "친환경 에너지 성장률", + "value": 1300, + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (친환경 에너지 성장률)/② 크기 (13pt)" + }, + "52": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@b", + "path2": null, + "searchValue": "친환경 에너지 성장률", + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (친환경 에너지 성장률)/③ 진하게" + }, + "53": { + "path": "//c:catAx//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "바탕", + "points": 1, + "category": "chart_xml", + "item": "X축/① 글꼴 (바탕)" + }, + "54": { + "path": "//c:catAx//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "X축/② 크기 (9pt)" + }, + "55": { + "path": "//c:catAx//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "X축/③ 기울임" + }, + "56": { + "path": "//c:valAx//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "바탕", + "points": 1, + "category": "chart_xml", + "item": "Y축/① 글꼴 (바탕)" + }, + "57": { + "path": "//c:valAx//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "Y축/② 크기 (9pt)" + }, + "58": { + "path": "//c:valAx//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "Y축/③ 기울임" + }, + "59": { + "path": "//c:legend//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "바탕", + "points": 1, + "category": "chart_xml", + "item": "범례/① 글꼴 (바탕)" + }, + "60": { + "path": "//c:legend//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "범례/② 크기 (9pt)" + }, + "61": { + "path": "//c:legend//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "범례/③ 기울임" + } + } +} \ No newline at end of file diff --git a/DIW_2504C.json b/DIW_2504C.json new file mode 100644 index 0000000..b546967 --- /dev/null +++ b/DIW_2504C.json @@ -0,0 +1,863 @@ +{ + "0": { + "0": { + "path": "", + "path2": "", + "points": 0, + "category": "파일저장", + "item": "파일명 (수검번호.hwp/hwpx)" + }, + "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)" + }, + "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%)" + }, + "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": "문구 (서울국제도서박람회)/① 글씨체 : 돋움" + }, + "2": { + "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": "서울국제도서박람회", + "value": "6438172", + "points": 2, + "category": "글맵시", + "item": "문구 (서울국제도서박람회)/② 채우기 : 색상(RGB:28,61,98)" + }, + "3": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": "서울국제도서박람회", + "value": 28346, + "points": 2, + "category": "글맵시", + "item": "문구 (서울국제도서박람회)/③ 크기 : 너비(100mm)" + }, + "4": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": "서울국제도서박람회", + "value": 5669, + "points": 2, + "category": "글맵시", + "item": "문구 (서울국제도서박람회)/④ 크기 : 높이(20mm)" + }, + "5": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", + "path2": null, + "searchValue": "서울국제도서박람회", + "value": "true", + "points": 2, + "category": "글맵시", + "item": "문구 (서울국제도서박람회)/⑤ 위치 (글자처럼 취급)" + }, + "6": { + "path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "서울국제도서박람회", + "value": "Center", + "points": 2, + "category": "글맵시", + "item": "문구 (서울국제도서박람회)/⑥ 정렬 (가운데 정렬)" + }, + "7": { + "path": "boolean(//TEXTART[@Text='{searchValue}'])", + "path2": null, + "searchValue": "서울국제도서박람회", + "value": true, + "points": 2, + "category": "글맵시", + "item": "문구 (서울국제도서박람회)/⑦ 글맵시모양 (육안확인)" + }, + "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줄)" + }, + "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": "책/② 글씨체 (돋움)" + }, + "10": { + "path": "//RECTANGLE[.//CHAR[text()='책']]//WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": null, + "value": "1943246", + "points": 2, + "category": "문단첫글자장식", + "item": "책/③ 면색 : 색상(RGB:206,166,29)" + }, + "11": { + "path": "//RECTANGLE[.//CHAR[text()='책']]//OUTSIDEMARGIN/@Right", + "path2": null, + "searchValue": null, + "value": "850", + "points": 2, + "category": "문단첫글자장식", + "item": "책/④ 본문과의 간격 : 3.0mm" + }, + "12": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][BOLD])", + "path2": null, + "searchValue": "문학, 인문학, 어린이/청소년 도서, 전자책, 독립 출판", + "value": true, + "points": 2, + "category": "글꼴 속성", + "item": "문구 (문학, 인문학, 어린이/청소년 도서, 전자책, 독립 출판)/① 진하게" + }, + "13": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][ITALIC])", + "path2": null, + "searchValue": "문학, 인문학, 어린이/청소년 도서, 전자책, 독립 출판", + "value": true, + "points": 2, + "category": "글꼴 속성", + "item": "문구 (문학, 인문학, 어린이/청소년 도서, 전자책, 독립 출판)/② 기울임" + }, + "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": "① ◆, ② ◆, ③ ※" + }, + "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": "문구 (◆ 행사안내 ◆)/① 글씨체 (궁서)" + }, + "16": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "행사안내", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (◆ 행사안내 ◆)/② 정렬 (가운데 정렬)" + }, + "17": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])", + "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][ITALIC])", + "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "서울 국제 도서 박람회 홈페이지(http://www.ihd.or.kr) 참조", + "value": true, + "points": 1, + "category": "Hyperlink", + "item": "문구 (서울 국제 도서 박람회 홈페이지(http://www.ihd.or.kr) 참조)/① 기울임" + }, + "18": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][UNDERLINE])", + "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][UNDERLINE])", + "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "서울 국제 도서 박람회 홈페이지(http://www.ihd.or.kr) 참조", + "value": true, + "points": 1, + "category": "Hyperlink", + "item": "문구 (서울 국제 도서 박람회 홈페이지(http://www.ihd.or.kr) 참조)/② 밑줄" + }, + "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)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "2025. 04. 26.", + "value": 1300, + "points": 1, + "category": "글꼴 속성", + "item": "문구 (2025. 04. 26.)/① 크기 (13pt)" + }, + "21": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "2025. 04. 26.", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (2025. 04. 26.)/② 정렬 (가운데 정렬)" + }, + "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": "문구 (서울국제도서박람회)/① 글씨체 (견고딕)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "서울국제도서박람회", + "value": 2500, + "points": 1, + "category": "글꼴 속성", + "item": "문구 (서울국제도서박람회)/② 크기 (25pt)" + }, + "24": { + "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "서울국제도서박람회", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (서울국제도서박람회)/③ 정렬 (가운데 정렬)" + }, + "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)/① 글꼴 (중고딕)" + }, + "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)" + }, + "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)/③ 정렬 (오른쪽 정렬)" + }, + "28": { + "path": "//PAGENUM/@FormatType", + "path2": null, + "searchValue": null, + "value": "RomanSmall", + "points": 2, + "category": "쪽번호", + "item": "① 쪽 번호 매기기 (i,ii,iii 순으로)" + }, + "29": { + "path": "//PAGENUM/@Pos", + "path2": null, + "searchValue": null, + "value": "BottomRight", + "points": 2, + "category": "쪽번호", + "item": "② 오른쪽 아래" + }, + "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": { + "1": { + "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": { + "path": "count(//SECTION)>1", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "다단", + "item": "① 구역나누기" + }, + "3": { + "path": "//COLDEF/@Count>1", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "다단", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": "출판 산업 트렌드", + "value": 19842, + "points": 2, + "category": "글상자", + "item": "문구 (출판 산업 트렌드)/① 크기-너비 (70mm)" + }, + "5": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": "출판 산업 트렌드", + "value": 3402, + "points": 2, + "category": "글상자", + "item": "문구 (출판 산업 트렌드)/② 크기-높이 (12mm)" + }, + "6": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style", + "path2": null, + "searchValue": "출판 산업 트렌드", + "value": "DoubleSlim", + "points": 2, + "category": "글상자", + "item": "문구 (출판 산업 트렌드)/③ 테두리 : 이중 실선(1.00mm)" + }, + "7": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio", + "path2": null, + "searchValue": "출판 산업 트렌드", + "value": 50, + "points": 2, + "category": "글상자", + "item": "문구 (출판 산업 트렌드)/④ 글상자 모서리 (반원)" + }, + "8": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": "출판 산업 트렌드", + "value": "5395143", + "points": 2, + "category": "글상자", + "item": "문구 (출판 산업 트렌드)/⑤ 채우기 : 색상(RGB:199,82,82)" + }, + "9": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", + "path2": null, + "searchValue": "출판 산업 트렌드", + "value": "true", + "points": 1, + "category": "글상자", + "item": "문구 (출판 산업 트렌드)/⑥ 글상자 위치 (글자처럼 취급)" + }, + "10": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", + "path2": null, + "searchValue": "출판 산업 트렌드", + "value": "Center", + "points": 1, + "category": "글상자", + "item": "문구 (출판 산업 트렌드)/⑦ 글상자 정렬 (가운데 정렬)" + }, + "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": "문구 (출판 산업 트렌드)/⑧ 글씨체 (휴먼옛체)" + }, + "12": { + "path": "boolean(//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='2000')", + "path2": null, + "searchValue": "출판 산업 트렌드", + "value": true, + "points": 1, + "category": "글상자", + "item": "문구 (출판 산업 트렌드)/⑨ 글씨크기 (20pt)" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align", + "path2": null, + "searchValue": "출판 산업 트렌드", + "value": "Center", + "points": 1, + "category": "글상자", + "item": "문구 (출판 산업 트렌드)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "boolean(//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])", + "path2": null, + "searchValue": "원본 그림의 이름: 그림", + "value": true, + "points": 2, + "category": "그림삽입", + "item": "① 파일명 \"그림C.jpg\" 삽입" + }, + "15": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": null, + "value": 24094, + "points": 2, + "category": "그림삽입", + "item": "② 크기-너비 (85mm)" + }, + "16": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": null, + "value": 11338, + "points": 2, + "category": "그림삽입", + "item": "③ 크기-높이 (40mm)" + }, + "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)" + }, + "18": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset", + "path2": null, + "searchValue": null, + "value": 6800, + "points": 2, + "category": "그림삽입", + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24mm)" + }, + "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. 출판 산업의 확장)/① 글씨체 (굴림)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "1. 출판 산업의 확장", + "value": 1200, + "points": 1, + "category": "속성", + "item": "문구① (1. 출판 산업의 확장)/② 크기 (12pt)" + }, + "21": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "1. 출판 산업의 확장", + "value": true, + "points": 1, + "category": "속성", + "item": "문구① (1. 출판 산업의 확장)/③ 진하게" + }, + "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. 도서 박람회의 가치)/① 글씨체 (굴림)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "2. 도서 박람회의 가치", + "value": 1200, + "points": 1, + "category": "속성", + "item": "문구② (2. 도서 박람회의 가치)/② 크기 (12pt)" + }, + "24": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "2. 도서 박람회의 가치", + "value": true, + "points": 1, + "category": "속성", + "item": "문구② (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": "문구 (오디오북)/① 문구입력" + }, + "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": "문구 (오디오북)/② 글씨체 (궁서)" + }, + "27": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "눈으로 읽는 대신 귀로 들을 수 있게 책의 내용(문자)을 음성으로 녹음하여 기록한 것을 의미함", + "value": 900, + "points": 1, + "category": "각주", + "item": "문구 (오디오북)/③ 크기 (9pt)" + }, + "28": { + "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", + "path2": null, + "searchValue": "눈으로 읽는 대신 귀로 들을 수 있게 책의 내용(문자)을 음성으로 녹음하여 기록한 것을 의미함", + "value": "CircledLatinSmall", + "points": 2, + "category": "각주", + "item": "문구 (오디오북)/④ 각주 번호 모양" + }, + "29": { + "path": "boolean(//CHAR[contains(text(),'Platform')])", + "path2": null, + "ignoreWord": "Platform", + "value": true, + "points": 3, + "category": "영단어", + "item": "cornerstone/영단어 미입력, 대소문자/오타 시 전체 감점" + }, + "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": "① 출판(出版), ② 독자(讀者), ③ 박람회(博覽會), ④ 교류(交流), ⑤ 증가(增加)" + }, + "31": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'래도점점')])", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "편집", + "item": "문구 (…콘텐츠 거래는 점점…)/\"는\" → \"도\" 글자바꿈" + }, + "32": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'양한산업')])", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "편집", + "item": "문구 (…요식업 등의 산업과 다양한 연계되며…)/\"산업과\" / \"다양한\" 순서바꿈" + }, + "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": "제목 문구 (출판 산업 성장률(단위: %))/① 글씨체 (돋움)" + }, + "34": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "출판 산업 성장률(단위: %)", + "value": 1200, + "points": 1, + "category": "표", + "item": "제목 문구 (출판 산업 성장률(단위: %))/② 크기 (12pt)" + }, + "35": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "출판 산업 성장률(단위: %)", + "value": true, + "points": 1, + "category": "표", + "item": "제목 문구 (출판 산업 성장률(단위: %))/③ 진하게" + }, + "36": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "출판 산업 성장률(단위: %)", + "value": "Center", + "points": 1, + "category": "표", + "item": "제목 문구 (출판 산업 성장률(단위: %))/④ 정렬 (가운데 정렬)" + }, + "37": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr='2']/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "searchValue": null, + "value": "2862825", + "points": 2, + "category": "표", + "item": "위쪽 제목 셀/① 색상(RGB:233,174,43)" + }, + "38": { + "path": "boolean(//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": null, + "value": true, + "points": 1, + "category": "표", + "item": "위쪽 제목 셀/② 진하게" + }, + "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": "제목 셀 아래선/① 이중 실선" + }, + "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" + }, + "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": "글자모양/① 글씨체 (중고딕)" + }, + "42": { + "path": "//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": null, + "value": 1000, + "points": 1, + "category": "표", + "item": "글자모양/② 크기 (10pt)" + }, + "43": { + "path": "//PARASHAPE[@Id=//TABLE/ROW/descendant::P/@ParaShape]/@Align", + "path2": null, + "searchValue": null, + "value": "Center", + "points": 1, + "category": "표", + "item": "글자모양/③ 정렬 (가운데 정렬)" + }, + "44": { + "path": "boolean(//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=AVG') and //TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=AVG')]])", + "path2": null, + "searchValue": null, + "value": true, + "points": 4, + "category": "표", + "item": "블록계산식/평균" + }, + "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": "① 종류 (묶은 가로 막대형)" + }, + "46": { + "path": "//c:valAx/c:majorTickMark/@val", + "path2": null, + "searchValue": null, + "value": "out", + "points": 2, + "category": "chart_xml", + "item": "② 값 축 주 눈금선" + }, + "47": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width", + "path2": null, + "searchValue": null, + "value": 22677, + "points": 2, + "category": "차트", + "item": "③ 크기-너비 (80mm)" + }, + "48": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height", + "path2": null, + "searchValue": null, + "value": 22677, + "points": 2, + "category": "차트", + "item": "④ 크기-높이 (80mm)" + }, + "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": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)" + }, + "50": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", + "path2": null, + "searchValue": "출판 산업 성장률", + "value": "바탕", + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (출판 산업 성장률)/① 글씨체 (바탕)" + }, + "51": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", + "path2": null, + "searchValue": "출판 산업 성장률", + "value": 1200, + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (출판 산업 성장률)/② 크기 (12pt)" + }, + "52": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@b", + "path2": null, + "searchValue": "출판 산업 성장률", + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (출판 산업 성장률)/③ 진하게" + }, + "53": { + "path": "//c:catAx//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "돋움", + "points": 1, + "category": "chart_xml", + "item": "X축/① 글꼴 (돋움)" + }, + "54": { + "path": "//c:catAx//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "X축/② 크기 (9pt)" + }, + "55": { + "path": "//c:catAx//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "X축/③ 기울임" + }, + "56": { + "path": "//c:valAx//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "돋움", + "points": 1, + "category": "chart_xml", + "item": "Y축/① 글꼴 (돋움)" + }, + "57": { + "path": "//c:valAx//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "Y축/② 크기 (9pt)" + }, + "58": { + "path": "//c:valAx//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "Y축/③ 기울임" + }, + "59": { + "path": "//c:legend//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "돋움", + "points": 1, + "category": "chart_xml", + "item": "범례/① 글꼴 (돋움)" + }, + "60": { + "path": "//c:legend//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "범례/② 크기 (9pt)" + }, + "61": { + "path": "//c:legend//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "범례/③ 기울임" + } + } +} \ No newline at end of file diff --git a/DIW_2504_2A.json b/DIW_2504_2A.json new file mode 100644 index 0000000..e6d409e --- /dev/null +++ b/DIW_2504_2A.json @@ -0,0 +1,863 @@ +{ + "0": { + "0": { + "path": "", + "path2": "", + "points": 0, + "category": "파일저장", + "item": "파일명 (수검번호.hwp/hwpx)" + }, + "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)" + }, + "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%)" + }, + "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": "문구 (한옥마을사생대회안내)/① 글씨체 (궁서)" + }, + "2": { + "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": "6072932", + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/② 채우기 : 색상(RGB:100,170,92)" + }, + "3": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": 28346, + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/③ 크기-너비 (100mm)" + }, + "4": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": 5669, + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/④ 크기-높이 (20mm)" + }, + "5": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": "true", + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/⑤ 위치 (글자처럼 취급)" + }, + "6": { + "path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": "Center", + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/⑥ 정렬 (가운데 정렬)" + }, + "7": { + "path": "boolean(//TEXTART[@Text='{searchValue}'])", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": true, + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/⑦ 글맵시모양 (육안확인)" + }, + "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줄)" + }, + "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": "자/② 글씨체 (맑은 고딕)" + }, + "10": { + "path": "//RECTANGLE[.//CHAR[text()='자']]//WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": null, + "value": "9537333", + "points": 2, + "category": "문단첫글자장식", + "item": "자/③ 면색 : 색상(RGB:105,155,55)" + }, + "11": { + "path": "//RECTANGLE[.//CHAR[text()='자']]//OUTSIDEMARGIN/@Right", + "path2": null, + "searchValue": null, + "value": "850", + "points": 2, + "category": "문단첫글자장식", + "item": "자/④ 본문과의 간격 : 3.0mm" + }, + "12": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][BOLD])", + "path2": null, + "searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회", + "value": true, + "points": 2, + "category": "글꼴 속성", + "item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/① 기울임" + }, + "13": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][UNDERLINE])", + "path2": null, + "searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회", + "value": true, + "points": 2, + "category": "글꼴 속성", + "item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/② 밑줄" + }, + "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": "① ■, ② ■, ③ ※" + }, + "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": "문구 (■ 행사안내 ■)/① 글씨체 (돋움)" + }, + "16": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "행사안내", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (■ 행사안내 ■)/② 정렬 (가운데 정렬)" + }, + "17": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])", + "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][ITALIC])", + "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수", + "value": true, + "points": 1, + "category": "Hyperlink", + "item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/① 진하게" + }, + "18": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][UNDERLINE])", + "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][UNDERLINE])", + "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수", + "value": true, + "points": 1, + "category": "Hyperlink", + "item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/② 밑줄" + }, + "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)" + }, + "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)" + }, + "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.)/② 정렬 (가운데 정렬)" + }, + "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": "문구 (한국고건축협회)/① 글씨체 (궁서)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "한국고건축협회", + "value": 2400, + "points": 1, + "category": "글꼴 속성", + "item": "문구 (한국고건축협회)/② 크기 (24pt)" + }, + "24": { + "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "한국고건축협회", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (한국고건축협회)/③ 정렬 (가운데 정렬)" + }, + "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)/① 글꼴 (굴림)" + }, + "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)" + }, + "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)/③ 정렬 (오른쪽 정렬)" + }, + "28": { + "path": "//PAGENUM/@FormatType", + "path2": null, + "searchValue": null, + "value": "HangulSyllable", + "points": 2, + "category": "쪽번호", + "item": "① 쪽 번호 매기기 (가,나,다 순으로)" + }, + "29": { + "path": "//PAGENUM/@Pos", + "path2": null, + "searchValue": null, + "value": "BottomCenter", + "points": 2, + "category": "쪽번호", + "item": "② 가운데 아래" + }, + "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": { + "1": { + "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": { + "path": "count(//SECTION)>1", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "다단", + "item": "① 구역나누기" + }, + "3": { + "path": "//COLDEF/@Count>1", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "다단", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": 19842, + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/① 크기-너비 (70mm)" + }, + "5": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": 3401, + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/② 크기-높이 (12mm)" + }, + "6": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "DoubleSlim", + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/③ 테두리 (이중실선(1.00mm))" + }, + "7": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": 20, + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/④ 글상자 모서리 (반원)" + }, + "8": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "12704995", + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑤ 채우기 : 색상(RGB:53,135,145)" + }, + "9": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "true", + "points": 1, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑥ 글상자 위치 (글자처럼 취급)" + }, + "10": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "Center", + "points": 1, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑦ 글상자 정렬 (가운데 정렬)" + }, + "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": "문구 (한옥의 형태와 구조)/⑧ 글씨체 (견고딕)" + }, + "12": { + "path": "boolean(//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='2000')", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": true, + "points": 1, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑨ 글씨크기 (20pt)" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "Center", + "points": 1, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "boolean(//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])", + "path2": null, + "searchValue": "원본 그림의 이름: 그림", + "value": true, + "points": 2, + "category": "그림삽입", + "item": "① 파일명 \"그림A.jpg\" 삽입" + }, + "15": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": null, + "value": 24094, + "points": 2, + "category": "그림삽입", + "item": "② 크기-너비 (85mm)" + }, + "16": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": null, + "value": 11338, + "points": 2, + "category": "그림삽입", + "item": "③ 크기-높이 (40mm)" + }, + "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)" + }, + "18": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset", + "path2": null, + "searchValue": null, + "value": 6236, + "points": 2, + "category": "그림삽입", + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 22mm)" + }, + "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. 한옥)/① 글씨체 (돋움)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "1. 한옥", + "value": 1200, + "points": 1, + "category": "속성", + "item": "문구① (1. 한옥)/② 크기 (12pt)" + }, + "21": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "1. 한옥", + "value": true, + "points": 1, + "category": "속성", + "item": "문구① (1. 한옥)/③ 진하게" + }, + "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. 한옥의 형태와 구조)/① 글씨체 (돋움)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "2. 한옥의 형태와 구조", + "value": 1200, + "points": 1, + "category": "속성", + "item": "문구② (2. 한옥의 형태와 구조)/② 크기 (12pt)" + }, + "24": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "2. 한옥의 형태와 구조", + "value": true, + "points": 1, + "category": "속성", + "item": "문구② (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": "문구 (기초)/① 각주 설정 및 문구 입력" + }, + "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": "문구 (기초)/② 글씨체 (한양중고딕)" + }, + "27": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", + "value": 900, + "points": 1, + "category": "각주", + "item": "문구 (기초)/③ 크기 (9pt)" + }, + "28": { + "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", + "path2": null, + "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", + "value": "CircledDigit", + "points": 2, + "category": "각주", + "item": "문구 (기초)/④ 각주 번호모양" + }, + "29": { + "path": "boolean(//CHAR[contains(text(),'cornerstone')])", + "path2": null, + "ignoreWord": "cornerstone", + "value": true, + "points": 3, + "category": "영단어", + "item": "cornerstone/영단어 미입력, 대소문자/오타 시 전체 감점" + }, + "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": "① 한옥(韓屋), ② 사계절(四季節), ③거주(居住), ④ 구조(構造), ⑤ 골격(骨格)" + }, + "31": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'철의추운')])", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "편집", + "item": "문구 (…더운 날씨와 겨울철이 추운…)/\"이\" → \"의\" 글자바꿈" + }, + "32": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'돌과마루')])", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "편집", + "item": "문구 (…대비해 마루를 온돌과 갖고…)/\"마루를\" / \"온돌과\" 순서바꿈" + }, + "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": "제목 문구 (교육기관별 참가인원)/① 글씨체 (궁서)" + }, + "34": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": 1200, + "points": 1, + "category": "표", + "item": "제목 문구 (교육기관별 참가인원)/② 크기 (12pt)" + }, + "35": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": true, + "points": 1, + "category": "표", + "item": "제목 문구 (교육기관별 참가인원)/③ 진하게" + }, + "36": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": "Center", + "points": 1, + "category": "표", + "item": "제목 문구 (교육기관별 참가인원)/④ 정렬 (가운데 정렬)" + }, + "37": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr='2']/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "searchValue": null, + "value": "7629528", + "points": 2, + "category": "표", + "item": "위쪽 제목 셀/① 색상(RGB:216,106,116)" + }, + "38": { + "path": "boolean(//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": null, + "value": true, + "points": 1, + "category": "표", + "item": "위쪽 제목 셀/② 진하게" + }, + "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": "제목 셀 아래선/① 이중실선" + }, + "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" + }, + "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": "글자모양/① 글씨체 (굴림)" + }, + "42": { + "path": "//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": null, + "value": 1000, + "points": 1, + "category": "표", + "item": "글자모양/② 크기 (10pt)" + }, + "43": { + "path": "//PARASHAPE[@Id=//TABLE/ROW/descendant::P/@ParaShape]/@Align", + "path2": null, + "searchValue": null, + "value": "Center", + "points": 1, + "category": "표", + "item": "글자모양/③ 정렬 (가운데 정렬)" + }, + "44": { + "path": "boolean(//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=AVG') and //TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=AVG')]])", + "path2": null, + "searchValue": null, + "value": true, + "points": 4, + "category": "표", + "item": "블록계산식/평균" + }, + "45": { + "path": "boolean(//c:lineChart/c:grouping/@val='standard')", + "path2": null, + "searchValue": null, + "value": true, + "points": 2, + "category": "chart_xml", + "item": "① 종류 (묶은세로막대형)" + }, + "46": { + "path": "//c:valAx/c:majorTickMark/@val", + "path2": null, + "searchValue": null, + "value": "out", + "points": 2, + "category": "chart_xml", + "item": "② 값 축 주 눈금선" + }, + "47": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width", + "path2": null, + "searchValue": null, + "value": 22677, + "points": 2, + "category": "차트", + "item": "③ 크기-너비 (80mm)" + }, + "48": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height", + "path2": null, + "searchValue": null, + "value": 25511, + "points": 2, + "category": "차트", + "item": "④ 크기-높이 (90mm)" + }, + "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": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)" + }, + "50": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": "굴림체", + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (교육기관별 참가인원)/① 글씨체 (굴림체)" + }, + "51": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": 1300, + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (교육기관별 참가인원)/② 크기 (13pt)" + }, + "52": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@b", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (교육기관별 참가인원)/③ 진하게" + }, + "53": { + "path": "//c:catAx//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "굴림", + "points": 1, + "category": "chart_xml", + "item": "X축/① 글꼴 (굴림)" + }, + "54": { + "path": "//c:catAx//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "X축/② 크기 (9pt)" + }, + "55": { + "path": "//c:catAx//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "X축/③ 기울임" + }, + "56": { + "path": "//c:valAx//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "굴림", + "points": 1, + "category": "chart_xml", + "item": "Y축/① 글꼴 (굴림)" + }, + "57": { + "path": "//c:valAx//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "Y축/② 크기 (9pt)" + }, + "58": { + "path": "//c:valAx//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "Y축/③ 기울임" + }, + "59": { + "path": "//c:legend//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "굴림", + "points": 1, + "category": "chart_xml", + "item": "범례/① 글꼴 (굴림)" + }, + "60": { + "path": "//c:legend//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "범례/② 크기 (9pt)" + }, + "61": { + "path": "//c:legend//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "범례/③ 기울임" + } + } +} \ No newline at end of file diff --git a/DIW_2504A_test.json b/DIW_2504_2_A_new.json similarity index 95% rename from DIW_2504A_test.json rename to DIW_2504_2_A_new.json index 11f2eaa..ce4dc92 100644 --- a/DIW_2504A_test.json +++ b/DIW_2504_2_A_new.json @@ -299,5 +299,16 @@ "item": "문제 1 줄간격 180% 설정", "desc": "1페이지 문단의 줄간격이 180%가 아닌 문단이 있으면 False(감점)" } + }, + "2": { + "1": { + "path": "//SECTION[2]//PAGEBORDERFILL[@Type='Both' or @Type='Even']", + "path2": "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')", + "value": true, + "points": 4, + "category": "PageBorder", + "item": "문제2 쪽테두리(이중 실선, 머리말 포함) 설정" + }, + "61": {} } } \ No newline at end of file diff --git a/DIW_2504_3B.json b/DIW_2504_3B.json new file mode 100644 index 0000000..e6d409e --- /dev/null +++ b/DIW_2504_3B.json @@ -0,0 +1,863 @@ +{ + "0": { + "0": { + "path": "", + "path2": "", + "points": 0, + "category": "파일저장", + "item": "파일명 (수검번호.hwp/hwpx)" + }, + "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)" + }, + "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%)" + }, + "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": "문구 (한옥마을사생대회안내)/① 글씨체 (궁서)" + }, + "2": { + "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": "6072932", + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/② 채우기 : 색상(RGB:100,170,92)" + }, + "3": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": 28346, + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/③ 크기-너비 (100mm)" + }, + "4": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": 5669, + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/④ 크기-높이 (20mm)" + }, + "5": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": "true", + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/⑤ 위치 (글자처럼 취급)" + }, + "6": { + "path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": "Center", + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/⑥ 정렬 (가운데 정렬)" + }, + "7": { + "path": "boolean(//TEXTART[@Text='{searchValue}'])", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": true, + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/⑦ 글맵시모양 (육안확인)" + }, + "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줄)" + }, + "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": "자/② 글씨체 (맑은 고딕)" + }, + "10": { + "path": "//RECTANGLE[.//CHAR[text()='자']]//WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": null, + "value": "9537333", + "points": 2, + "category": "문단첫글자장식", + "item": "자/③ 면색 : 색상(RGB:105,155,55)" + }, + "11": { + "path": "//RECTANGLE[.//CHAR[text()='자']]//OUTSIDEMARGIN/@Right", + "path2": null, + "searchValue": null, + "value": "850", + "points": 2, + "category": "문단첫글자장식", + "item": "자/④ 본문과의 간격 : 3.0mm" + }, + "12": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][BOLD])", + "path2": null, + "searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회", + "value": true, + "points": 2, + "category": "글꼴 속성", + "item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/① 기울임" + }, + "13": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][UNDERLINE])", + "path2": null, + "searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회", + "value": true, + "points": 2, + "category": "글꼴 속성", + "item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/② 밑줄" + }, + "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": "① ■, ② ■, ③ ※" + }, + "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": "문구 (■ 행사안내 ■)/① 글씨체 (돋움)" + }, + "16": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "행사안내", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (■ 행사안내 ■)/② 정렬 (가운데 정렬)" + }, + "17": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])", + "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][ITALIC])", + "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수", + "value": true, + "points": 1, + "category": "Hyperlink", + "item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/① 진하게" + }, + "18": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][UNDERLINE])", + "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][UNDERLINE])", + "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수", + "value": true, + "points": 1, + "category": "Hyperlink", + "item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/② 밑줄" + }, + "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)" + }, + "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)" + }, + "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.)/② 정렬 (가운데 정렬)" + }, + "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": "문구 (한국고건축협회)/① 글씨체 (궁서)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "한국고건축협회", + "value": 2400, + "points": 1, + "category": "글꼴 속성", + "item": "문구 (한국고건축협회)/② 크기 (24pt)" + }, + "24": { + "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "한국고건축협회", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (한국고건축협회)/③ 정렬 (가운데 정렬)" + }, + "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)/① 글꼴 (굴림)" + }, + "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)" + }, + "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)/③ 정렬 (오른쪽 정렬)" + }, + "28": { + "path": "//PAGENUM/@FormatType", + "path2": null, + "searchValue": null, + "value": "HangulSyllable", + "points": 2, + "category": "쪽번호", + "item": "① 쪽 번호 매기기 (가,나,다 순으로)" + }, + "29": { + "path": "//PAGENUM/@Pos", + "path2": null, + "searchValue": null, + "value": "BottomCenter", + "points": 2, + "category": "쪽번호", + "item": "② 가운데 아래" + }, + "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": { + "1": { + "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": { + "path": "count(//SECTION)>1", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "다단", + "item": "① 구역나누기" + }, + "3": { + "path": "//COLDEF/@Count>1", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "다단", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": 19842, + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/① 크기-너비 (70mm)" + }, + "5": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": 3401, + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/② 크기-높이 (12mm)" + }, + "6": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "DoubleSlim", + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/③ 테두리 (이중실선(1.00mm))" + }, + "7": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": 20, + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/④ 글상자 모서리 (반원)" + }, + "8": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "12704995", + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑤ 채우기 : 색상(RGB:53,135,145)" + }, + "9": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "true", + "points": 1, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑥ 글상자 위치 (글자처럼 취급)" + }, + "10": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "Center", + "points": 1, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑦ 글상자 정렬 (가운데 정렬)" + }, + "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": "문구 (한옥의 형태와 구조)/⑧ 글씨체 (견고딕)" + }, + "12": { + "path": "boolean(//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='2000')", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": true, + "points": 1, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑨ 글씨크기 (20pt)" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "Center", + "points": 1, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "boolean(//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])", + "path2": null, + "searchValue": "원본 그림의 이름: 그림", + "value": true, + "points": 2, + "category": "그림삽입", + "item": "① 파일명 \"그림A.jpg\" 삽입" + }, + "15": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": null, + "value": 24094, + "points": 2, + "category": "그림삽입", + "item": "② 크기-너비 (85mm)" + }, + "16": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": null, + "value": 11338, + "points": 2, + "category": "그림삽입", + "item": "③ 크기-높이 (40mm)" + }, + "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)" + }, + "18": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset", + "path2": null, + "searchValue": null, + "value": 6236, + "points": 2, + "category": "그림삽입", + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 22mm)" + }, + "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. 한옥)/① 글씨체 (돋움)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "1. 한옥", + "value": 1200, + "points": 1, + "category": "속성", + "item": "문구① (1. 한옥)/② 크기 (12pt)" + }, + "21": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "1. 한옥", + "value": true, + "points": 1, + "category": "속성", + "item": "문구① (1. 한옥)/③ 진하게" + }, + "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. 한옥의 형태와 구조)/① 글씨체 (돋움)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "2. 한옥의 형태와 구조", + "value": 1200, + "points": 1, + "category": "속성", + "item": "문구② (2. 한옥의 형태와 구조)/② 크기 (12pt)" + }, + "24": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "2. 한옥의 형태와 구조", + "value": true, + "points": 1, + "category": "속성", + "item": "문구② (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": "문구 (기초)/① 각주 설정 및 문구 입력" + }, + "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": "문구 (기초)/② 글씨체 (한양중고딕)" + }, + "27": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", + "value": 900, + "points": 1, + "category": "각주", + "item": "문구 (기초)/③ 크기 (9pt)" + }, + "28": { + "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", + "path2": null, + "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", + "value": "CircledDigit", + "points": 2, + "category": "각주", + "item": "문구 (기초)/④ 각주 번호모양" + }, + "29": { + "path": "boolean(//CHAR[contains(text(),'cornerstone')])", + "path2": null, + "ignoreWord": "cornerstone", + "value": true, + "points": 3, + "category": "영단어", + "item": "cornerstone/영단어 미입력, 대소문자/오타 시 전체 감점" + }, + "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": "① 한옥(韓屋), ② 사계절(四季節), ③거주(居住), ④ 구조(構造), ⑤ 골격(骨格)" + }, + "31": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'철의추운')])", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "편집", + "item": "문구 (…더운 날씨와 겨울철이 추운…)/\"이\" → \"의\" 글자바꿈" + }, + "32": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'돌과마루')])", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "편집", + "item": "문구 (…대비해 마루를 온돌과 갖고…)/\"마루를\" / \"온돌과\" 순서바꿈" + }, + "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": "제목 문구 (교육기관별 참가인원)/① 글씨체 (궁서)" + }, + "34": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": 1200, + "points": 1, + "category": "표", + "item": "제목 문구 (교육기관별 참가인원)/② 크기 (12pt)" + }, + "35": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": true, + "points": 1, + "category": "표", + "item": "제목 문구 (교육기관별 참가인원)/③ 진하게" + }, + "36": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": "Center", + "points": 1, + "category": "표", + "item": "제목 문구 (교육기관별 참가인원)/④ 정렬 (가운데 정렬)" + }, + "37": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr='2']/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "searchValue": null, + "value": "7629528", + "points": 2, + "category": "표", + "item": "위쪽 제목 셀/① 색상(RGB:216,106,116)" + }, + "38": { + "path": "boolean(//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": null, + "value": true, + "points": 1, + "category": "표", + "item": "위쪽 제목 셀/② 진하게" + }, + "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": "제목 셀 아래선/① 이중실선" + }, + "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" + }, + "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": "글자모양/① 글씨체 (굴림)" + }, + "42": { + "path": "//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": null, + "value": 1000, + "points": 1, + "category": "표", + "item": "글자모양/② 크기 (10pt)" + }, + "43": { + "path": "//PARASHAPE[@Id=//TABLE/ROW/descendant::P/@ParaShape]/@Align", + "path2": null, + "searchValue": null, + "value": "Center", + "points": 1, + "category": "표", + "item": "글자모양/③ 정렬 (가운데 정렬)" + }, + "44": { + "path": "boolean(//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=AVG') and //TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=AVG')]])", + "path2": null, + "searchValue": null, + "value": true, + "points": 4, + "category": "표", + "item": "블록계산식/평균" + }, + "45": { + "path": "boolean(//c:lineChart/c:grouping/@val='standard')", + "path2": null, + "searchValue": null, + "value": true, + "points": 2, + "category": "chart_xml", + "item": "① 종류 (묶은세로막대형)" + }, + "46": { + "path": "//c:valAx/c:majorTickMark/@val", + "path2": null, + "searchValue": null, + "value": "out", + "points": 2, + "category": "chart_xml", + "item": "② 값 축 주 눈금선" + }, + "47": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width", + "path2": null, + "searchValue": null, + "value": 22677, + "points": 2, + "category": "차트", + "item": "③ 크기-너비 (80mm)" + }, + "48": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height", + "path2": null, + "searchValue": null, + "value": 25511, + "points": 2, + "category": "차트", + "item": "④ 크기-높이 (90mm)" + }, + "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": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)" + }, + "50": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": "굴림체", + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (교육기관별 참가인원)/① 글씨체 (굴림체)" + }, + "51": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": 1300, + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (교육기관별 참가인원)/② 크기 (13pt)" + }, + "52": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@b", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (교육기관별 참가인원)/③ 진하게" + }, + "53": { + "path": "//c:catAx//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "굴림", + "points": 1, + "category": "chart_xml", + "item": "X축/① 글꼴 (굴림)" + }, + "54": { + "path": "//c:catAx//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "X축/② 크기 (9pt)" + }, + "55": { + "path": "//c:catAx//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "X축/③ 기울임" + }, + "56": { + "path": "//c:valAx//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "굴림", + "points": 1, + "category": "chart_xml", + "item": "Y축/① 글꼴 (굴림)" + }, + "57": { + "path": "//c:valAx//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "Y축/② 크기 (9pt)" + }, + "58": { + "path": "//c:valAx//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "Y축/③ 기울임" + }, + "59": { + "path": "//c:legend//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "굴림", + "points": 1, + "category": "chart_xml", + "item": "범례/① 글꼴 (굴림)" + }, + "60": { + "path": "//c:legend//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "범례/② 크기 (9pt)" + }, + "61": { + "path": "//c:legend//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "범례/③ 기울임" + } + } +} \ No newline at end of file diff --git a/DIW_2504_3C.json b/DIW_2504_3C.json new file mode 100644 index 0000000..e6d409e --- /dev/null +++ b/DIW_2504_3C.json @@ -0,0 +1,863 @@ +{ + "0": { + "0": { + "path": "", + "path2": "", + "points": 0, + "category": "파일저장", + "item": "파일명 (수검번호.hwp/hwpx)" + }, + "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)" + }, + "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%)" + }, + "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": "문구 (한옥마을사생대회안내)/① 글씨체 (궁서)" + }, + "2": { + "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": "6072932", + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/② 채우기 : 색상(RGB:100,170,92)" + }, + "3": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": 28346, + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/③ 크기-너비 (100mm)" + }, + "4": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": 5669, + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/④ 크기-높이 (20mm)" + }, + "5": { + "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": "true", + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/⑤ 위치 (글자처럼 취급)" + }, + "6": { + "path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": "Center", + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/⑥ 정렬 (가운데 정렬)" + }, + "7": { + "path": "boolean(//TEXTART[@Text='{searchValue}'])", + "path2": null, + "searchValue": "한옥마을사생대회안내", + "value": true, + "points": 2, + "category": "글맵시", + "item": "문구 (한옥마을사생대회안내)/⑦ 글맵시모양 (육안확인)" + }, + "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줄)" + }, + "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": "자/② 글씨체 (맑은 고딕)" + }, + "10": { + "path": "//RECTANGLE[.//CHAR[text()='자']]//WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": null, + "value": "9537333", + "points": 2, + "category": "문단첫글자장식", + "item": "자/③ 면색 : 색상(RGB:105,155,55)" + }, + "11": { + "path": "//RECTANGLE[.//CHAR[text()='자']]//OUTSIDEMARGIN/@Right", + "path2": null, + "searchValue": null, + "value": "850", + "points": 2, + "category": "문단첫글자장식", + "item": "자/④ 본문과의 간격 : 3.0mm" + }, + "12": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][BOLD])", + "path2": null, + "searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회", + "value": true, + "points": 2, + "category": "글꼴 속성", + "item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/① 기울임" + }, + "13": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][UNDERLINE])", + "path2": null, + "searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회", + "value": true, + "points": 2, + "category": "글꼴 속성", + "item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/② 밑줄" + }, + "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": "① ■, ② ■, ③ ※" + }, + "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": "문구 (■ 행사안내 ■)/① 글씨체 (돋움)" + }, + "16": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "행사안내", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (■ 행사안내 ■)/② 정렬 (가운데 정렬)" + }, + "17": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])", + "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][ITALIC])", + "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수", + "value": true, + "points": 1, + "category": "Hyperlink", + "item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/① 진하게" + }, + "18": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][UNDERLINE])", + "hyperlink_xpath": "boolean(//CHARSHAPE[@Id={charshape_id}][UNDERLINE])", + "hyperlink": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", + "searchValue": "홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수", + "value": true, + "points": 1, + "category": "Hyperlink", + "item": "문구 (홈페이지(http://www.ihd.or.kr)에서 개별 신청, 선착순 접수)/② 밑줄" + }, + "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)" + }, + "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)" + }, + "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.)/② 정렬 (가운데 정렬)" + }, + "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": "문구 (한국고건축협회)/① 글씨체 (궁서)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "한국고건축협회", + "value": 2400, + "points": 1, + "category": "글꼴 속성", + "item": "문구 (한국고건축협회)/② 크기 (24pt)" + }, + "24": { + "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "한국고건축협회", + "value": "Center", + "points": 1, + "category": "글꼴 속성", + "item": "문구 (한국고건축협회)/③ 정렬 (가운데 정렬)" + }, + "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)/① 글꼴 (굴림)" + }, + "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)" + }, + "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)/③ 정렬 (오른쪽 정렬)" + }, + "28": { + "path": "//PAGENUM/@FormatType", + "path2": null, + "searchValue": null, + "value": "HangulSyllable", + "points": 2, + "category": "쪽번호", + "item": "① 쪽 번호 매기기 (가,나,다 순으로)" + }, + "29": { + "path": "//PAGENUM/@Pos", + "path2": null, + "searchValue": null, + "value": "BottomCenter", + "points": 2, + "category": "쪽번호", + "item": "② 가운데 아래" + }, + "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": { + "1": { + "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": { + "path": "count(//SECTION)>1", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "다단", + "item": "① 구역나누기" + }, + "3": { + "path": "//COLDEF/@Count>1", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "다단", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": 19842, + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/① 크기-너비 (70mm)" + }, + "5": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": 3401, + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/② 크기-높이 (12mm)" + }, + "6": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "DoubleSlim", + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/③ 테두리 (이중실선(1.00mm))" + }, + "7": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": 20, + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/④ 글상자 모서리 (반원)" + }, + "8": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "12704995", + "points": 2, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑤ 채우기 : 색상(RGB:53,135,145)" + }, + "9": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "true", + "points": 1, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑥ 글상자 위치 (글자처럼 취급)" + }, + "10": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "Center", + "points": 1, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑦ 글상자 정렬 (가운데 정렬)" + }, + "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": "문구 (한옥의 형태와 구조)/⑧ 글씨체 (견고딕)" + }, + "12": { + "path": "boolean(//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='2000')", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": true, + "points": 1, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑨ 글씨크기 (20pt)" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align", + "path2": null, + "searchValue": "한옥의 형태와 구조", + "value": "Center", + "points": 1, + "category": "글상자", + "item": "문구 (한옥의 형태와 구조)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "boolean(//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])", + "path2": null, + "searchValue": "원본 그림의 이름: 그림", + "value": true, + "points": 2, + "category": "그림삽입", + "item": "① 파일명 \"그림A.jpg\" 삽입" + }, + "15": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width", + "path2": null, + "searchValue": null, + "value": 24094, + "points": 2, + "category": "그림삽입", + "item": "② 크기-너비 (85mm)" + }, + "16": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height", + "path2": null, + "searchValue": null, + "value": 11338, + "points": 2, + "category": "그림삽입", + "item": "③ 크기-높이 (40mm)" + }, + "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)" + }, + "18": { + "path": "//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset", + "path2": null, + "searchValue": null, + "value": 6236, + "points": 2, + "category": "그림삽입", + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 22mm)" + }, + "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. 한옥)/① 글씨체 (돋움)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "1. 한옥", + "value": 1200, + "points": 1, + "category": "속성", + "item": "문구① (1. 한옥)/② 크기 (12pt)" + }, + "21": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "1. 한옥", + "value": true, + "points": 1, + "category": "속성", + "item": "문구① (1. 한옥)/③ 진하게" + }, + "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. 한옥의 형태와 구조)/① 글씨체 (돋움)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "2. 한옥의 형태와 구조", + "value": 1200, + "points": 1, + "category": "속성", + "item": "문구② (2. 한옥의 형태와 구조)/② 크기 (12pt)" + }, + "24": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "2. 한옥의 형태와 구조", + "value": true, + "points": 1, + "category": "속성", + "item": "문구② (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": "문구 (기초)/① 각주 설정 및 문구 입력" + }, + "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": "문구 (기초)/② 글씨체 (한양중고딕)" + }, + "27": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", + "value": 900, + "points": 1, + "category": "각주", + "item": "문구 (기초)/③ 크기 (9pt)" + }, + "28": { + "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", + "path2": null, + "searchValue": "기둥의 침하를 방지하기 위한 지반의 보강 및 개량", + "value": "CircledDigit", + "points": 2, + "category": "각주", + "item": "문구 (기초)/④ 각주 번호모양" + }, + "29": { + "path": "boolean(//CHAR[contains(text(),'cornerstone')])", + "path2": null, + "ignoreWord": "cornerstone", + "value": true, + "points": 3, + "category": "영단어", + "item": "cornerstone/영단어 미입력, 대소문자/오타 시 전체 감점" + }, + "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": "① 한옥(韓屋), ② 사계절(四季節), ③거주(居住), ④ 구조(構造), ⑤ 골격(骨格)" + }, + "31": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'철의추운')])", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "편집", + "item": "문구 (…더운 날씨와 겨울철이 추운…)/\"이\" → \"의\" 글자바꿈" + }, + "32": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'돌과마루')])", + "path2": null, + "searchValue": null, + "value": true, + "points": 3, + "category": "편집", + "item": "문구 (…대비해 마루를 온돌과 갖고…)/\"마루를\" / \"온돌과\" 순서바꿈" + }, + "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": "제목 문구 (교육기관별 참가인원)/① 글씨체 (궁서)" + }, + "34": { + "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": 1200, + "points": 1, + "category": "표", + "item": "제목 문구 (교육기관별 참가인원)/② 크기 (12pt)" + }, + "35": { + "path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": true, + "points": 1, + "category": "표", + "item": "제목 문구 (교육기관별 참가인원)/③ 진하게" + }, + "36": { + "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": "Center", + "points": 1, + "category": "표", + "item": "제목 문구 (교육기관별 참가인원)/④ 정렬 (가운데 정렬)" + }, + "37": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr='2']/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "searchValue": null, + "value": "7629528", + "points": 2, + "category": "표", + "item": "위쪽 제목 셀/① 색상(RGB:216,106,116)" + }, + "38": { + "path": "boolean(//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)", + "path2": null, + "searchValue": null, + "value": true, + "points": 1, + "category": "표", + "item": "위쪽 제목 셀/② 진하게" + }, + "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": "제목 셀 아래선/① 이중실선" + }, + "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" + }, + "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": "글자모양/① 글씨체 (굴림)" + }, + "42": { + "path": "//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height", + "path2": null, + "searchValue": null, + "value": 1000, + "points": 1, + "category": "표", + "item": "글자모양/② 크기 (10pt)" + }, + "43": { + "path": "//PARASHAPE[@Id=//TABLE/ROW/descendant::P/@ParaShape]/@Align", + "path2": null, + "searchValue": null, + "value": "Center", + "points": 1, + "category": "표", + "item": "글자모양/③ 정렬 (가운데 정렬)" + }, + "44": { + "path": "boolean(//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=AVG') and //TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=AVG')]])", + "path2": null, + "searchValue": null, + "value": true, + "points": 4, + "category": "표", + "item": "블록계산식/평균" + }, + "45": { + "path": "boolean(//c:lineChart/c:grouping/@val='standard')", + "path2": null, + "searchValue": null, + "value": true, + "points": 2, + "category": "chart_xml", + "item": "① 종류 (묶은세로막대형)" + }, + "46": { + "path": "//c:valAx/c:majorTickMark/@val", + "path2": null, + "searchValue": null, + "value": "out", + "points": 2, + "category": "chart_xml", + "item": "② 값 축 주 눈금선" + }, + "47": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width", + "path2": null, + "searchValue": null, + "value": 22677, + "points": 2, + "category": "차트", + "item": "③ 크기-너비 (80mm)" + }, + "48": { + "path": "//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height", + "path2": null, + "searchValue": null, + "value": 25511, + "points": 2, + "category": "차트", + "item": "④ 크기-높이 (90mm)" + }, + "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": "⑤ 차트 데이터(표에서 블록계산식을 제외한 나머지 값만 이용)" + }, + "50": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": "굴림체", + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (교육기관별 참가인원)/① 글씨체 (굴림체)" + }, + "51": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": 1300, + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (교육기관별 참가인원)/② 크기 (13pt)" + }, + "52": { + "path": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@b", + "path2": null, + "searchValue": "교육기관별 참가인원", + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "제목 문구 (교육기관별 참가인원)/③ 진하게" + }, + "53": { + "path": "//c:catAx//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "굴림", + "points": 1, + "category": "chart_xml", + "item": "X축/① 글꼴 (굴림)" + }, + "54": { + "path": "//c:catAx//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "X축/② 크기 (9pt)" + }, + "55": { + "path": "//c:catAx//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "X축/③ 기울임" + }, + "56": { + "path": "//c:valAx//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "굴림", + "points": 1, + "category": "chart_xml", + "item": "Y축/① 글꼴 (굴림)" + }, + "57": { + "path": "//c:valAx//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "Y축/② 크기 (9pt)" + }, + "58": { + "path": "//c:valAx//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "Y축/③ 기울임" + }, + "59": { + "path": "//c:legend//a:ea/@typeface", + "path2": null, + "searchValue": null, + "value": "굴림", + "points": 1, + "category": "chart_xml", + "item": "범례/① 글꼴 (굴림)" + }, + "60": { + "path": "//c:legend//a:defRPr/@sz", + "path2": null, + "searchValue": null, + "value": 900, + "points": 1, + "category": "chart_xml", + "item": "범례/② 크기 (9pt)" + }, + "61": { + "path": "//c:legend//a:defRPr/@i", + "path2": null, + "searchValue": null, + "value": 1, + "points": 1, + "category": "chart_xml", + "item": "범례/③ 기울임" + } + } +} \ No newline at end of file diff --git a/checklist.xbook b/checklist.xbook index 38d2355..8645ad9 100644 --- a/checklist.xbook +++ b/checklist.xbook @@ -1 +1 @@ -[{"kind":1,"language":"markdown","value":"# XPath Notebook\nDate: 2025-01-22     Time: 16:12:58"},{"kind":1,"language":"markdown","value":"* mm > pt 변환비율 = 2.83465 \r\n* 283.465"},{"kind":1,"language":"markdown","value":"- 색상 demical 코드 [1-2] [1-10] [2-8] [2-37]\r\n"},{"kind":2,"language":"xpath","value":"//TEXTART[@Text='한옥마을사생대회안내']/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE[.//CHAR[text()='자']]//WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE//CHAR[text()='한옥의 형태와 구조']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor"},{"kind":1,"language":"markdown","value":"- [1-10] ① ■, ② ■, ③ ※\t\t\r\n"},{"kind":2,"language":"xpath","value":"\"path\": \"count(//CHAR[contains(text(),'■')]) + count(//CHAR[contains(text(),'※')])\",\r\n \"path2\": \"string-length(//CHAR[contains(text(),'■')]) - string-length(translate(//CHAR[contains(text(),'■')], '■', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))\","},{"kind":1,"language":"markdown","value":"- [1-24] @FormatType 종류\r\n - HangulSyllable : 가나다\r\n - Digit : 123\r\n - DecagonCircle : 갑을병정\r\n - LatinCapital : ABC\r\n - CircledDigit : ①,②,③"},{"kind":2,"language":"xpath","value":"//SECTION[1]//PAGENUM/@FormatType"},{"kind":1,"language":"markdown","value":"- [2-28] ① 한옥(韓屋), ② 사계절(四季節), ③거주(居住), ④ 구조(構造), ⑤ 골격(骨格)"},{"kind":2,"language":"xpath","value":"(count(//CHAR[contains(text(),'한옥')][contains(text(),'韓屋')])+count(//CHAR[contains(text(),'사계절')][contains(text(),'四季節')])+count(//CHAR[contains(text(),'거주')][contains(text(),'居住')])+count(//CHAR[contains(text(),'구조')][contains(text(),'構造')])+count(//CHAR[contains(text(),'골격')][contains(text(),'骨格')]))*2"},{"kind":1,"language":"markdown","value":"- [2-37] [2-39] [2-40] @EndColAddr 속성값 \r\n - 표의 열 갯수-1\r\n - 4개=3 / 3개=2 / 2개=1"},{"kind":2,"language":"xpath","value":"@EndColAddr='2'"},{"kind":1,"language":"markdown","value":"- [2-45]\r\n - 꺾은선형 //c:lineChart/c:grouping/@val='standard'\r\n - 가로막대형 boolean(//c:barChart/c:barDir[@val='bar'])\r\n - 묶은가로막대형 boolean(//c:barChart[c:barDir[@val='bar'] and c:grouping[@val='clustered']])\r\n - 세로막대형 boolean(//c:barChart/c:barDir[@val='col'])\r\n - 묶은세로막대형 boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])"},{"kind":2,"language":"xpath","value":"boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])"},{"kind":2,"language":"xpath","value":"//c:valAx/c:majorTickMark/@val"}] \ No newline at end of file +[{"kind":1,"language":"markdown","value":"# XPath Notebook\nDate: 2025-01-22     Time: 16:12:58"},{"kind":1,"language":"markdown","value":"* mm > pt 변환비율 = 2.83465 \r\n* 283.465"},{"kind":1,"language":"markdown","value":"- 색상 demical 코드 [1-2] [1-10] [2-8] [2-37]"},{"kind":2,"language":"xpath","value":"//TEXTART[@Text='클라우드컴퓨팅컨퍼런스']/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE[.//CHAR[text()='전']]//WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor"},{"kind":1,"language":"markdown","value":"- [1-10] ① ●, ② ●, ③ ※"},{"kind":2,"language":"xpath","value":"\"path\": \"count(//CHAR[contains(text(),'●')]) + count(//CHAR[contains(text(),'※')])\",\r\n \"path2\": \"string-length(//CHAR[contains(text(),'●')]) - string-length(translate(//CHAR[contains(text(),'●')], '●', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))\","},{"kind":1,"language":"markdown","value":"- [1-28] [2-28] @FormatType 종류\r\n - HangulSyllable : 가나다\r\n - Digit : 123\r\n - DecagonCircle : 갑을병정\r\n - LatinCapital : ABC\r\n - CircledDigit : ①,②,③\r\n - Ideograph : 一,二,三\r\n - CircledHangulJamo : ㉠,㉡,㉢\r\n - CircledLatinSmall : ⓐ,ⓑ,ⓒ\r\n - RomanSmall : i,ii,iii"},{"kind":2,"language":"xpath","value":"//SECTION[1]//PAGENUM/@FormatType"},{"kind":2,"language":"xpath","value":"//P[TEXT[CHAR[contains(text(), '눈으로 읽는 대신 귀로 들을 수 있게 책의 내용(문자)을 음성으로 녹음하여 기록한 것을 의미함')]]]//AUTONUMFORMAT/@Type"},{"kind":1,"language":"markdown","value":"- [2-30] ① 저감(低減), ② 화석(化石), ③ 투자(投資), ④ 달성(達成), ⑤ 세금(稅金)"},{"kind":2,"language":"xpath","value":"(count(//CHAR[contains(text(),'저감')][contains(text(),'低減')])+count(//CHAR[contains(text(),'화석')][contains(text(),'化石')])+count(//CHAR[contains(text(),'투자')][contains(text(),'投資')])+count(//CHAR[contains(text(),'달성')][contains(text(),'達成')])+count(//CHAR[contains(text(),'세금')][contains(text(),'稅金')]))*2"},{"kind":1,"language":"markdown","value":"- [2-37] [2-39] [2-40] @EndColAddr 속성값 \r\n - 표의 열 갯수-1\r\n - 4개=3 / 3개=2 / 2개=1"},{"kind":2,"language":"xpath","value":"@EndColAddr='2'"},{"kind":1,"language":"markdown","value":"- [2-45]\r\n - 꺾은선형 //c:lineChart/c:grouping/@val='standard'\r\n - 가로막대형 boolean(//c:barChart/c:barDir[@val='bar'])\r\n - 묶은가로막대형 boolean(//c:barChart[c:barDir[@val='bar'] and c:grouping[@val='clustered']])\r\n - 세로막대형 boolean(//c:barChart/c:barDir[@val='col'])\r\n - 묶은세로막대형 boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])"},{"kind":2,"language":"xpath","value":"boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])"},{"kind":2,"language":"xpath","value":"//c:valAx/c:majorTickMark/@val"}] \ No newline at end of file diff --git a/copy_all_hwp.py b/copy_all_hwp.py index ee44041..4652299 100644 --- a/copy_all_hwp.py +++ b/copy_all_hwp.py @@ -36,7 +36,7 @@ def copy_dic_subdirs(source_root, target_root_a, target_root_b, target_root_c, t # 사용법 # exam_round = "2504_2" -exam_round = "2504_3" +exam_round = "2504" # source_directory = r"C:\Users\dra\project\data\제2504회 수시2(제주)\답안파일" # 원본 디렉토리 경로 source_directory = r"C:\Users\dra\project\data\제2504회 수시3(읍내)\답안파일" # 원본 디렉토리3경로 diff --git a/diwScoring.py b/diwScoring.py index ded6520..c8fb365 100644 --- a/diwScoring.py +++ b/diwScoring.py @@ -35,7 +35,59 @@ class XMLScorer: second_xpath = args[1] points = args[2] category = args[3] + right_answer = args[4] + if "Hyperlink" in category: + is_hyperlink = self.scoring_criteria["1"]["17"]["hyperlink"] + hyperlink_xpath = self.scoring_criteria["1"]["17"]["hyperlink_xpath"] + right_text = self.scoring_criteria["1"]["17"]["searchValue"].replace(" ","") + try: + p_elements = root.xpath(is_hyperlink) + + for p in p_elements: + text_list = p.xpath(".//CHAR/text()") + full_text = ''.join(text_list).replace(" ", "") + # right_text의 첫 문자 + first_char = right_text[0] + # full_text에서 첫 문자 위치 찾기 + index = full_text.find(first_char) + + if index != -1: + trimmed_full_text = full_text[index:] + else: + trimmed_full_text = full_text # 일치 문자 없으면 원본 그대로 + + similarity = difflib.SequenceMatcher(None, trimmed_full_text, right_text).ratio() + # 두 문자열이 같을 경우만 하이퍼링크 확인 + if similarity >= 0.7: + inside_field = False + charshape_values = [] + + for elem in p.iter(): + # 시작 지점 확인 + if elem.tag == "FIELDBEGIN": + inside_field = True + elif elem.tag == "FIELDEND": + inside_field = False + elif inside_field and elem.tag == "TEXT": + charshape = elem.get("CharShape") + if charshape: + charshape_values.append(charshape) + + # 하이퍼링크에 해당하는 P태그 내 존재하는 charshape ID값 모두를 비교해 해당 속성(ITALIC, BOLD, UNDERLINE) 확인 + if charshape_values: + for charshape in charshape_values: + result = root.xpath(hyperlink_xpath.replace('{charshape_id}', charshape)) + # 해당 속성이 하나라도 적용되어있지 않으면 False 반환 + if not result: + return result + return True + else: + return False + + except ET.XPathEvalError as e: + return None + if ("특수문자" in category) and (second_xpath is not None): try: result = root.xpath(first_xpath) @@ -51,13 +103,23 @@ class XMLScorer: except ET.XPathEvalError as e: return None - + + # xpath2가 있는 경우 elif second_xpath is not None: try: result1 = root.xpath(first_xpath) result2 = root.xpath(second_xpath) if (type(result1) is list and len(result1) == 0) and (type(result2) is list and len(result2) == 0): return None + + # xpath1과 xpath2의 결과값이 모두 리스트인 경우 + # 두 결과값 중 정답이 포함된 리스트를 반환 + if type(result1) is list and type(result2) is list: + if right_answer in result1: + return result1 + elif right_answer in result2: + return result2 + return result1 if result1 else result2 except ET.XPathEvalError as e: @@ -99,11 +161,15 @@ class XMLScorer: # 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) + if type(root) is str: + all_text = root + else: + all_text = root.xpath(f"//BODY//text() | //TEXTART/@Text | //c:chart//text()", namespaces=namespaces) # 유사도 비교 max_score = 0 @@ -163,39 +229,7 @@ class XMLScorer: category = criterion['category'] if 'category' in criterion else None item = criterion['item'] similar_text = None - - # if "pageSetting" in (format or ""): - # results = root.xpath("//PAGEMARGIN") - # matched = False - - # for i, user_answer in enumerate(results): - # bottom = int(user_answer.get("Bottom"), 0) - # footer = int(user_answer.get("Footer"), 0) - # gutter = int(user_answer.get("Gutter"), 0) - # header = int(user_answer.get("Header"), 0) - # left = int(user_answer.get("Left"), 0) - # right = int(user_answer.get("Right"), 0) - # top = int(user_answer.get("Top"), 0) - # error_range = 1 - # if abs(right_answer['Bottom'] - bottom) <= error_range and \ - # abs(right_answer['Footer'] - footer) <= error_range and \ - # abs(right_answer['Gutter'] - gutter) <= error_range and \ - # abs(right_answer['Header'] - header) <= error_range and \ - # abs(right_answer['Left'] - left) <= error_range and \ - # abs(right_answer['Right'] - right) <= error_range and \ - # abs(right_answer['Top'] - top) <= error_range: - # matched = True - - # total_score += points - # partial_score += points - # scoring['points'] = points - # break - - # if not matched: - # scoring['points'] = 0 - - # chart xml 파일에서 채점하는 경우 if "chart_xml" in category: if search_value is not None: @@ -216,7 +250,7 @@ class XMLScorer: else: xpath = xpath.replace('{searchValue}', similar_text) - result = self.query_xml(root, xpath, xpath2, points, category) + result = self.query_xml(root, xpath, xpath2, points, category, right_answer) # [ boolean 타입 ] # 1. 이텔릭체, 굵게, 밑줄 등 효과가 적용 여부에 따라 @@ -349,8 +383,9 @@ class XMLScorer: 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] + # xpath = self.scoring_criteria["2"]["29"]['path'].split("'")[1] + # ignore_word = xpath.split("'")[1] + ignore_word = self.scoring_criteria["2"]["29"]["ignoreWord"] # 특정 단어 제거 # 오타와 누락의 경우만 판단하면 정상작동하지만 # 추가 된 단어의 경우를 채점기준에 추가하면 정확하게 채점 되지 않을 수 있음 @@ -561,20 +596,22 @@ def main(): # 시험회차 및 유형 exam_round = '2504_3' + + # 250429기준 없는 시험 형식(A,B,C..)은 주석처리 하지 않으면 오류 발생 exam_types = [ # 'A', - 'B', + # 'B', 'C', ] - test_mode = False - # test_mode = True + # test_mode = False + test_mode = True output_excel_paths = [] for exam_type in exam_types: # JSON 채점기준표 파일 (예시:DIW_2503A.json) - scoring_criteria_path = f'./DIW_{exam_round}.json' - # scoring_criteria_path = f'./DIW_{exam_round}{exam_type}.json' + # scoring_criteria_path = f'./DIW_{exam_round}.json' + scoring_criteria_path = f'./DIW_{exam_round}{exam_type}.json' # xml(hml)파일 디렉토리 경로 (예시:./output/A/DIW) # xml_directory = f'./output/{exam_type}/{"TEST" if test_mode else "DIW"}' diff --git a/diwScoring2.py b/diwScoring2.py index 94e3ced..cf93207 100644 --- a/diwScoring2.py +++ b/diwScoring2.py @@ -392,9 +392,14 @@ class XMLScorer: self.evaluate_answer(scoring, user_answer, right_answer, points, method="partial_score") - # 줄간격 - elif "LineSpacing" in (category or ""): + # 쪽 테두리 + elif "PageBorder" in (category or ""): + pageBorderfills = root.xpath(xpath) + for pageBorderfill in pageBorderfills: + headerInside = pageBorderfill.get('HeaderInside') + borderfill_id = pageBorderfill.get('BorferFill') + print( f"headerInside: {headerInside}, borderfill_id: {borderfill_id}") break @@ -686,7 +691,7 @@ class XMLScorer: def main(): # 시험회차 및 유형 - exam_round = '2504' + exam_round = '2504_2' exam_types = [ 'A', # 'B', @@ -697,20 +702,24 @@ def main(): output_excel_paths = [] for exam_type in exam_types: - scoring_criteria_path = f'./DIW_{exam_round}{exam_type}_test.json' - # scoring_criteria_path = f'./DIW_{exam_round}{exam_type}.json' - # xml(hml)파일 디렉토리 경로 + # JSON 채점기준표 파일 (예시:DIW_2503A.json) + # scoring_criteria_path = f'./DIW_{exam_round}.json' + scoring_criteria_path = f'./DIW_{exam_round}_{exam_type}_new.json' - xml_directory = f'./output/{exam_type}/{"TEST" if test_mode else "DIW"}' + # xml(hml)파일 디렉토리 경로 (예시:./output/A/DIW) + # 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' + # 회차가 여러개인 경우 + xml_directory = f'./output/{exam_round}/{exam_type}/{"TEST" if test_mode else "DIW"}' - # 엑셀 파일명 (비어있으면 자동생성) + + # 오탈자 체크를 위한 정답 파일 경로 (예시:./output/A/DIW/DIW_2503A.hml) + # correct_answer_file = f'./output/{exam_type}/DIW/DIW_{exam_round}{exam_type}.hml' + correct_answer_file = f'./output/{exam_round}/{exam_type}/DIW/DIW_{exam_round}{exam_type}.hml' + + # 엑셀 파일명 (비어있으면 자동생성) (예시:241001_DIW_2503A_채점결과.xlsx) timestamp = datetime.now().strftime("%y%m%d") - # output_path = f'{timestamp}_DIW_{exam_round}{exam_type}_{"TEST" if test_mode else "채점결과"}.xlsx' - output_path = f'{timestamp}_DIW_{exam_round}{exam_type}_{"TEST" if test_mode else "채점결과"}_2.xlsx' + output_path = f'{timestamp}_DIW_{exam_round}회_{exam_type}형_{"TEST" if test_mode else "채점결과"}.xlsx' # 채점 클래스 초기화 scorer = XMLScorer(scoring_criteria_path) diff --git a/hwp_conversion.log b/hwp_conversion.log index 2ad69f1..a686a29 100644 --- a/hwp_conversion.log +++ b/hwp_conversion.log @@ -13859,3 +13859,18 @@ 2025-04-28 15:17:55,391 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2504_3\D\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504_3\D\DIW 2025-04-28 15:17:55,892 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2504_3\E\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504_3\E\DIW 2025-04-28 15:17:57,416 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2504_3\E\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504_3\E\DIW +2025-04-28 17:19:48,751 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2504\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504\A\DIW +2025-04-28 17:19:52,162 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2504\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504\A\DIW +2025-04-28 17:19:52,663 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2504\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504\B\DIW +2025-04-28 17:19:54,023 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2504\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504\B\DIW +2025-04-28 17:19:54,525 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2504\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504\C\DIW +2025-04-28 17:19:55,927 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2504\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504\C\DIW +2025-04-28 17:20:15,830 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2504\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504\A\DIW +2025-04-28 17:20:19,949 - INFO - 변환 성공: DIW_2504A.hwpx -> DIW_2504A.hml +2025-04-28 17:20:20,417 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2504\A\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504\A\DIW +2025-04-28 17:20:20,917 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2504\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504\B\DIW +2025-04-28 17:20:23,636 - INFO - 변환 성공: DIW_2504B.hwpx -> DIW_2504B.hml +2025-04-28 17:20:24,078 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2504\B\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504\B\DIW +2025-04-28 17:20:24,579 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2504\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504\C\DIW +2025-04-28 17:20:26,796 - INFO - 변환 성공: DIW_2504C.hwpx -> DIW_2504C.hml +2025-04-28 17:20:27,282 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2504\C\DIW -> C:\Users\dra\project\HWP\HWP-Scoring\output\2504\C\DIW diff --git a/test.py b/test.py index 33ba003..051d7c6 100644 --- a/test.py +++ b/test.py @@ -61,7 +61,7 @@ def convert_hwp_to_xml(input_folder, output_folder): # 출력 폴더가 없으면 생성 os.makedirs(output_folder, exist_ok=True) - + # HWP 파일 검색 및 변환 input_path = Path(input_folder) @@ -131,8 +131,8 @@ def delete_gen_py(): if __name__ == "__main__": exam_rounds = [ - "2504_2", - "2504_3" + "2504", + # "2504_3" ] delete_gen_py() @@ -147,8 +147,8 @@ if __name__ == "__main__": (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\A\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\A\\DIW"), (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\B\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\B\\DIW"), (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\C\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\C\\DIW"), - (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\D\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\D\\DIW"), - (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\E\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\E\\DIW"), + # (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\D\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\D\\DIW"), + # (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\E\\DIW",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\E\\DIW"), ] # 변환 실행 diff --git a/zzz.xbook b/zzz.xbook index 8171bb9..1d7fa77 100644 --- a/zzz.xbook +++ b/zzz.xbook @@ -1 +1 @@ -[{"kind":2,"language":"xpath","value":"boolean(//PARASHAPE[@Id=//CHAR[contains(text(),'기타')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Left=3000 and //PARASHAPE[@Id=//CHAR[contains(text(),'기타')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Indent=-2400)"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul][@Name='바탕']"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Name='바탕']/@Id"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id='6']/FONTID/@Hangul"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id='0']/@Align"},{"kind":2,"language":"xpath","value":"boolean(//RECTANGLE[.//CHAR[text()='지']][.//SIZE[(@Height >= 2600 and @Height <= 2800)and(@Width >= 2600 and @Width <= 2800)]])"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TEXT[CHAR[text()='지']]/@CharShape]/FONTID/@Hangul]/@Name"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id={charshape_id}]/FONTID/@Hangul]/@Name"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id={font_id}]/@Name"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//CHAR[contains(text()[1],'전 세계적으로 차량의 수는 약 13억 대가 있고 국내는 약 2,500만 대')]/parent::TEXT/@CharShape][ITALIC]"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN/@LineSpacing"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//CHAR[contains(text(),'행사안내')]/ancestor::P/@ParaShape]/@Align"}] \ No newline at end of file +[{"kind":2,"language":"xpath","value":"boolean(//PARASHAPE[@Id=//CHAR[contains(text(),'기타')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Left=3000 and //PARASHAPE[@Id=//CHAR[contains(text(),'기타')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Indent=-2400)"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul][@Name='바탕']"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Name='바탕']/@Id"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id='6']/FONTID/@Hangul"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id='0']/@Align"},{"kind":2,"language":"xpath","value":"boolean(//RECTANGLE[.//CHAR[text()='지']][.//SIZE[(@Height >= 2600 and @Height <= 2800)and(@Width >= 2600 and @Width <= 2800)]])"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TEXT[CHAR[text()='지']]/@CharShape]/FONTID/@Hangul]/@Name"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id={charshape_id}]/FONTID/@Hangul]/@Name"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id={font_id}]/@Name"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//CHAR[contains(text()[1],'전 세계적으로 차량의 수는 약 13억 대가 있고 국내는 약 2,500만 대')]/parent::TEXT/@CharShape][ITALIC]"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//SECTION[1]/P/@ParaShape]/PARAMARGIN/@LineSpacing"},{"kind":2,"language":"xpath","value":"count(//CHAR[contains(text(),'▶')]) + count(//CHAR[contains(text(),'◀')]) + count(//CHAR[contains(text(),'※')])"},{"kind":2,"language":"xpath","value":"string-length(//CHAR[contains(text(),'▶')]) - string-length(translate(//CHAR[contains(text(),'▶')], '▶', '')) + string-length(//CHAR[contains(text(),'◀')]) - string-length(translate(//CHAR[contains(text(),'◀')], '◀', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//CHAR[contains(text(),'행사안내')]/ancestor::P/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//P[.//FIELDBEGIN[@Type=\"Hyperlink\"]] || //P[.//FIELDEND[@Type=\"Hyperlink\"]] "}] \ No newline at end of file diff --git a/회차별채점자료/2504/hml_변환/DIW_2504A.hml b/회차별채점자료/2504/hml_변환/DIW_2504A.hml new file mode 100644 index 0000000..4317db4 --- /dev/null +++ b/회차별채점자료/2504/hml_변환/DIW_2504A.hml @@ -0,0 +1,7022 @@ +User2017년 8월 3일 목요일 오후 4:55:39^1.^2.^3)^4)(^5)(^6)^7^8^1.^2.^3)^4)(^5)(^6)^7^8