Articulate eLearning コース (imsmanifest.xml) の XML マニフェスト ファイルを解析しようとしています。
XML 構造の抜粋を以下に示します (adlcp:masteryscore にドリルダウンしようとしています)。
<?xml version="1.0" encoding="UTF-8"?>
<manifest xsi:schemaLocation="http://www.imsproject.org/xsd/imscp_rootv1p1p2 imscp_rootv1p1p2.xsd http://www.imsglobal.org/xsd/imsmd_rootv1p2p1 imsmd_rootv1p2p1.xsd http://www.adlnet.org/xsd/adlcp_rootv1p2 adlcp_rootv1p2.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2" xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2" version="1.0" identifier="Electrical_Design_Part_3">
<metadata/>
<organizations default="Electrical_Design_Part_3_ORG">
<organization identifier="Electrical_Design_Part_3_ORG">
<title>Electrical Design - Part 3</title>
<item identifier="Electrical_Design_Part_3_SCO" identifierref="Articulate_Presenter_RES" isvisible="true">
<title>Electrical Design - Part 3</title>
<adlcp:masteryscore>65</adlcp:masteryscore>
</item>
</organization>
</organizations>
<resources/>
</manifest>
XML::Simple と XML::LibXML を使ってみました。これらのモジュールをより単純な XML ファイルで正常に動作させることはできますが、実際に解析する必要があるマニフェスト ファイルでは動作しません。
次のコードは、XML::LibXML を使用してタイトル タグにドリル ダウンする試みを示しています。
use XML::LibXML;
$filename = "imsmanifest.xml";
$parser = XML::LibXML->new();
$xmldoc = $parser->parse_file($filename);
for my $sample ($xmldoc->findnodes('/manifest/organizations/organization/item/title')) {
for my $property ($sample->findnodes('./*')) {
print $property->nodeName(), ": ", $property->textContent(), "\n";
}
print "\n";
};
adlcp:masteryscore タグのコロンをどのように処理しますか? これを使用しようとすると、エラーが発生しますが、正しく実行していない可能性があります。
adlcp:masteryscore にドリルダウンする正しい方法を教えてください。
どうもありがとうございました。