From 77906aff1d2a3082a138cf44a5c3514bf056bdb1 Mon Sep 17 00:00:00 2001 From: dragdra Date: Thu, 20 Mar 2025 17:13:54 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B1=84=EC=A0=90=EA=B8=B0=EC=A4=80=ED=91=9C?= =?UTF-8?q?=20=EA=B3=B0=ED=94=BD=ED=95=AD=EB=AA=A9=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 250320_DIC_2502A_TEST.xlsx | Bin 0 -> 19095 bytes DIC_2502A.json | 151 ++++- DIC_2502B.json | 147 +++++ DIC_2502C.json | 147 +++++ DIC_2502D.json | 147 +++++ gpdpScoring.js | 2 - psdExport_2.js | 97 +-- z.xbook | 2 +- .../2502/json_채점기준표/{ => 0229}/DIC_2502A.json | 0 .../2502/json_채점기준표/{ => 0229}/DIC_2502B.json | 0 .../2502/json_채점기준표/{ => 0229}/DIC_2502C.json | 0 .../2502/json_채점기준표/{ => 0229}/DIC_2502D.json | 0 .../2502/json_채점기준표/0319/DIC_2502A.json | 148 +++-- .../2502/json_채점기준표/0319/DIC_2502B.json | 145 +++-- .../2502/json_채점기준표/0319/DIC_2502C.json | 411 +++++++++++++ .../2502/json_채점기준표/0319/DIC_2502D.json | 410 +++++++++++++ .../0320_DIC_채점기준표_Clipping.json | 561 ++++++++++++++++++ .../json_채점기준표/0320_DIC_채점기준표_Layer.json | 558 +++++++++++++++++ 18 files changed, 2727 insertions(+), 199 deletions(-) create mode 100644 250320_DIC_2502A_TEST.xlsx rename 회차별채점자료/2502/json_채점기준표/{ => 0229}/DIC_2502A.json (100%) rename 회차별채점자료/2502/json_채점기준표/{ => 0229}/DIC_2502B.json (100%) rename 회차별채점자료/2502/json_채점기준표/{ => 0229}/DIC_2502C.json (100%) rename 회차별채점자료/2502/json_채점기준표/{ => 0229}/DIC_2502D.json (100%) rename DIC_채점기준표_Clipping.json => 회차별채점자료/2502/json_채점기준표/0319/DIC_2502A.json (57%) rename DIC_채점기준표_Layer.json => 회차별채점자료/2502/json_채점기준표/0319/DIC_2502B.json (57%) create mode 100644 회차별채점자료/2502/json_채점기준표/0319/DIC_2502C.json create mode 100644 회차별채점자료/2502/json_채점기준표/0319/DIC_2502D.json create mode 100644 회차별채점자료/2502/json_채점기준표/0320_DIC_채점기준표_Clipping.json create mode 100644 회차별채점자료/2502/json_채점기준표/0320_DIC_채점기준표_Layer.json diff --git a/250320_DIC_2502A_TEST.xlsx b/250320_DIC_2502A_TEST.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..71467bec101a03cfecb8116756053c373129e6ea GIT binary patch literal 19095 zcmeG^Yi}gSaa61bfda)5;s8c~0D}eMF9Nw-F5f08?DBC>-qGaV=_DawdS`lf=QuCV z%<^H!fGi1y5W{&mQjiNEz#k0QfRRMDWcxlSKz@QhIp6Z-BpH_OpfC9nARkiI-Sg<0 zUcQb<;6yy^?M!u5b#--Bb@gkvu6^#wFN|e>-+$uu`#=4yu`&Go5daUp`fkj_ zd)+YHn>h5n34|;?4^P%Uj}tcxmTQfP$(qFjJ9ONjzg)Z3*%+U%SxL$Qhk0SZmup8n zsXf2)%+pKT++!&aB?C7~EZ`C(%e6t8MvL`&Vh^~_l8G?l0hIK@*k>uc#{GK4>^;`! z^{L6p**Zv2@Tje5JgqCvaxK2%G-_7oD1w?#<{kEWuFcm%d+75ZHB=$mpA0xpfhmjo zJYBA#N(3mWi?0UirdBr#Gj)-|q@W~T2qIqV;{Ri1XkMfYNqXc#kLKEt@5iZN`a-M6 zzS!g`b6Cm>DSQRV(mjTJgE zI{@$TJ!ybGbAy@{Fdt0#rZ7;eBRYO%Nikpdzz%{mL4fVWJLo)IqX5@ni_TsHzmlV5 z)r+lt=7H_HffF8d_#xP{$C4BZmTQyZ4=uQ!6M5+f+7jJ{_)~O>z}cG;b;kW}UTI@v zdSPxY=PwYvw2HUBzP`HN$oUBbX4}wGDNC8>^u~Ono$)Lo$;T@1)ybL3X&t}Bzgdxa zq1|rJEGStdQ-LHOrz`mLle5#UDGgsBN&J}#{&c&wx;m@j3nYm@TfyI$TbP~J@deVr zbA!DKHg@R7hT@*1^g{2l5q%!e=O-0mR*oKySsYTSo7=K2NM0{J`1{eQ29dj4nCv#%H7G44A7? zumSKkuwG9G8sd#3=9%!?Tvy)h7=nih@zU_FChN{19;U9L=4%6AL);8QuN}rl1zf|r zN*eAAgTA@)cv!~UW^CV7_bLmtu3aBS5H&NS)O5c(;F_3Q9t%=PK?0sySQhSaZfM<$ zuB+*F)3xI;345vaqHDF8Yg9?c?P`Wp5M6eC=$9i?o1v>U-E7{r+M#D^^%~#TF~K32 zNLHjf=PuUao~Fi2Y?w0N#InO6+bMO-b(RiHLhc;Jb{TIyNuj6v+zYLBhbM`N=4K4- zE%Cm_AYK`}ebYPgb<8+*_e?ymvoI`Uu7!K61Lj92+#NRldtjo>+6p1rs5s);mfP1vDhvcmhOt4cOFY!nw!uE2l1%sH$c`lP+JqqtPFhsAhVX(!)E2`H2S%m&9Lf8J!N9a+$eDQI) z2*nVkF(Hw;w#dBwk%@QD^}HRNlV49n?w!B@BO=M&nIHh03Okkp#lxBA2UH? z#bNq_n+|pc3>Q!uVj9^`6zhIsMIo%&ObW1(H&zO{e=292GdK^Ckt1R0X6Q(86T#VZ zBWEL|>WevTR#6ifoVK#&oMH-XJ5OZ|6zbHqHH2s)C~CFkO-2=qc{!*&ZyEq|Z9-;a zK|Tapo`t0?tQwLr=5biW%I3gXx1d(D=L_y4)oR(00du(QA`M*9W<&H{WJB_8)p6H9hNsAUQn60V-ix(ptMswpRPSQ1&3}hdQBGpx1fHg_^r)H+n z*e<34hG23!DVpX;r{&HrK~Q({RYk&ZnDTgM;2c<8Zy0Yg=zh>C zw#RW3Sg;TdjW4jehT0ZIdTdpZro5&l@Fbjh(SWIFiK{c2$4PWys<{l}tt1|_%_zHQ z+}WFg9)D3yDVy>Cv!>v104oSh2YbMV#od@$=qby!Fir;{M4@Ql+8Z&9`yzILwZIB3 z6oc|%BSn12d>_B1&q*G_tzjaVZo7Rec40V42QlYc5SE1XoxrT2h91e%Q;dW~mBdXV zDR!6dbFYIja28{5%^HBIi)f<4fWV{nr@t!?>h>{5Df^oi$?~C7`oRBm;v$_H8bxvm zwBJnsxrjnrdg3DK1$j0`mK%ZvMV2(3d4)FkEi9<2&MCra2H?_IDO2xG-ZJP&?r^#8wNoAEf>)uw1jy+jVU(&}&ygP2~h&3l&X9A@*6 zToclTyF-ipI0x!r+HxdiMp82TH2npk!?41gc zbWpSgS%dh3RR@d*xd7-z2v}KyQ3z7~U;|!oaKmR*;c_j2!!4o-67K|T7`KiZFl`j| z3dVJ$fO@-O?7(4~az{we%96)>Xtt2m4e&b+Bly1?rfKNIgX6M(7%&eW>luZ50Jb() z+0~t%#`~~W>R=duQ3=@B_y_{2N6AmVApbHq$@{U{T8BMV8H*zC=*H0Ra@at|b3dwY zMXgXzsWDnpa-r18hZ{%?TT?mX?$Grh%`!9tcshrLV#E-ivaZKPLYmhCN^#_1*2xQ( zYsK>>cif@BkYjDR`=K1tmTSec#F`d;UjzjbgdRL)KX>$dV`KRFq6|XDb4KTnM>)F- z3rCPooG%*DQ(O*ghX;6`%!+vrwpkjB?X@QAOGHB0Gdq9|%b%_6Od1vxotu|uxNC4i z2)rjez$6m`oQ)4HI35NT2Ah!p*c0#W3x3IfsO zZHh2OH2DHWFxl%J9jQs}^+j4vl>HJdC%SGC$7=2pUAKr^HFt@wTg0WByF}M5;#19C zqU#oMs^%`yb&GgabC>A4McfM1M3mhkjs+ORZd=5)0E6hVMVt#Ts5Xgv0R~kkaWKH3 z`Xn9(7*wIe#Q=k9l=v86P?ZuV0}QHD;$_WUYQQbxW`IF;O8g8ks7{Ha0S476@if4o zIwh_K7*wak*8qd+wBl$}RHs!}qdKiP+Z54hyW(w4VyEqjyETbU+ZBIn5}mdy4o4zO z9Y)uDh{dE?4zW|((B`=I?qqXUtffruKDzgvkMH0Ae5lc-3Z+@LT?zM zH;vFOBlIg0N>sCL#N9DMJ4Wa&BlNa}5ip>xFS?np3k&KD(=;J##pw%{l(S`+D` zmf6T!%E}1q7MK|_pl84?96OQK+9N))VY ziGr0eQLwTm3RdPs!OEV9ueX#zQEX*V6s$~&f|X5Cu(By?5N4xlnXRg=tcvh%E32Yl zvsJZ~Rm~RWtwm8>x|C5Au5FYiDn86LS(1l0Nh2?y$cc{IhogMlS&!o|hAB|_6{q|# zyWU9=p_SnAf1D9n$ydpIt6ru8CdKs^GF|<%SH`~i#^=Vy@bh^&T`gb1IR7j)<8on> z)I%?Z`+$Xh^ly7<FS?F`(Wv=P|IVQO7QQVPIo z=!+XDf)`5?up9Achdjm;|G)^BXExzl4!+byd+S<*1*kVnhcQPqR5NL2u{J3+(%nNE zp&YPa+(=Zfpe+Dc!`NM}eZA{+yYseVkM~%Ek54bm@^LmlGdJF}o4w|wJvp^tH@_h| zK=J}&=+;HmJuU1WTq@;oo*2&P_ts>$i6-?xGaic)JfnkaMn&~?s6TsM!k1h+Sez4L z!+N9ER>T&oba~^CX>M#|C;+9Z{a;aW!8ubk>Tu=hrCiU%X}`pudHKo{V`KPHPMa;I zJl;}w#^u7C_QF<{GRd}L@Gpno5SOYt12=g=-D}KOnX*+QWrGiY{5mZ8SReo7osZvr zA0j2Lu{|SKfep1Qr@fl4Y^ARnX+8& zCIR$J_cU{RtlKaEjYqk675DeD{Rx4QUE(X>;ma;}!k~Csflj{M34Y20hdalM1nbks zNdy*gaT4h=7y5zwxS1(uvK)KG@n_yIf3W}tho9dEqs#TH8gu>ux)dA5m{=KG4W^;D zO5Sob>i)vFxmvKd0Ans*J6_pAAHKS?R4)UUF2jZ!+%ef=FakpUo-Xdg7B=iMCGOW? z90U9BvV_YH-e++BUmVXtH2ES(ya<+)S1_c=U;tTKx+sC-v5Z@OcBfZxPM$8pgN}$m zDF_tkB6i#qF5uqmZLt{l*mFcBF_>c^v5*0$C7C!{SgVLBS`HPGD(Xd_li2pl@BaC- zFTrSnpJ&TvhK~MtV~QOuB9o$OIk+s^aP0Do!6-{Rs^Lf4n`7rJqhaicTj!2l=jxVi zy)n_K!?qG$SYLE(*aGy6i|b_qQBuP6-L!lUy^QMEvM|R!Odxkr?K(I(m^f$(F(9XF z)bDIw7u(ou+zs$%y^R}>`jzG%{@dMG{_uCk#_)qznqOXpeLc81yNi~a{ORL$h2U}e zv0b~cZ%aAGQ4?_gPAc&*DN^#0jV+MRq?wf^b^gR!$LKD9r2wj}SxP0?n&leA!7MP; zu@pvf16>zyVvnTT51a`<8Rv(Pe@zI_p8x_DA5HiSuKukDxM>I|c%R$MfB#sykiQ;H z$7LjiXfA%RU;^mZWK7+=Q+l5f#C$82GscgqtZMJSeS+ zBqQ9C#)u+Q`;VbXM<@W`qa+hW zrfQC%i5#l6vYTM3SqreA3%;#&X_?Sq$0|l(7F_(E$8*XNZ^EyO#4cP#z#&ei>~)#| zovAkBHQGd9IW9WsDe9Nwd--=iE=~|k@C5%84HH){PKdfd_W25q^}_S#h0s7 tKuS$>`GR_Gr9_=MBPFL9XhHt3&l~g6t!uyi6e2wh|Go}J@ziB}`)^^92LAv6 literal 0 HcmV?d00001 diff --git a/DIC_2502A.json b/DIC_2502A.json index 346c6ee..e3bb12d 100644 --- a/DIC_2502A.json +++ b/DIC_2502A.json @@ -218,7 +218,7 @@ "point": 2 }, "9": { - "ele":"//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", "ele2": "//CRCUnitArr[@Name={search}]/@*[name()='VID600' or name()='VID601']", "type": "video", "search": "나무기차", @@ -375,7 +375,7 @@ "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']", "search": "멋진 기차 모형 (Fine Train Model)", "type": "opening", - "value":[ + "value": [ "2", "2" ], @@ -410,5 +410,152 @@ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='60']", "point": 2 } + }, + "4": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "450" + ], + "point": 5, + "desc": "캔버스 사이즈 650*450" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "배경색 문항은 채점 불가" + }, + "3": { + "ele": "//Layer[contains(Name/@value, 'Layer 2')][MaskOpType/@value='Layering']", + "point": 6 + }, + "4": { + "ele": "none", + "point": 5, + "desc": "가로방향 흐릿하게 문항은 채점 불가" + }, + "5": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "answer": "ROUNDED_RECTANGLE", + "point": 6 + }, + "6": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 370, + "height": 60 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "7": { + "type": "gradient", + "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value", + "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value", + "value": { + "startColor": "347813", + "endColor": "041177" + }, + "point": 6 + }, + "8": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value", + "value": "어린이 과학관", + "point": 5 + }, + "9": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value", + "value": "돋움", + "point": 3 + }, + "10": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value", + "value": "True", + "point": 3 + }, + "11": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value", + "value": "32", + "point": 3 + }, + "12": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "f04da5", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "13": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", + "value": "3", + "point": 3 + }, + "14": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "ffe000", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "15": { + "ele": "//Layer[MaskOpType/@value='Clipping'][last()]", + "point": 6, + "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함" + }, + "16": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "value": "RECTANGLE", + "point": 3 + }, + "17": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 150, + "height": 150 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "18": { + "ele": "//Layer[contains(Name/@value, 'Layer 5')]//outline_peninfo/Width/@value", + "value": "7", + "point": 3 + }, + "19": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "008878", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)" + }, + "20": { + "type": "shadow", + "ele": { + "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]", + "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value", + "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value", + "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value", + "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value" + }, + "value": { + "width": "5", + "distance": "3", + "blur": "1", + "angle": "320" + }, + "point": 5, + "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" + } } } \ No newline at end of file diff --git a/DIC_2502B.json b/DIC_2502B.json index dd5b178..8ec84df 100644 --- a/DIC_2502B.json +++ b/DIC_2502B.json @@ -407,5 +407,152 @@ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='90']", "point": 2 } + }, + "4": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "450" + ], + "point": 5, + "desc": "캔버스 사이즈 650*450" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "배경색 문항은 채점 불가" + }, + "3": { + "ele": "//Layer[contains(Name/@value, 'Layer 2')][MaskOpType/@value='Layering']", + "point": 6 + }, + "4": { + "ele": "none", + "point": 5, + "desc": "가로방향 흐릿하게 문항은 채점 불가" + }, + "5": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "answer": "ROUNDED_RECTANGLE", + "point": 6 + }, + "6": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 370, + "height": 60 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "7": { + "type": "gradient", + "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value", + "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value", + "value": { + "startColor": "347813", + "endColor": "041177" + }, + "point": 6 + }, + "8": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value", + "value": "어린이 과학관", + "point": 5 + }, + "9": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value", + "value": "돋움", + "point": 3 + }, + "10": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value", + "value": "True", + "point": 3 + }, + "11": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value", + "value": "32", + "point": 3 + }, + "12": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "f04da5", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "13": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", + "value": "3", + "point": 3 + }, + "14": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "ffe000", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "15": { + "ele": "//Layer[MaskOpType/@value='Clipping'][last()]", + "point": 6, + "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함" + }, + "16": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "value": "RECTANGLE", + "point": 3 + }, + "17": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 150, + "height": 150 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "18": { + "ele": "//Layer[contains(Name/@value, 'Layer 5')]//outline_peninfo/Width/@value", + "value": "7", + "point": 3 + }, + "19": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "008878", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)" + }, + "20": { + "type": "shadow", + "ele": { + "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]", + "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value", + "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value", + "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value", + "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value" + }, + "value": { + "width": "5", + "distance": "3", + "blur": "1", + "angle": "320" + }, + "point": 5, + "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" + } } } \ No newline at end of file diff --git a/DIC_2502C.json b/DIC_2502C.json index 001349d..d122713 100644 --- a/DIC_2502C.json +++ b/DIC_2502C.json @@ -407,5 +407,152 @@ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='90']", "point": 2 } + }, + "4": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "450" + ], + "point": 5, + "desc": "캔버스 사이즈 650*450" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "배경색 문항은 채점 불가" + }, + "3": { + "ele": "//Layer[contains(Name/@value, 'Layer 2')][MaskOpType/@value='Layering']", + "point": 6 + }, + "4": { + "ele": "none", + "point": 5, + "desc": "가로방향 흐릿하게 문항은 채점 불가" + }, + "5": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "answer": "ROUNDED_RECTANGLE", + "point": 6 + }, + "6": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 370, + "height": 60 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "7": { + "type": "gradient", + "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value", + "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value", + "value": { + "startColor": "347813", + "endColor": "041177" + }, + "point": 6 + }, + "8": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value", + "value": "어린이 과학관", + "point": 5 + }, + "9": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value", + "value": "돋움", + "point": 3 + }, + "10": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value", + "value": "True", + "point": 3 + }, + "11": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value", + "value": "32", + "point": 3 + }, + "12": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "f04da5", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "13": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", + "value": "3", + "point": 3 + }, + "14": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "ffe000", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "15": { + "ele": "//Layer[MaskOpType/@value='Clipping'][last()]", + "point": 6, + "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함" + }, + "16": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "value": "RECTANGLE", + "point": 3 + }, + "17": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 150, + "height": 150 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "18": { + "ele": "//Layer[contains(Name/@value, 'Layer 5')]//outline_peninfo/Width/@value", + "value": "7", + "point": 3 + }, + "19": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "008878", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)" + }, + "20": { + "type": "shadow", + "ele": { + "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]", + "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value", + "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value", + "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value", + "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value" + }, + "value": { + "width": "5", + "distance": "3", + "blur": "1", + "angle": "320" + }, + "point": 5, + "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" + } } } \ No newline at end of file diff --git a/DIC_2502D.json b/DIC_2502D.json index 9516df0..a98a7c1 100644 --- a/DIC_2502D.json +++ b/DIC_2502D.json @@ -406,5 +406,152 @@ "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='90']", "point": 2 } + }, + "4": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "450" + ], + "point": 5, + "desc": "캔버스 사이즈 650*450" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "배경색 문항은 채점 불가" + }, + "3": { + "ele": "//Layer[contains(Name/@value, 'Layer 2')][MaskOpType/@value='Layering']", + "point": 6 + }, + "4": { + "ele": "none", + "point": 5, + "desc": "가로방향 흐릿하게 문항은 채점 불가" + }, + "5": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "answer": "ROUNDED_RECTANGLE", + "point": 6 + }, + "6": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 370, + "height": 60 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "7": { + "type": "gradient", + "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value", + "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value", + "value": { + "startColor": "347813", + "endColor": "041177" + }, + "point": 6 + }, + "8": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value", + "value": "어린이 과학관", + "point": 5 + }, + "9": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value", + "value": "돋움", + "point": 3 + }, + "10": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value", + "value": "True", + "point": 3 + }, + "11": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value", + "value": "32", + "point": 3 + }, + "12": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "f04da5", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "13": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", + "value": "3", + "point": 3 + }, + "14": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "ffe000", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "15": { + "ele": "//Layer[MaskOpType/@value='Clipping'][last()]", + "point": 6, + "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함" + }, + "16": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "value": "RECTANGLE", + "point": 3 + }, + "17": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 150, + "height": 150 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "18": { + "ele": "//Layer[contains(Name/@value, 'Layer 5')]//outline_peninfo/Width/@value", + "value": "7", + "point": 3 + }, + "19": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "008878", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)" + }, + "20": { + "type": "shadow", + "ele": { + "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]", + "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value", + "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value", + "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value", + "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value" + }, + "value": { + "width": "5", + "distance": "3", + "blur": "1", + "angle": "320" + }, + "point": 5, + "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" + } } } \ No newline at end of file diff --git a/gpdpScoring.js b/gpdpScoring.js index 2c4bfb4..be62a27 100644 --- a/gpdpScoring.js +++ b/gpdpScoring.js @@ -1,8 +1,6 @@ const xpath = require('xpath'); const { DOMParser } = require('xmldom'); - - function parseColorToHex(colorString) { // 정규식을 사용하여 B, G, R, A 값 추출 const regex = /B:\s*(\d+),\s*G:\s*(\d+),\s*R:\s*(\d+),\s*A:\s*(\d+)/; diff --git a/psdExport_2.js b/psdExport_2.js index 200afa5..bb13c11 100644 --- a/psdExport_2.js +++ b/psdExport_2.js @@ -12,11 +12,10 @@ const getToday = require('./getToday.js'); const todayDate = getToday(); // -------------------------------------------------------- -// const scoringJson = require('./DIC_2502A.json'); +const scoringJson = require('./DIC_2502A.json'); // const scoringJson = require('./DIC_2502B.json'); // const scoringJson = require('./DIC_2502C.json'); // const scoringJson = require('./DIC_2502D.json'); -const scoringJson = require('./samples/DIC(gompic).json'); // TEST // const scoringJson = require('./DIC_2502A_TEST.json'); @@ -28,9 +27,9 @@ const scoringJson = require('./samples/DIC(gompic).json'); // const answerFilesDir = './output/B/DIC'; // const answerFilesDir = './output/C/DIC'; // const answerFilesDir = './output/D/DIC'; -const answerFilesDir = './samples/'; + // TEST -// const answerFilesDir = './output/A/TEST'; +const answerFilesDir = './output/A/TEST'; // const answerFilesDir = './output/B/TEST'; // const answerFilesDir = './output/C/TEST'; // const answerFilesDir = './output/D/TEST'; @@ -38,15 +37,14 @@ const answerFilesDir = './samples/'; // -------------------------------------------------------- // const outputExcelFile = './'+todayDate+'_DIC_2502A_채점결과.xlsx'; // const outputExcelFile = './'+todayDate+'_DIC_2502B_채점결과.xlsx'; -// const outputExcelFile = './' + todayDate + '_DIC_2502C_채점결과.xlsx'; +// const outputExcelFile = './'+todayDate+'_DIC_2502C_채점결과.xlsx'; // const outputExcelFile = './'+todayDate+'_DIC_2502D_채점결과.xlsx'; // TEST -// const outputExcelFile = './'+todayDate+'_DIC_2502A_TEST.xlsx'; +const outputExcelFile = './'+todayDate+'_DIC_2502A_TEST.xlsx'; // const outputExcelFile = './'+todayDate+'_DIC_2502B_TEST.xlsx'; -// const outputExcelFile = './' + todayDate + '_DIC_2502C_TEST.xlsx'; +// const outputExcelFile = './'+todayDate+'_DIC_2502C_TEST.xlsx'; // const outputExcelFile = './'+todayDate+'_DIC_2502D_TEST.xlsx'; -const outputExcelFile = './'+todayDate+'_gompic.xlsx'; // -------------------------------------------------------- @@ -73,7 +71,7 @@ studentDirs.forEach(student => { ); // 곰픽 파일 gpdp 파일 이거나 xml 파일 - const gpdpFile = fs.readdirSync(studentDir).filter( + const gpdpFiles = fs.readdirSync(studentDir).filter( file => file.endsWith('.xml') ); @@ -95,8 +93,8 @@ studentDirs.forEach(student => { console.error(`Error reading PSD file: ${psdPath}`, error); } }); - gpdpFile.forEach((gpdp, index) => { - const gpdpPath = path.join('./', studentDir, gpdp); + gpdpFiles.forEach((gpdpFile, index) => { + const gpdpPath = path.join('./', studentDir, gpdpFile); console.log(`Reading ${gpdpPath}...`); const xmlString = fs.readFileSync(gpdpPath, 'utf8'); @@ -128,8 +126,6 @@ const flattenedData = scoringResultList.map(student => { // excel에 표시하지 않을 key값들 const exceptKeys = [ "0", // 학생 이름 항상 제외 - "1", // 1번 PSD 파일 채점 결과 - "2", // 2번 PSD 파일 채점 결과 ] const exceptSubkeys = [ "videoStartTime", @@ -461,7 +457,7 @@ function getGmepScore(gmepData, scoringJson, index) { const result3 = ele3 ? xpath.select(ele3, gmepXmlDoc) : []; // 결과값이 배열이 아닌 경우 배열로 변환 - // 예시) (2-9)는 xpath를 통해 클립(자막) 시작시간(number자료형)을 반환받으므로 배열로 변환하여 비교 + // 예시) (2-9)는 xpath를 통해 클립(자막) 시작시간(number숫자자료형)을 반환받으므로 배열로 변환하여 비교 const resultValues = Array.isArray(result) ? result.map(r => (typeof r === 'object' ? r.value : r)) : [result]; const resultValues2 = Array.isArray(result2) ? @@ -473,16 +469,16 @@ function getGmepScore(gmepData, scoringJson, index) { const allResults = [...[resultValues], ...[resultValues2], ...[resultValues3]]; console.log("🚀 ~ allResults:", allResults) - // 정답(rightAnswer)의 값이 단일값이 아닐 경우 값 비교를 위해 단일 배열로 변환 - // (2-11) 자막의 위치 좌표값 비교를 위해 [x, y] 값을 가져오므로 배열로 변환하여 비교 + // 정답(rightAnswer)의 값이 단일값이 아닐 경우 값 비교를 위해 배열로 변환 + // 예시) (2-11) 자막의 위치 좌표값 비교를 위해 [x, y] 값을 가져오므로 배열로 변환하여 비교 const rightAnswerArray = Array.isArray(rightAnswer) ? rightAnswer : [rightAnswer]; // 결과값이 범위값인 경우 소수점 3자리까지 비교 const formattedResults = allResults.map(result => { - // result의 길이가 1이상인 조건은 result값이 [x, y] 좌표값인 경우를 말한다 + // result의 길이가 1이상인 조건은 result값이 [x, y](좌표값, 두개 이상의 값)인 경우를 말한다 if (Array.isArray(result) && result.length > 1) { return result.map(r => { - // xml파일에 저장된 곰믹스 좌표값 소수점 3자리 아래 버리는 형식이므로 + // xml파일에 저장된 곰믹스 좌표값이 소수점 3자리 아래 버리는 형식이므로 // 동일하게 결과값 소수점 3자리 아래 버린 후 반환 const parsedValue = parseFloat(r); if (parsedValue >= 0 && parsedValue < 1) { @@ -525,71 +521,6 @@ function getGmepScore(gmepData, scoringJson, index) { scoringResult[key] = 0; } } - // else if (type == "video" || type == "opening") { - // const result = ele && xpath.select(ele, gmepXmlDoc); - // const result2 = ele2 && xpath.select(ele2, gmepXmlDoc); - // const result3 = ele3 && xpath.select(ele3, gmepXmlDoc); - - // /** - // * 1. result가 배열이 아닌 경우 배열로 변환 - // * (2-9)는 xpath구문을 통해 클립(자막) 시작시간(number자료형)을 반환받으므로 배열로 변환하여 비교 - // * 2. result가 배열이고 배열의 요소가 객체인 경우 value값만 추출하여 배열로 변환 - // * 3. result가 배열이고 배열의 요소가 객체가 아닌 문자열이나 숫자일 경우 그대로 배열로 변환 - // */ - // const resultValues = Array.isArray(result) ? result.map(r => (typeof r === 'object' ? r.value : r)) : [result]; - // const resultValues2 = Array.isArray(result2) ? result2.map(r => (typeof r === 'object' ? r.value : r)) : [result2]; - // const resultValues3 = Array.isArray(result3) ? result3.map(r => (typeof r === 'object' ? r.value : r)) : [result3]; - - // /** - // * 정답과 일치하는 답안이 있는지 비교를 위해 배열로 변환 - // * 정답 rightAnswer의 값이 2개 이상인 경우 배열로 변환하여 비교 - // */ - // let allResults = [...[resultValues], ...[resultValues2], ...[resultValues3]]; - // console.log("🚀 ~ getGmepScore ~ allResults:", allResults) - - // // allResults.forEach((result, i) => { - // // if (result.length > 1) { - // // result.forEach((r, j) => { - // // if (Math.abs(r - rightAnswer[j]) <= 0.1) { - // // true; - // // } else { - // // scoringResult[key] = 0; - // // } - // // }); - // // }); - - // // (2-11) 자막의 위치 좌표값 비교시 소수점 3자리까지 비교 - // // rightAnswer값이 배열일 경우 - // const rightAnswerArray = Array.isArray(rightAnswer) ? rightAnswer : [rightAnswer]; - // console.log("🚀 ~ getGmepScore ~ rightAnswerArray:", rightAnswerArray); - - // // 결과값이 범위값인 경우 소수점 3자리까지 비교 - // allResults = allResults.map(result => { - // if (result.length > 1) { - // return result.map(r => { - // if (typeof r === 'string') { - // return parseFloat(r).toFixed(3); - // } - // return r; - // }); - // } - // }); - // console.log("🚀 ~ //allResults.forEach ~ allResults:", allResults) - - // const isIncluded = allResults.some(arr => - // arr.length === rightAnswerArray.length && arr.every((val, index) => val === rightAnswerArray[index]) - // ); - // if (isIncluded) { - // console.log("🚀 ~ getGmepScore ~ 정답:", rightAnswerArray); - // totalScore += point; - // scoringResult[key] = point; - // } - // else { - // console.log("🚀 ~ getGmepScore ~ 오답:"); - // scoringResult[key] = 0; - // } - // } - else { try { console.log('Unknown type:', ele); diff --git a/z.xbook b/z.xbook index 8159dc9..f4e87fe 100644 --- a/z.xbook +++ b/z.xbook @@ -1 +1 @@ -[{"kind":2,"language":"xpath","value":"//CROwneUnit[position() = (//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = 170]/@ClipIndex) + 1]/CRCUnitArr/@VID600 | //CROwneUnit[position() = (//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = 170]/@ClipIndex) + 1]/CRCUnitArr/@VID601"},{"kind":2,"language":"xpath","value":"//CRCUnitArr[@Name='금학산 정상에서']/@*[name()='VID600' or name()='VID601']"}] \ No newline at end of file +[{"kind":2,"language":"xpath","value":"//CROwneUnit[position() = (//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = 170]/@ClipIndex) + 1]/CRCUnitArr/@VID600 | //CROwneUnit[position() = (//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = 170]/@ClipIndex) + 1]/CRCUnitArr/@VID601"},{"kind":2,"language":"xpath","value":"//CRCUnitArr[@Name='대룡산의 아름다움']/@*[name()='VID600' or name()='VID601']"}] \ No newline at end of file diff --git a/회차별채점자료/2502/json_채점기준표/DIC_2502A.json b/회차별채점자료/2502/json_채점기준표/0229/DIC_2502A.json similarity index 100% rename from 회차별채점자료/2502/json_채점기준표/DIC_2502A.json rename to 회차별채점자료/2502/json_채점기준표/0229/DIC_2502A.json diff --git a/회차별채점자료/2502/json_채점기준표/DIC_2502B.json b/회차별채점자료/2502/json_채점기준표/0229/DIC_2502B.json similarity index 100% rename from 회차별채점자료/2502/json_채점기준표/DIC_2502B.json rename to 회차별채점자료/2502/json_채점기준표/0229/DIC_2502B.json diff --git a/회차별채점자료/2502/json_채점기준표/DIC_2502C.json b/회차별채점자료/2502/json_채점기준표/0229/DIC_2502C.json similarity index 100% rename from 회차별채점자료/2502/json_채점기준표/DIC_2502C.json rename to 회차별채점자료/2502/json_채점기준표/0229/DIC_2502C.json diff --git a/회차별채점자료/2502/json_채점기준표/DIC_2502D.json b/회차별채점자료/2502/json_채점기준표/0229/DIC_2502D.json similarity index 100% rename from 회차별채점자료/2502/json_채점기준표/DIC_2502D.json rename to 회차별채점자료/2502/json_채점기준표/0229/DIC_2502D.json diff --git a/DIC_채점기준표_Clipping.json b/회차별채점자료/2502/json_채점기준표/0319/DIC_2502A.json similarity index 57% rename from DIC_채점기준표_Clipping.json rename to 회차별채점자료/2502/json_채점기준표/0319/DIC_2502A.json index f8d1e18..346c6ee 100644 --- a/DIC_채점기준표_Clipping.json +++ b/회차별채점자료/2502/json_채점기준표/0319/DIC_2502A.json @@ -52,30 +52,30 @@ "point": 0 }, "5": { - "ele": "$.children[?(@.name=='Mountains of Cheorwon')].name", - "value": "Mountains of Cheorwon", + "ele": "$.children[?(@.name=='Animal Village')].name", + "value": "Animal Village", "point": 10 }, "6": { - "ele": "$.children[?(@.name=='Mountains of Cheorwon')].text.font.names[0]", + "ele": "$.children[?(@.name=='Animal Village')].text.font.names[0]", "type": "font", "value": "Arial", "point": 10 }, "7": { - "ele": "$.children[?(@.name=='Mountains of Cheorwon')].text.font.names[0]", + "ele": "$.children[?(@.name=='Animal Village')].text.font.names[0]", "value": "Arial-BoldItalicMT", "point": 10 }, "8": { - "ele": "$.children[?(@.name=='Mountains of Cheorwon')].text.font.sizes[0]", - "value": 40, + "ele": "$.children[?(@.name=='Animal Village')].text.font.sizes[0]", + "value": 48, "point": 10 }, "9": { - "ele": "$.children[?(@.name=='Mountains of Cheorwon')].text.font.colors[0]", + "ele": "$.children[?(@.name=='Animal Village')].text.font.colors[0]", "type": "color", - "value": "f1eb4a", + "value": "65f743", "point": 10 }, "10": { @@ -159,6 +159,8 @@ } }, "2": { + "videoStartTime": 160, + "openingStartTime": 0, "1": { "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path", "type": "array", @@ -186,48 +188,60 @@ "point": 3 }, "5": { - "ele": "//CRCUnitArr[@Name='{search}']", - "search": "나무기차", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "video", + "value": "나무기차", "point": 3 }, "6": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID102='돋움체']", - "ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID102='돋움체']", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", "search": "나무기차", + "type": "video", + "value": "돋움체", "point": 2 }, "7": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID101='120']", - "ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID101='120']", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", "search": "나무기차", + "type": "video", + "value": "120", "point": 2 }, "8": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4'][@VID100='-13290016']", - "ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4'][@VID100='-13290016']", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", "search": "나무기차", + "type": "video", + "value": "-13290016", "point": 2 }, "9": { - "ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601", - "ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601", - "type": "range", + "ele":"//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", + "ele2": "//CRCUnitArr[@Name={search}]/@*[name()='VID600' or name()='VID601']", + "type": "video", "search": "나무기차", - "start": [ 0.333, 0.800 ], - "end": [ 0.666, 0.999 ], + "value": [ + 0.240, + 0.777 + ], "point": 2 }, "10": { - "existEle": "//CRCUnitArr[@Name='{search}']", - "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex=count(//CROwneUnit[1]/CRCUnitArr/preceding::CROwneUnit))]/@Length)", - "type": "searchIndex", - "value": 160, + "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)", "search": "나무기차", + "type": "video", + "value": 160, "point": 2 }, "11": { - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='나무기차']]/preceding::CROwneUnit))][@Length='150']", - "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[1]/CRCUnitArr/preceding::CROwneUnit))][@Length='150']", + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/@Length", + "search": "나무기차", + "type": "video", + "value": "150", "point": 2 }, "12": { @@ -238,15 +252,15 @@ "point": 2 }, "13": { - "existEle": "//CRClip[@Path='이미지2.jpg']", - "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/@Length", + "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length", "type": "searchIndex", "value": "150", "point": 2 }, "14": { "type": "multi", - "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]//CRFilter/@*[name()='ID' or name()='VID101']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']", "value": [ "96", "13" @@ -255,7 +269,7 @@ }, "15": { "type": "multi", - "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@Type='2' and @ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", "value": [ "35", "490:520", @@ -264,15 +278,15 @@ "point": 2 }, "16": { - "existEle": "//CRClip[@Path='이미지1.jpg']", - "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/@Length", + "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length", "type": "searchIndex", - "value": "150", + "value": "180", "point": 2 }, "17": { "type": "multi", - "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]//CRFilter/@*[name()='ID' or name()='VID102']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']", "value": [ "104", "8" @@ -281,7 +295,7 @@ }, "18": { "type": "multi", - "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@Type='2' and @ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", "value": [ "19", "670:700", @@ -290,15 +304,15 @@ "point": 2 }, "19": { - "existEle": "//CRClip[@Path='이미지3.jpg']", - "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/@Length", + "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length", "type": "searchIndex", "value": "180", "point": 2 }, "20": { "type": "multi", - "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]//CRFilter/@*[name()='ID' or name()='VID103']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID103']", "value": [ "108", "90" @@ -307,7 +321,7 @@ }, "21": { "type": "multi", - "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@Type='2' and @ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", "value": [ "9", "820:880", @@ -316,50 +330,72 @@ "point": 2 }, "22": { - "ele": "//CRCUnitArr[@Name='{search}']", - "search": "멋진 기차 모형 (Fine Train Model)", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "opening", + "value": "멋진 기차 모형 (Fine Train Model)", "point": 3 }, "23": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID102='바탕체']", - "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID102='바탕체']", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", "search": "멋진 기차 모형 (Fine Train Model)", + "type": "opening", + "value": "바탕체", "point": 2 }, "24": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID101='150']", - "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID101='150']", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", "search": "멋진 기차 모형 (Fine Train Model)", + "type": "opening", + "value": "150", "point": 2 }, "25": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4'][@VID100='-1589535']", - "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4'][@VID100='-1589535']", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", "search": "멋진 기차 모형 (Fine Train Model)", + "type": "opening", + "value": "-14688179", "point": 2 }, "26": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2'][@VID100='0.2'][@VID101='-16307450']", - "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2'][@VID100='0.2'][@VID101='-16307450']", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", "search": "멋진 기차 모형 (Fine Train Model)", + "type": "opening", + "value": [ + "0.2", + "-16307450" + ], "point": 2 }, "27": { - "ele": "//CRCUnitArr[@Name='{search}'][@VID505='2'][@VID507='2']", - "ele2": "//CROwneUnit[2]/CRCUnitArr[@VID505='2'][@VID507='2']", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']", + "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']", "search": "멋진 기차 모형 (Fine Train Model)", + "type": "opening", + "value":[ + "2", + "2" + ], "point": 3 }, "28": { - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='{search}']]/preceding::CROwneUnit)][@Pos='0']", - "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[2]/CRCUnitArr/preceding::CROwneUnit)][@Pos='0']", + "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)", "search": "멋진 기차 모형 (Fine Train Model)", + "type": "opening", + "value": 0, "point": 2 }, "29": { - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='{search}']]/preceding::CROwneUnit))][@Length='120']", - "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[2]/CRCUnitArr/preceding::CROwneUnit)][@Length='120']", + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = {startTime}]/@Length", + "ele3": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/@Length", "search": "멋진 기차 모형 (Fine Train Model)", + "type": "opening", + "value": "120", "point": 2 }, "30": { diff --git a/DIC_채점기준표_Layer.json b/회차별채점자료/2502/json_채점기준표/0319/DIC_2502B.json similarity index 57% rename from DIC_채점기준표_Layer.json rename to 회차별채점자료/2502/json_채점기준표/0319/DIC_2502B.json index fda50e7..dd5b178 100644 --- a/DIC_채점기준표_Layer.json +++ b/회차별채점자료/2502/json_채점기준표/0319/DIC_2502B.json @@ -184,48 +184,61 @@ "point": 3 }, "5": { - "ele": "//CRCUnitArr[@Name='{search}']", - "search": "자연이 빚어낸 섬", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "video", + "value": "자연이 빚어낸 섬", "point": 3 }, "6": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID102='바탕체']", - "ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID102='바탕체']", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", "search": "자연이 빚어낸 섬", + "type": "video", + "value": "바탕체", "point": 2 }, + "7": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID101='120']", - "ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID101='120']", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool[@Type='1']/GCUnit/@VID101", "search": "자연이 빚어낸 섬", + "type": "video", + "value": "120", "point": 2 }, "8": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4'][@VID100='-10541088']", - "ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4'][@VID100='-10541088']", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool/GCUnit[@Type='4']/@VID100", "search": "자연이 빚어낸 섬", + "type": "video", + "value": "-1487764", "point": 2 }, "9": { - "ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601", - "ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601", - "type": "range", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@VID600' or name()='VID601", + "ele2": "//CRCUnitArr[@Name={search}]/@*[name()='VID600' or name()='VID601']", + "type": "video", "search": "자연이 빚어낸 섬", - "start": [ 0.333, 0.800 ], - "end": [ 0.666, 0.999 ], + "value": [ + 0.071, + 0.777 + ], "point": 2 }, "10": { - "existEle": "//CRCUnitArr[@Name='{search}']", - "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex=count(//CROwneUnit[1]/CRCUnitArr/preceding::CROwneUnit))]/@Length)", - "type": "searchIndex", - "value": 150, + "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)", "search": "자연이 빚어낸 섬", + "type": "video", + "value": 150, "point": 2 }, "11": { - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='자연이 빚어낸 섬']]/preceding::CROwneUnit))][@Length='120']", - "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[1]/CRCUnitArr/preceding::CROwneUnit))][@Length='120']", + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/@Length", + "search": "자연이 빚어낸 섬", + "type": "video", + "value": "120", "point": 2 }, "12": { @@ -236,15 +249,15 @@ "point": 2 }, "13": { - "existEle": "//CRClip[@Path='이미지1.jpg']", - "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/@Length", + "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length", "type": "searchIndex", "value": "150", "point": 2 }, "14": { "type": "multi", - "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]//CRFilter/@*[name()='ID' or name()='VID101']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']", "value": [ "173", "450" @@ -253,7 +266,7 @@ }, "15": { "type": "multi", - "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@Type='2' and @ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", "value": [ "11", "360:420", @@ -262,15 +275,15 @@ "point": 2 }, "16": { - "existEle": "//CRClip[@Path='이미지3.jpg']", - "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/@Length", + "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length", "type": "searchIndex", "value": "180", "point": 2 }, "17": { "type": "multi", - "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]//CRFilter/@*[name()='ID' or name()='VID101']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']", "value": [ "128", "7" @@ -279,7 +292,7 @@ }, "18": { "type": "multi", - "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@Type='2' and @ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", "value": [ "8", "540:600", @@ -288,15 +301,15 @@ "point": 2 }, "19": { - "existEle": "//CRClip[@Path='이미지2.jpg']", - "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/@Length", + "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length", "type": "searchIndex", "value": "180", "point": 2 }, "20": { "type": "multi", - "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]//CRFilter/@*[name()='ID' or name()='VID104']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID104']", "value": [ "67", "5" @@ -305,7 +318,7 @@ }, "21": { "type": "multi", - "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@Type='2' and @ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", "value": [ "19", "750:780", @@ -314,50 +327,72 @@ "point": 2 }, "22": { - "ele": "//CRCUnitArr[@Name='{search}']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "opening", + "value": "마나가하섬으로 가자 (Let's go to Managaha Island)", "point": 3 }, "23": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID102='돋움체']", - "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID102='돋움체']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "type": "opening", + "value": "돋움체", "point": 2 }, "24": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID101='150']", - "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID101='150']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "type": "opening", + "value": "150", "point": 2 }, "25": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4'][@VID100='-1487764']", - "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4'][@VID100='-1487764']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "type": "opening", + "value": "-1487764", "point": 2 }, "26": { - "ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2'][@VID100='0.30000001'][@VID101='-1']", - "ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2'][@VID100='0.30000001'][@VID101='-1']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "ele2": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "type": "opening", + "value": [ + "0.300", + "-1" + ], "point": 2 }, "27": { - "ele": "//CRCUnitArr[@Name='{search}'][@VID505='1'][@VID507='2']", - "ele2": "//CROwneUnit[2]/CRCUnitArr[@VID505='1'][@VID507='2']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']", + "ele2": "//CRCUnitArr[@Name=\"{search}\"]/@*[name()='VID505' or name()='VID507']", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "type": "opening", + "value":[ + "1", + "2" + ], "point": 3 }, "28": { - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='{search}']]/preceding::CROwneUnit)][@Pos='0']", - "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[2]/CRCUnitArr/preceding::CROwneUnit)][@Pos='0']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name=\"{search}\"]]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "type": "opening", + "value": 0, "point": 2 }, "29": { - "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='{search}']]/preceding::CROwneUnit))][@Length='120']", - "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[2]/CRCUnitArr/preceding::CROwneUnit)][@Length='120']", - "search": "마나가하섬으로 가자 (Let’s go to Managaha Island)", + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = {startTime}]/@Length", + "ele3": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name=\"{search}\"]]/preceding-sibling::CROwneUnit)]/@Length", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "type": "opening", + "value": "120", "point": 2 }, "30": { @@ -365,7 +400,7 @@ "point": 2 }, "31": { - "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='840']", + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='720']", "point": 2 }, "32": { diff --git a/회차별채점자료/2502/json_채점기준표/0319/DIC_2502C.json b/회차별채점자료/2502/json_채점기준표/0319/DIC_2502C.json new file mode 100644 index 0000000..001349d --- /dev/null +++ b/회차별채점자료/2502/json_채점기준표/0319/DIC_2502C.json @@ -0,0 +1,411 @@ +{ + "0": { + "1": { + "ele": "none", + "point": 0 + }, + "2": { + "ele": "none", + "point": 0 + }, + "3": { + "ele": "none", + "point": 0 + }, + "4": { + "ele": "none", + "point": 0 + }, + "5": { + "ele": "none", + "point": 0 + }, + "6": { + "ele": "none", + "point": 0 + }, + "7": { + "ele": "none", + "point": 0 + }, + "8": { + "ele": "$[?(@.width == 65 && @.height == 45)]", + "type": "boolean", + "point": 10 + } + }, + "1": { + "1": { + "ele": "none", + "point": 0 + }, + "2": { + "ele": "none", + "point": 0 + }, + "3": { + "ele": "none", + "point": 0 + }, + "4": { + "ele": "none", + "point": 0 + }, + "5": { + "ele": "$.children[?(@.name=='Mountains of Cheorwon')].name", + "value": "Mountains of Cheorwon", + "point": 10 + }, + "6": { + "ele": "$.children[?(@.name=='Mountains of Cheorwon')].text.font.names[0]", + "type": "font", + "value": "Arial", + "point": 10 + }, + "7": { + "ele": "$.children[?(@.name=='Mountains of Cheorwon')].text.font.names[0]", + "value": "Arial-BoldItalicMT", + "point": 10 + }, + "8": { + "ele": "$.children[?(@.name=='Mountains of Cheorwon')].text.font.sizes[0]", + "value": 40, + "point": 10 + }, + "9": { + "ele": "$.children[?(@.name=='Mountains of Cheorwon')].text.font.colors[0]", + "type": "color", + "value": "f1eb4a", + "point": 10 + }, + "10": { + "ele": "none", + "point": 0 + }, + "11": { + "ele": "none", + "point": 0 + }, + "12": { + "ele": "none", + "point": 0 + }, + "13": { + "ele": "$.children[?(@.name=='철원 금학산 등산')].name", + "value": "철원 금학산 등산", + "point": 10 + }, + "14": { + "ele": "$.children[?(@.name=='철원 금학산 등산')].text.font.names[0]", + "type": "font", + "value": "GulimChe", + "point": 10 + }, + "15": { + "ele": "$.children[?(@.name=='철원 금학산 등산')].text.font.sizes[0]", + "value": 30, + "point": 10 + }, + "16": { + "ele": "$.children[?(@.name=='철원 금학산 등산')].text.font.colors[0]", + "type": "color", + "value": "f1eb4a", + "point": 10 + }, + "17": { + "ele": "none", + "point": 0 + }, + "18": { + "ele": "none", + "point": 0 + }, + "19": { + "ele": "none", + "point": 0 + }, + "20": { + "ele": "none", + "point": 0 + }, + "21": { + "ele": "none", + "point": 0 + }, + "22": { + "ele": "none", + "point": 0 + }, + "23": { + "ele": "none", + "point": 0 + }, + "24": { + "ele": "none", + "point": 0 + }, + "25": { + "ele": "none", + "point": 0 + }, + "26": { + "ele": "none", + "point": 0 + }, + "27": { + "ele": "$[?(@.width == 65 && @.height == 45)]", + "type": "boolean", + "point": 10 + } + }, + "2": { + "videoStartTime": 170, + "openingStartTime": 0, + "1": { + "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path", + "type": "array", + "value": [ + "동영상.mp4", + "이미지1.jpg", + "이미지3.jpg", + "이미지2.jpg" + ], + "point": 4 + }, + "2": { + "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='120']", + "point": 2 + }, + "3": { + "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)", + "type": "startend", + "start": "0", + "end": "385", + "point": 2 + }, + "4": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@Type='1'][@ID='47'][@VID100='6'][@VID103='1']", + "point": 3 + }, + "5": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "video", + "value": "금학산 정상에서", + "point": 3 + }, + "6": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search" : "금학산 정상에서", + "type": "video", + "value": "바탕체", + "point": 2 + }, + "7": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "금학산 정상에서", + "type": "video", + "value": "170", + "point": 2 + }, + "8": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "금학산 정상에서", + "type": "video", + "value": "-15081004", + "point": 2 + }, + "9": { + "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)", + "search": "금학산 정상에서", + "type": "video", + "value": 170, + "point": 2 + }, + "10": { + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/@Length", + "search" : "금학산 정상에서", + "type": "video", + "value": "150", + "point": 2 + }, + "11": { + "ele":"//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", + "ele2": "//CRCUnitArr[@Name={search}]/@*[name()='VID600' or name()='VID601']", + "type": "video", + "search": "금학산 정상에서", + "value": ["0.260", "0.888"], + "point": 2 + }, + "12": { + "existEle": "//CRClip[@Path='동영상.mp4']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute", + "type": "searchIndex", + "value": "1", + "point": 2 + }, + "13": { + "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "150", + "point": 2 + }, + "14": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID103']", + "value": [ + "67", + "8" + ], + "point": 2 + }, + "15": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "10", + "475:535", + "2" + ], + "point": 2 + }, + "16": { + "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "120", + "point": 2 + }, + "17": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']", + "value": [ + "102", + "9" + ], + "point": 2 + }, + "18": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "13", + "595:655", + "2" + ], + "point": 2 + }, + "19": { + "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "20": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']", + "value": [ + "184", + "25" + ], + "point": 2 + }, + "21": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "19", + "805:835", + "2" + ], + "point": 2 + }, + "22": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "opening", + "value": "금학산의 기운 (Energy of a Mountain)", + "point": 3 + }, + "23": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "금학산의 기운 (Energy of a Mountain)", + "type": "opening", + "value": "돋움체", + "point": 2 + }, + "24": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "금학산의 기운 (Energy of a Mountain)", + "type": "opening", + "value": "150", + "point": 2 + }, + "25": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "금학산의 기운 (Energy of a Mountain)", + "type": "opening", + "value": "-4077760", + "point": 2 + }, + "26": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "search": "금학산의 기운 (Energy of a Mountain)", + "type": "opening", + "value":[ + "0.3", + "-16777216" + ], + "point": 2 + }, + "27": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']", + "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']", + "search": "금학산의 기운 (Energy of a Mountain)", + "type": "opening", + "value":[ + "1", + "2" + ], + "point": 3 + }, + "28": { + "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)", + "search": "금학산의 기운 (Energy of a Mountain)", + "type": "opening", + "value": 0, + "point": 2 + }, + "29": { + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = {startTime}]/@Length", + "ele3": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/@Length", + "search": "금학산의 기운 (Energy of a Mountain)", + "type": "opening", + "value": "120", + "point": 2 + }, + "30": { + "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]", + "point": 2 + }, + "31": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='830']", + "point": 2 + }, + "32": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='90']", + "point": 2 + } + } +} \ No newline at end of file diff --git a/회차별채점자료/2502/json_채점기준표/0319/DIC_2502D.json b/회차별채점자료/2502/json_채점기준표/0319/DIC_2502D.json new file mode 100644 index 0000000..9516df0 --- /dev/null +++ b/회차별채점자료/2502/json_채점기준표/0319/DIC_2502D.json @@ -0,0 +1,410 @@ +{ + "0": { + "1": { + "ele": "none", + "point": 0 + }, + "2": { + "ele": "none", + "point": 0 + }, + "3": { + "ele": "none", + "point": 0 + }, + "4": { + "ele": "none", + "point": 0 + }, + "5": { + "ele": "none", + "point": 0 + }, + "6": { + "ele": "none", + "point": 0 + }, + "7": { + "ele": "none", + "point": 0 + }, + "8": { + "ele": "$[?(@.width == 65 && @.height == 45)]", + "type": "boolean", + "point": 10 + } + }, + "1": { + "1": { + "ele": "none", + "point": 0 + }, + "2": { + "ele": "none", + "point": 0 + }, + "3": { + "ele": "none", + "point": 0 + }, + "4": { + "ele": "$.children[?(@.name=='정상')]", + "type": "boolean", + "point": 10 + }, + "5": { + "ele": "none", + "point": 0 + }, + "6": { + "ele": "$.children[?(@.name=='Daeryong Mountain')].name", + "value": "Daeryong Mountain", + "point": 10 + }, + "7": { + "ele": "$.children[?(@.name=='Daeryong Mountain')].text.font.names[0]", + "type": "font", + "value": "Arial", + "point": 10 + }, + "8": { + "ele": "$.children[?(@.name=='Daeryong Mountain')].text.font.names[0]", + "value": "Arial-BoldItalicMT", + "point": 10 + }, + "9": { + "ele": "$.children[?(@.name=='Daeryong Mountain')].text.font.sizes[0]", + "value": 48, + "point": 10 + }, + "10": { + "ele": "$.children[?(@.name=='Daeryong Mountain')].text.font.colors[0]", + "type": "color", + "value": "9a3392", + "point": 10 + }, + "11": { + "ele": "none", + "point": 0 + }, + "12": { + "ele": "none", + "point": 0 + }, + "13": { + "ele": "none", + "point": 0 + }, + "14": { + "ele": "$.children[?(@.name=='춘천 대룡산 등산')].name", + "value": "춘천 대룡산 등산", + "point": 10 + }, + "15": { + "ele": "$.children[?(@.name=='춘천 대룡산 등산')].text.font.names[0]", + "type": "font", + "value": "DotumChe", + "point": 10 + }, + "16": { + "ele": "$.children[?(@.name=='춘천 대룡산 등산')].text.font.sizes[0]", + "value": 36, + "point": 10 + }, + "17": { + "ele": "$.children[?(@.name=='춘천 대룡산 등산')].text.font.colors[0]", + "type": "color", + "value": "99985b", + "point": 10 + }, + "18": { + "ele": "none", + "point": 0 + }, + "19": { + "ele": "none", + "point": 0 + }, + "20": { + "ele": "none", + "point": 0 + }, + "21": { + "ele": "none", + "point": 0 + }, + "22": { + "ele": "$.children[?(@.name=='정상')]", + "type": "boolean", + "point": 10 + }, + "23": { + "ele": "none", + "point": 0 + }, + "24": { + "ele": "none", + "point": 0 + }, + "25": { + "ele": "none", + "point": 0 + }, + "26": { + "ele": "$[?(@.width == 65 && @.height == 35)]", + "type": "boolean", + "point": 10 + } + }, + "2": { + "1": { + "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path", + "type": "array", + "value": [ + "동영상.mp4", + "이미지1.jpg", + "이미지3.jpg", + "이미지2.jpg" + ], + "point": 4 + }, + "2": { + "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='120']", + "point": 2 + }, + "3": { + "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)", + "type": "startend", + "start": "0", + "end": "300", + "point": 2 + }, + "4": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='40'][@VID100='0'][@VID103='1.2']", + "point": 3 + }, + "5": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "video", + "value": "대룡산의 아름다움", + "point": 3 + }, + "6": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "대룡산의 아름다움", + "type": "video", + "value": "바탕체", + "point": 2 + }, + "7": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "대룡산의 아름다움", + "type": "video", + "value": "170", + "point": 2 + }, + "8": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "대룡산의 아름다움", + "type": "video", + "value": "-10148184", + "point": 2 + }, + "9": { + "ele":"//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", + "ele2": "//CRCUnitArr[@Name={search}]/@*[name()='VID600' or name()='VID601']", + "type": "video", + "search": "대룡산의 아름다움", + "value": [ + 0.229, + 0.888 + ], + "point": 2 + }, + "10": { + "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)", + "search": "대룡산의 아름다움", + "type": "video", + "value": 150, + "point": 2 + }, + "11": { + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/@Length", + "search": "대룡산의 아름다움", + "type": "video", + "value": "120", + "point": 2 + }, + "12": { + "existEle": "//CRClip[@Path='동영상.mp4']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute", + "type": "searchIndex", + "value": "1", + "point": 2 + }, + "13": { + "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "150", + "point": 2 + }, + "14": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']", + "value": [ + "102", + "4" + ], + "point": 2 + }, + "15": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "11", + "390:450", + "2" + ], + "point": 2 + }, + "16": { + "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "17": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']", + "value": [ + "103", + "8" + ], + "point": 2 + }, + "18": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "8", + "570:630", + "2" + ], + "point": 2 + }, + "19": { + "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "20": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID103']", + "value": [ + "67", + "3" + ], + "point": 2 + }, + "21": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "19", + "720:810", + "2" + ], + "point": 2 + }, + "22": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "opening", + "value": "대룡산의 정기 (The spirit of the Mountain)", + "point": 3 + }, + "23": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "대룡산의 정기 (The spirit of the Mountain)", + "type": "opening", + "value": "돋움체", + "point": 2 + }, + "24": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "대룡산의 정기 (The spirit of the Mountain)", + "type": "opening", + "value": "150", + "point": 2 + }, + "25": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "대룡산의 정기 (The spirit of the Mountain)", + "type": "opening", + "value": "-6991812", + "point": 2 + }, + "26": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "search": "대룡산의 정기 (The spirit of the Mountain)", + "type": "opening", + "value": [ + "0.30000001", + "-16777216" + ], + "point": 2 + }, + "27": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']", + "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']", + "search": "대룡산의 정기 (The spirit of the Mountain)", + "type": "opening", + "value":[ + "1", + "2" + ], + "point": 3 + }, + "28": { + "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)", + "search": "대룡산의 정기 (The spirit of the Mountain)", + "type": "opening", + "value": 0, + "point": 2 + }, + "29": { + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = {startTime}]/@Length", + "ele3": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/@Length", + "search": "대룡산의 정기 (The spirit of the Mountain)", + "type": "opening", + "value": "120", + "point": 2 + }, + "30": { + "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]", + "point": 2 + }, + "31": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='800']", + "point": 2 + }, + "32": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='90']", + "point": 2 + } + } +} \ No newline at end of file diff --git a/회차별채점자료/2502/json_채점기준표/0320_DIC_채점기준표_Clipping.json b/회차별채점자료/2502/json_채점기준표/0320_DIC_채점기준표_Clipping.json new file mode 100644 index 0000000..e3bb12d --- /dev/null +++ b/회차별채점자료/2502/json_채점기준표/0320_DIC_채점기준표_Clipping.json @@ -0,0 +1,561 @@ +{ + "0": { + "1": { + "ele": "none", + "point": 0 + }, + "2": { + "ele": "none", + "point": 0 + }, + "3": { + "ele": "none", + "point": 0 + }, + "4": { + "ele": "none", + "point": 0 + }, + "5": { + "ele": "none", + "point": 0 + }, + "6": { + "ele": "none", + "point": 0 + }, + "7": { + "ele": "none", + "point": 0 + }, + "8": { + "ele": "$[?(@.width == 65 && @.height == 45)]", + "type": "boolean", + "point": 10 + } + }, + "1": { + "1": { + "ele": "none", + "point": 0 + }, + "2": { + "ele": "none", + "point": 0 + }, + "3": { + "ele": "none", + "point": 0 + }, + "4": { + "ele": "none", + "point": 0 + }, + "5": { + "ele": "$.children[?(@.name=='Animal Village')].name", + "value": "Animal Village", + "point": 10 + }, + "6": { + "ele": "$.children[?(@.name=='Animal Village')].text.font.names[0]", + "type": "font", + "value": "Arial", + "point": 10 + }, + "7": { + "ele": "$.children[?(@.name=='Animal Village')].text.font.names[0]", + "value": "Arial-BoldItalicMT", + "point": 10 + }, + "8": { + "ele": "$.children[?(@.name=='Animal Village')].text.font.sizes[0]", + "value": 48, + "point": 10 + }, + "9": { + "ele": "$.children[?(@.name=='Animal Village')].text.font.colors[0]", + "type": "color", + "value": "65f743", + "point": 10 + }, + "10": { + "ele": "none", + "point": 0 + }, + "11": { + "ele": "none", + "point": 0 + }, + "12": { + "ele": "none", + "point": 0 + }, + "13": { + "ele": "$.children[?(@.name=='동물 마을')].name", + "value": "동물 마을", + "point": 10 + }, + "14": { + "ele": "$.children[?(@.name=='동물 마을')].text.font.names[0]", + "type": "font", + "value": "GungsuhChe", + "point": 10 + }, + "15": { + "ele": "$.children[?(@.name=='동물 마을')].text.font.sizes[0]", + "value": 36, + "point": 10 + }, + "16": { + "ele": "$.children[?(@.name=='동물 마을')].text.font.colors[0]", + "type": "color", + "value": "f74343", + "point": 10 + }, + "17": { + "ele": "none", + "point": 0 + }, + "18": { + "ele": "none", + "point": 0 + }, + "19": { + "ele": "none", + "point": 0 + }, + "20": { + "ele": "none", + "point": 0 + }, + "21": { + "ele": "none", + "point": 0 + }, + "22": { + "ele": "none", + "point": 0 + }, + "23": { + "ele": "none", + "point": 0 + }, + "24": { + "ele": "none", + "point": 0 + }, + "25": { + "ele": "none", + "point": 0 + }, + "26": { + "ele": "none", + "point": 0 + }, + "27": { + "ele": "$[?(@.width == 65 && @.height == 45)]", + "type": "boolean", + "point": 10 + } + }, + "2": { + "videoStartTime": 160, + "openingStartTime": 0, + "1": { + "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path", + "type": "array", + "value": [ + "동영상.mp4", + "이미지2.jpg", + "이미지1.jpg", + "이미지3.jpg" + ], + "point": 4 + }, + "2": { + "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='150']", + "point": 2 + }, + "3": { + "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)", + "type": "startend", + "start": "0", + "end": "370", + "point": 2 + }, + "4": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@Type='1'][@ID='43'][@VID100='9'][@VID103<=0.7 and @VID103>0.69]", + "point": 3 + }, + "5": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "video", + "value": "나무기차", + "point": 3 + }, + "6": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "나무기차", + "type": "video", + "value": "돋움체", + "point": 2 + }, + "7": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "나무기차", + "type": "video", + "value": "120", + "point": 2 + }, + "8": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "나무기차", + "type": "video", + "value": "-13290016", + "point": 2 + }, + "9": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID600' or name()='VID601']", + "ele2": "//CRCUnitArr[@Name={search}]/@*[name()='VID600' or name()='VID601']", + "type": "video", + "search": "나무기차", + "value": [ + 0.240, + 0.777 + ], + "point": 2 + }, + "10": { + "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)", + "search": "나무기차", + "type": "video", + "value": 160, + "point": 2 + }, + "11": { + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/@Length", + "search": "나무기차", + "type": "video", + "value": "150", + "point": 2 + }, + "12": { + "existEle": "//CRClip[@Path='동영상.mp4']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute", + "type": "searchIndex", + "value": "1", + "point": 2 + }, + "13": { + "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "150", + "point": 2 + }, + "14": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']", + "value": [ + "96", + "13" + ], + "point": 2 + }, + "15": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "35", + "490:520", + "2" + ], + "point": 2 + }, + "16": { + "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "17": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID102']", + "value": [ + "104", + "8" + ], + "point": 2 + }, + "18": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "19", + "670:700", + "2" + ], + "point": 2 + }, + "19": { + "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "20": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID103']", + "value": [ + "108", + "90" + ], + "point": 2 + }, + "21": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "9", + "820:880", + "2" + ], + "point": 2 + }, + "22": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "opening", + "value": "멋진 기차 모형 (Fine Train Model)", + "point": 3 + }, + "23": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "멋진 기차 모형 (Fine Train Model)", + "type": "opening", + "value": "바탕체", + "point": 2 + }, + "24": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "멋진 기차 모형 (Fine Train Model)", + "type": "opening", + "value": "150", + "point": 2 + }, + "25": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "멋진 기차 모형 (Fine Train Model)", + "type": "opening", + "value": "-14688179", + "point": 2 + }, + "26": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "search": "멋진 기차 모형 (Fine Train Model)", + "type": "opening", + "value": [ + "0.2", + "-16307450" + ], + "point": 2 + }, + "27": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']", + "ele2": "//CRCUnitArr[@Name='{search}']/@*[name()='VID505' or name()='VID507']", + "search": "멋진 기차 모형 (Fine Train Model)", + "type": "opening", + "value": [ + "2", + "2" + ], + "point": 3 + }, + "28": { + "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)", + "search": "멋진 기차 모형 (Fine Train Model)", + "type": "opening", + "value": 0, + "point": 2 + }, + "29": { + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = {startTime}]/@Length", + "ele3": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/@Length", + "search": "멋진 기차 모형 (Fine Train Model)", + "type": "opening", + "value": "120", + "point": 2 + }, + "30": { + "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]", + "point": 2 + }, + "31": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='880']", + "point": 2 + }, + "32": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='60']", + "point": 2 + } + }, + "4": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "450" + ], + "point": 5, + "desc": "캔버스 사이즈 650*450" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "배경색 문항은 채점 불가" + }, + "3": { + "ele": "//Layer[contains(Name/@value, 'Layer 2')][MaskOpType/@value='Layering']", + "point": 6 + }, + "4": { + "ele": "none", + "point": 5, + "desc": "가로방향 흐릿하게 문항은 채점 불가" + }, + "5": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "answer": "ROUNDED_RECTANGLE", + "point": 6 + }, + "6": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 370, + "height": 60 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "7": { + "type": "gradient", + "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value", + "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value", + "value": { + "startColor": "347813", + "endColor": "041177" + }, + "point": 6 + }, + "8": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value", + "value": "어린이 과학관", + "point": 5 + }, + "9": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value", + "value": "돋움", + "point": 3 + }, + "10": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value", + "value": "True", + "point": 3 + }, + "11": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value", + "value": "32", + "point": 3 + }, + "12": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "f04da5", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "13": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", + "value": "3", + "point": 3 + }, + "14": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "ffe000", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "15": { + "ele": "//Layer[MaskOpType/@value='Clipping'][last()]", + "point": 6, + "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함" + }, + "16": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "value": "RECTANGLE", + "point": 3 + }, + "17": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 150, + "height": 150 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "18": { + "ele": "//Layer[contains(Name/@value, 'Layer 5')]//outline_peninfo/Width/@value", + "value": "7", + "point": 3 + }, + "19": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "008878", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)" + }, + "20": { + "type": "shadow", + "ele": { + "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]", + "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value", + "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value", + "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value", + "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value" + }, + "value": { + "width": "5", + "distance": "3", + "blur": "1", + "angle": "320" + }, + "point": 5, + "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" + } + } +} \ No newline at end of file diff --git a/회차별채점자료/2502/json_채점기준표/0320_DIC_채점기준표_Layer.json b/회차별채점자료/2502/json_채점기준표/0320_DIC_채점기준표_Layer.json new file mode 100644 index 0000000..8ec84df --- /dev/null +++ b/회차별채점자료/2502/json_채점기준표/0320_DIC_채점기준표_Layer.json @@ -0,0 +1,558 @@ +{ + "0": { + "1": { + "ele": "none", + "point": 0 + }, + "2": { + "ele": "none", + "point": 0 + }, + "3": { + "ele": "none", + "point": 0 + }, + "4": { + "ele": "none", + "point": 0 + }, + "5": { + "ele": "none", + "point": 0 + }, + "6": { + "ele": "none", + "point": 0 + }, + "7": { + "ele": "none", + "point": 0 + }, + "8": { + "ele": "$[?(@.width == 65 && @.height == 45)]", + "type": "boolean", + "point": 10 + } + }, + "1": { + "1": { + "ele": "none", + "point": 0 + }, + "2": { + "ele": "none", + "point": 0 + }, + "3": { + "ele": "none", + "point": 0 + }, + "4": { + "ele": "$.children[?(@.name=='마나가하')]", + "type": "boolean", + "point": 10 + }, + "5": { + "ele": "none", + "point": 0 + }, + "6": { + "ele": "$.children[?(@.name=='Managaha Island')].name", + "value": "Managaha Island", + "point": 10 + }, + "7": { + "ele": "$.children[?(@.name=='Managaha Island')].text.font.names[0]", + "type": "font", + "value": "Arial", + "point": 10 + }, + "8": { + "ele": "$.children[?(@.name=='Managaha Island')].text.font.names[0]", + "value": "Arial-BoldItalicMT", + "point": 10 + }, + "9": { + "ele": "$.children[?(@.name=='Managaha Island')].text.font.sizes[0]", + "value": 48, + "point": 10 + }, + "10": { + "ele": "$.children[?(@.name=='Managaha Island')].text.font.colors[0]", + "type": "color", + "value": "495fd1", + "point": 10 + }, + "11": { + "ele": "none", + "point": 0 + }, + "12": { + "ele": "none", + "point": 0 + }, + "13": { + "ele": "none", + "point": 0 + }, + "14": { + "ele": "$.children[?(@.name=='사이판 섬 즐기기')].name", + "value": "사이판 섬 즐기기", + "point": 10 + }, + "15": { + "ele": "$.children[?(@.name=='사이판 섬 즐기기')].text.font.names[0]", + "type": "font", + "value": "DotumChe", + "point": 10 + }, + "16": { + "ele": "$.children[?(@.name=='사이판 섬 즐기기')].text.font.sizes[0]", + "value": 36, + "point": 10 + }, + "17": { + "ele": "$.children[?(@.name=='사이판 섬 즐기기')].text.font.colors[0]", + "type": "color", + "value": "e52e20", + "point": 10 + }, + "18": { + "ele": "none", + "point": 0 + }, + "19": { + "ele": "none", + "point": 0 + }, + "20": { + "ele": "none", + "point": 0 + }, + "21": { + "ele": "none", + "point": 0 + }, + "22": { + "ele": "$.children[?(@.name=='마나가하')]", + "type": "boolean", + "point": 10 + }, + "23": { + "ele": "none", + "point": 0 + }, + "24": { + "ele": "none", + "point": 0 + }, + "25": { + "ele": "none", + "point": 0 + }, + "26": { + "ele": "$[?(@.width == 65 && @.height == 35)]", + "type": "boolean", + "point": 10 + } + }, + "2": { + "1": { + "ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path", + "type": "array", + "value": [ + "동영상.mp4", + "이미지1.jpg", + "이미지3.jpg", + "이미지2.jpg" + ], + "point": 4 + }, + "2": { + "ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='150']", + "point": 2 + }, + "3": { + "ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)", + "type": "startend", + "start": "0", + "end": "270", + "point": 2 + }, + "4": { + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='40'][@VID100='8'][@VID103='0.89999998']", + "point": 3 + }, + "5": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "video", + "value": "자연이 빚어낸 섬", + "point": 3 + }, + "6": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "자연이 빚어낸 섬", + "type": "video", + "value": "바탕체", + "point": 2 + }, + + "7": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "자연이 빚어낸 섬", + "type": "video", + "value": "120", + "point": 2 + }, + "8": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "자연이 빚어낸 섬", + "type": "video", + "value": "-1487764", + "point": 2 + }, + "9": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@VID600' or name()='VID601", + "ele2": "//CRCUnitArr[@Name={search}]/@*[name()='VID600' or name()='VID601']", + "type": "video", + "search": "자연이 빚어낸 섬", + "value": [ + 0.071, + 0.777 + ], + "point": 2 + }, + "10": { + "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)", + "search": "자연이 빚어낸 섬", + "type": "video", + "value": 150, + "point": 2 + }, + "11": { + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name='{search}']]/preceding-sibling::CROwneUnit)]/@Length", + "search": "자연이 빚어낸 섬", + "type": "video", + "value": "120", + "point": 2 + }, + "12": { + "existEle": "//CRClip[@Path='동영상.mp4']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute", + "type": "searchIndex", + "value": "1", + "point": 2 + }, + "13": { + "existEle": "//CRClip[@Path='이미지1.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "150", + "point": 2 + }, + "14": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']", + "value": [ + "173", + "450" + ], + "point": 2 + }, + "15": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지1.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "11", + "360:420", + "2" + ], + "point": 2 + }, + "16": { + "existEle": "//CRClip[@Path='이미지3.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "17": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID101']", + "value": [ + "128", + "7" + ], + "point": 2 + }, + "18": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지3.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "8", + "540:600", + "2" + ], + "point": 2 + }, + "19": { + "existEle": "//CRClip[@Path='이미지2.jpg'] | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/@Length", + "type": "searchIndex", + "value": "180", + "point": 2 + }, + "20": { + "type": "multi", + "ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]//CRFilter/@*[name()='ID' or name()='VID104']", + "value": [ + "67", + "5" + ], + "point": 2 + }, + "21": { + "type": "multi", + "ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::CRClip | //CRClip[@Type='11']/CRCUnitArr[@Path='이미지2.jpg']/../preceding-sibling::CRClip)][1]/preceding-sibling::CRTrackClip)]/@*[name()='ID' or name()='Range' or name()='Type']", + "value": [ + "19", + "750:780", + "2" + ], + "point": 2 + }, + "22": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@Name", + "type": "opening", + "value": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "point": 3 + }, + "23": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID102", + "ele2": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit/@VID102", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "type": "opening", + "value": "돋움체", + "point": 2 + }, + "24": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit/@VID101", + "ele2": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool[@Type='1']/GCUnit/@VID101", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "type": "opening", + "value": "150", + "point": 2 + }, + "25": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4']/@VID100", + "ele2": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool/GCUnit[@Type='4']/@VID100", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "type": "opening", + "value": "-1487764", + "point": 2 + }, + "26": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "ele2": "//CRCUnitArr[@Name=\"{search}\"]//GCUnitPool/GCUnit[@Type='2']/@*[name()='VID100' or name()='VID101']", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "type": "opening", + "value": [ + "0.300", + "-1" + ], + "point": 2 + }, + "27": { + "ele": "//CROwneUnit[{subtitleIndex}]/CRCUnitArr/@*[name()='VID505' or name()='VID507']", + "ele2": "//CRCUnitArr[@Name=\"{search}\"]/@*[name()='VID505' or name()='VID507']", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "type": "opening", + "value":[ + "1", + "2" + ], + "point": 3 + }, + "28": { + "ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/preceding-sibling::CRTrackClip/@Length)", + "ele2": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name=\"{search}\"]]/preceding-sibling::CROwneUnit)]/preceding-sibling::CRTrackClip/@Length)", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "type": "opening", + "value": 0, + "point": 2 + }, + "29": { + "ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex='-1')][{subtitleOrder}]/@Length", + "ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[sum(preceding-sibling::CRTrackClip/@Length) = {startTime}]/@Length", + "ele3": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[CRCUnitArr[@Name=\"{search}\"]]/preceding-sibling::CROwneUnit)]/@Length", + "search": "마나가하섬으로 가자 (Let's go to Managaha Island)", + "type": "opening", + "value": "120", + "point": 2 + }, + "30": { + "ele": "//CRTrackList[@Name='오디오1'][@Count>='1']/CRTrackClip[1][not(@ClipIndex='-1')]", + "point": 2 + }, + "31": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='720']", + "point": 2 + }, + "32": { + "ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='90']", + "point": 2 + } + }, + "4": { + "1": { + "type": "multi", + "ele": "//Document/Width/@value | //Document/Height/@value", + "value": [ + "650", + "450" + ], + "point": 5, + "desc": "캔버스 사이즈 650*450" + }, + "2": { + "ele": "none", + "point": 5, + "desc": "배경색 문항은 채점 불가" + }, + "3": { + "ele": "//Layer[contains(Name/@value, 'Layer 2')][MaskOpType/@value='Layering']", + "point": 6 + }, + "4": { + "ele": "none", + "point": 5, + "desc": "가로방향 흐릿하게 문항은 채점 불가" + }, + "5": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "answer": "ROUNDED_RECTANGLE", + "point": 6 + }, + "6": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 3')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 370, + "height": 60 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "7": { + "type": "gradient", + "startColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_start_color/@value", + "endColor": "//Layer[contains(Name/@value, 'Layer 3')]//gradient_end_color/@value", + "value": { + "startColor": "347813", + "endColor": "041177" + }, + "point": 6 + }, + "8": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/lines/Item/@value", + "value": "어린이 과학관", + "point": 5 + }, + "9": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Name/@value", + "value": "돋움", + "point": 3 + }, + "10": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Italic/@value", + "value": "True", + "point": 3 + }, + "11": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/font/Size/@value", + "value": "32", + "point": 3 + }, + "12": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Interior')]/secondary_color/@value", + "value": "f04da5", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "13": { + "type": "exact", + "ele": "//Layer//Shape[shape_type/@value='TEXT']/outline_peninfo/Width/@value", + "value": "3", + "point": 3 + }, + "14": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='TEXT'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "ffe000", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것" + }, + "15": { + "ele": "//Layer[MaskOpType/@value='Clipping'][last()]", + "point": 6, + "desc": "클리핑 마스크 항목은 별도 레이어로 추가되고 해당 속성을 추가해놓은 레이어가 있는지 여부 체크 함" + }, + "16": { + "ele": "//Layer[contains(Name/@value, 'Layer 3')]//shape_type/@value", + "value": "RECTANGLE", + "point": 3 + }, + "17": { + "type": "size", + "posX": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/X/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/X/@value", + "posY": "//Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[last()]/Y/@value - //Layer[contains(Name/@value, 'Layer 5')]//op_points[Item]/Item[1]/Y/@value", + "value": { + "width": 150, + "height": 150 + }, + "point": 3, + "desc": "레이어 쉐이프 X, Y 좌표를 가지고 너비, 높이 계산하여 정답 채점" + }, + "18": { + "ele": "//Layer[contains(Name/@value, 'Layer 5')]//outline_peninfo/Width/@value", + "value": "7", + "point": 3 + }, + "19": { + "type": "color", + "ele": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Outline')]/primary_color/@value", + "value": "008878", + "point": 3, + "desc": "색상 코드 비교 시 소문자로 입력할 것(채우기:secondary_color, 외곽선:primary_color)" + }, + "20": { + "type": "shadow", + "ele": { + "shadow": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]", + "width": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_width/@value", + "distance": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_distance/@value", + "blur": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_blur/@value", + "angle": "//Layer//Shape[shape_type/@value='RECTANGLE'][contains(draw_type/@value, 'Shadow')]/shadow_angle/@value" + }, + "value": { + "width": "5", + "distance": "3", + "blur": "1", + "angle": "320" + }, + "point": 5, + "desc": "그림자 속성이 있는 경우 그림자 속성의 너비, 거리, 흐림 정도, 각도를 비교하여 정답 채점" + } + } +} \ No newline at end of file