Moodle XMLフォーマットから、Filemaker Proへ問題を取り込む。
Filemake Proは、XMLフォーマットデータをインポートする仕様を持つ。
ただし、FMPXMLRESULT文法へXSL変換する必要がある。FMPXMLRESULT文法については、
https://www.filemaker.com/help/13/fmp/ja/html/import_export.17.33.html
を参考にして、Moodle XMLをFMPXMLRESUL文法Tへ変換するXSLを書き込んでみる。
まず、moodle XML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
<!-- question: 2519 --> <question type="multichoice"> <name> <text>[56A001] 手術室における安全性と環境整備:感染: AIDS, 肝炎</text> </name> <questiontext format="html"> <text><![CDATA[<br>1. 正しいのはどれか。<b>2つ選べ</b>。<br>HIV: ヒト免疫不全ウィルス<br><br>]]></text> </questiontext> <generalfeedback format="html"> <text/> </generalfeedback> <defaultgrade>1.0000000</defaultgrade> <penalty>0.3333333</penalty> <hidden>0</hidden> <single>false</single> <shuffleanswers>false</shuffleanswers> <answernumbering>abc</answernumbering> <correctfeedback format="moodle_auto_format"> <text/> </correctfeedback> <partiallycorrectfeedback format="moodle_auto_format"> <text/> </partiallycorrectfeedback> <incorrectfeedback format="moodle_auto_format"> <text/> </incorrectfeedback> <answer fraction="-33.33333" format="moodle_auto_format"> <text>HIVはDNAウィルスである。</text> <feedback format="moodle_auto_format"> <text/> </feedback> </answer> <answer fraction="50" format="moodle_auto_format"> <text><![CDATA[<q:cc></q:cc> HIVの標的細胞はCD4 + Tリンパ球である。]]></text> <feedback format="moodle_auto_format"> <text/> </feedback> </answer> <answer fraction="-33.33333" format="moodle_auto_format"> <text>HIVは血液、精液、腟分泌液のみに含まれる。</text> <feedback format="moodle_auto_format"> <text/> </feedback> </answer> <answer fraction="50" format="moodle_auto_format"> <text>B型肝炎ウィルスに有効な消粛法はHIVにすべて有効である。</text> <feedback format="moodle_auto_format"> <text/> </feedback> </answer> <answer fraction="-33.33333" format="moodle_auto_format"> <text>HIV陽性患者の血中ウィルス量はB型肝炎患者のウイルス量より多い。</text> <feedback format="moodle_auto_format"> <text/> </feedback> </answer> <tags> <tag> <text>手術室における安全性と環境整備</text> </tag> <tag> <text>感染</text> </tag> </tags> </question> |
次に、5択の選択問題のMoodle XML問題をXLS変換するmoodle2FMP.xsl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/*"> <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"> <ERRORCODE>0</ERRORCODE> <PRODUCT BUILD="" NAME="" VERSION=""/> <DATABASE DATEFORMAT="M/d/yyyy" LAYOUT="" NAME="" RECORDS="{count(/*/*)}" TIMEFORMAT="h:mm:ss a"/> <METADATA> <xsl:for-each select="/*/*[position() = 1]/*"> <xsl:choose> <xsl:when test="./ancestor-or-self::answer"> <FIELD> <xsl:attribute name="EMPTYOK">YES</xsl:attribute> <xsl:attribute name="MAXREPEAT">1</xsl:attribute> <xsl:attribute name="NAME"> <xsl:value-of select="name()"/> </xsl:attribute> <xsl:attribute name="TYPE">TEXT</xsl:attribute> </FIELD> <FIELD> <xsl:attribute name="EMPTYOK">YES</xsl:attribute> <xsl:attribute name="MAXREPEAT">1</xsl:attribute> <xsl:attribute name="NAME"> <xsl:text>fraction</xsl:text> </xsl:attribute> <xsl:attribute name="TYPE">TEXT</xsl:attribute> </FIELD> </xsl:when> <xsl:otherwise> <FIELD> <xsl:attribute name="EMPTYOK">YES</xsl:attribute> <xsl:attribute name="MAXREPEAT">1</xsl:attribute> <xsl:attribute name="NAME"> <xsl:value-of select="name()"/> </xsl:attribute> <xsl:attribute name="TYPE">TEXT</xsl:attribute> </FIELD> </xsl:otherwise> </xsl:choose> </xsl:for-each> </METADATA> <RESULTSET> <xsl:attribute name="FOUND"> <xsl:value-of select="count(child::*)"/> </xsl:attribute> <xsl:for-each select="child::*"> <ROW> <xsl:attribute name="MODID">0</xsl:attribute> <xsl:attribute name="RECORDID">0</xsl:attribute> <xsl:for-each select="child::*"> <xsl:choose> <xsl:when test="./ancestor-or-self::answer"> <COL> <DATA> <xsl:value-of select="."/> </DATA> </COL> <COL> <DATA> <xsl:text>配点:</xsl:text> <xsl:value-of select="@fraction"/> </DATA> </COL> </xsl:when> <xsl:otherwise> <COL> <DATA> <xsl:value-of select="."/> </DATA> </COL> </xsl:otherwise> </xsl:choose> </xsl:for-each> </ROW> </xsl:for-each> </RESULTSET> </FMPXMLRESULT> </xsl:template> </xsl:stylesheet> |
Oxygen Editor (V.20)を用いてJava XML parser Saxon−HE 9.8.0.12によって、XSL変換させると、
2017-A.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
<?xml version="1.0" encoding="UTF-8"?> <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"> <ERRORCODE>0</ERRORCODE> <PRODUCT BUILD="" NAME="" VERSION=""/> <DATABASE DATEFORMAT="M/d/yyyy" LAYOUT="" NAME="" RECORDS="90" TIMEFORMAT="h:mm:ss a"/> <METADATA> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="name" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="questiontext" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="generalfeedback" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="defaultgrade" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="penalty" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="hidden" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="single" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="shuffleanswers" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="answernumbering" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="correctfeedback" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="partiallycorrectfeedback" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="incorrectfeedback" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="answer" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="fraction" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="answer" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="fraction" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="answer" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="fraction" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="answer" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="fraction" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="answer" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="fraction" ENGINE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="tags" ENGINE="TEXT"/> </METADATA> <RESULTSET FOUND="90"> <ROW MODID="0" RECORDID="0"> <COL> <DATA> [56A001] 手術室における安全性と環境整備:感染: AIDS, 肝炎 </DATA> </COL> <COL> <DATA> <br>1. 正しいのはどれか。<b>2つ選べ</b>。[56A001]<br>HIV: ヒト免疫不全ウィルス<br><br> </DATA> </COL> <COL> <DATA> </DATA> </COL> <COL> <DATA>1.0000000</DATA> </COL> <COL> <DATA>0.3333333</DATA> </COL> <COL> <DATA>0</DATA> </COL> <COL> <DATA>false</DATA> </COL> <COL> <DATA>false</DATA> </COL> <COL> <DATA>abc</DATA> </COL> <COL> <DATA> </DATA> </COL> <COL> <DATA> </DATA> </COL> <COL> <DATA> </DATA> </COL> <COL> <DATA> HIVはDNAウィルスである。 </DATA> </COL> <COL> <DATA>配点:-33.33333</DATA> </COL> <COL> <DATA> <q:cc></q:cc> HIVの標的細胞はCD4 + Tリンパ球である。 </DATA> </COL> <COL> <DATA>配点:50</DATA> </COL> <COL> <DATA> HIVは血液、精液、腟分泌液のみに含まれる。 </DATA> </COL> <COL> <DATA>配点:-33.33333</DATA> </COL> <COL> <DATA> B型肝炎ウィルスに有効な消粛法はHIVにすべて有効である。 </DATA> </COL> <COL> <DATA>配点:50</DATA> </COL> <COL> <DATA> HIV陽性患者の血中ウィルス量はB型肝炎患者のウイルス量より多い。 </DATA> </COL> <COL> <DATA>配点:-33.33333</DATA> </COL> <COL> <DATA> 総論 手術室における安全管理・環境整備 感染 </DATA> </COL> </ROW> ........ |
Filemaker Pro側では、一回目の取り込み時に自動で必要なフィールドを作成してくれる。
2回目のXML読み込みからは、既存のフィールドとの対照表が表示されるので、取り込みにずれがないか注意しながら、読み込む。
問題文部分であるquestiontextタグ内に、画像データが含まれる場合は、H64テキスト変換されている画像情報を含む