Class Scorm12Manifest

java.lang.Object
dev.jcputney.elearning.parser.input.scorm12.Scorm12Manifest
All Implemented Interfaces:
PackageManifest, Serializable

public class Scorm12Manifest extends Object implements PackageManifest
Represents the SCORM IMS Content Packaging (IMSCP) elements according to the imscp_rootv1p1p2 schema.

This class encapsulates properties and structure for SCORM content packages, including manifest, metadata, organizations, resources, and dependencies. It is designed to conform to the IMS Content Packaging specification, enabling SCORM-compliant content to be organized and referenced in an LMS.

The IMSCP namespace is specified by NAMESPACE_URI, and this class is designed to align with the SCORM 1.2 specification.

The following schema snippet shows the structure of a "manifest" element:

 <?xml version="1.0"?>
 <xsd:schema xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
             targetNamespace="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
             xmlns:xml="http://www.w3.org/XML/1998/namespace"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
             elementFormDefault="unqualified" version="IMS CP 1.1.2">

    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="ims_xml.xsd"/>

    <xsd:attributeGroup name="attr.base">
       <xsd:attribute ref="xml:base" use="optional"/>
    </xsd:attributeGroup>

    <xsd:attributeGroup name="attr.default">
       <xsd:attribute name="default" type="xsd:IDREF" use="optional"/>
    </xsd:attributeGroup>

    <xsd:attributeGroup name="attr.href">
       <xsd:attribute name="href" use="optional">
          <xsd:simpleType>
             <xsd:restriction base="xsd:anyURI">
                <xsd:maxLength value="2000"/>
             </xsd:restriction>
          </xsd:simpleType>
       </xsd:attribute>
    </xsd:attributeGroup>

    <xsd:attributeGroup name="attr.href.req">
       <xsd:attribute name="href" use="required">
          <xsd:simpleType>
             <xsd:restriction base="xsd:anyURI">
                <xsd:maxLength value="2000"/>
             </xsd:restriction>
          </xsd:simpleType>
       </xsd:attribute>
    </xsd:attributeGroup>

    <xsd:attributeGroup name="attr.identifier.req">
       <xsd:attribute name="identifier" type="xsd:ID" use="required"/>
    </xsd:attributeGroup>

    <xsd:attributeGroup name="attr.identifier">
       <xsd:attribute name="identifier" type="xsd:ID" use="optional"/>
    </xsd:attributeGroup>

    <xsd:attributeGroup name="attr.isvisible">
       <xsd:attribute name="isvisible" type="xsd:boolean" use="optional"/>
    </xsd:attributeGroup>

    <xsd:attributeGroup name="attr.parameters">
       <xsd:attribute name="parameters" use="optional">
          <xsd:simpleType>
             <xsd:restriction base="xsd:string">
                <xsd:maxLength value="1000"/>
             </xsd:restriction>
          </xsd:simpleType>
       </xsd:attribute>
    </xsd:attributeGroup>

    <xsd:attributeGroup name="attr.identifierref">
       <xsd:attribute name="identifierref" use="optional">
          <xsd:simpleType>
             <xsd:restriction base="xsd:string">
                <xsd:maxLength value="2000"/>
             </xsd:restriction>
          </xsd:simpleType>
       </xsd:attribute>
    </xsd:attributeGroup>

    <xsd:attributeGroup name="attr.identifierref.req">
       <xsd:attribute name="identifierref" use="required">
          <xsd:simpleType>
             <xsd:restriction base="xsd:string">
                <xsd:maxLength value="2000"/>
             </xsd:restriction>
          </xsd:simpleType>
       </xsd:attribute>
    </xsd:attributeGroup>

    <xsd:attributeGroup name="attr.resourcetype.req">
       <xsd:attribute name="type" use="required">
          <xsd:simpleType>
             <xsd:restriction base="xsd:string">
                <xsd:maxLength value="1000"/>
             </xsd:restriction>
          </xsd:simpleType>
       </xsd:attribute>
    </xsd:attributeGroup>

    <xsd:attributeGroup name="attr.structure.req">
       <xsd:attribute name="structure" use="optional" default="hierarchical">
          <xsd:simpleType>
             <xsd:restriction base="xsd:string">
                <xsd:maxLength value="200"/>
             </xsd:restriction>
          </xsd:simpleType>
       </xsd:attribute>
    </xsd:attributeGroup>

    <xsd:attributeGroup name="attr.version">
       <xsd:attribute name="version" use="optional">
          <xsd:simpleType>
             <xsd:restriction base="xsd:string">
                <xsd:maxLength value="20"/>
             </xsd:restriction>
          </xsd:simpleType>
       </xsd:attribute>
    </xsd:attributeGroup>

    <xsd:annotation>
        <xsd:documentation>element groups</xsd:documentation>
    </xsd:annotation>

    <xsd:group name="grp.any">
       <xsd:annotation>
          <xsd:documentation>Any namespaced element from any namespace may be included within an "any" element.  The namespace for the imported element must be defined in the instance, and the schema must be imported.  </xsd:documentation>
       </xsd:annotation>
       <xsd:sequence>
          <xsd:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
       </xsd:sequence>
    </xsd:group>

    <xsd:element name="dependency" type="dependencyType"/>
    <xsd:element name="file" type="fileType"/>
    <xsd:element name="item" type="itemType"/>
    <xsd:element name="manifest" type="manifestType"/>
    <xsd:element name="metadata" type="metadataType"/>
    <xsd:element name="organization" type="organizationType"/>
    <xsd:element name="organizations" type="organizationsType"/>
    <xsd:element name="resource" type="resourceType"/>
    <xsd:element name="resources" type="resourcesType"/>
    <xsd:element name="schema" type="schemaType"/>
    <xsd:element name="schemaversion" type="schemaversionType"/>
    <xsd:element name="title" type="titleType"/>

    <xsd:complexType name="dependencyType">
       <xsd:sequence>
          <xsd:group ref="grp.any"/>
       </xsd:sequence>
       <xsd:attributeGroup ref="attr.identifierref.req"/>
       <xsd:anyAttribute namespace="##other" processContents="strict"/>
    </xsd:complexType>

    <xsd:complexType name="fileType">
       <xsd:sequence>
          <xsd:element ref="metadata" minOccurs="0"/>
          <xsd:group ref="grp.any"/>
       </xsd:sequence>
       <xsd:attributeGroup ref="attr.href.req"/>
       <xsd:anyAttribute namespace="##other" processContents="strict"/>
    </xsd:complexType>

    <xsd:complexType name="itemType">
       <xsd:sequence>
          <xsd:element ref="title" minOccurs="0"/>
          <xsd:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element ref="metadata" minOccurs="0"/>
          <xsd:group ref="grp.any"/>
       </xsd:sequence>
       <xsd:attributeGroup ref="attr.identifier.req"/>
       <xsd:attributeGroup ref="attr.identifierref"/>
       <xsd:attributeGroup ref="attr.isvisible"/>
       <xsd:attributeGroup ref="attr.parameters"/>
       <xsd:anyAttribute namespace="##other" processContents="strict"/>
    </xsd:complexType>

    <xsd:complexType name="manifestType">
       <xsd:sequence>
          <xsd:element ref="metadata" minOccurs="0"/>
          <xsd:element ref="organizations"/>
          <xsd:element ref="resources"/>
          <xsd:element ref="manifest" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:group ref="grp.any"/>
       </xsd:sequence>
       <xsd:attributeGroup ref="attr.identifier.req"/>
       <xsd:attributeGroup ref="attr.version"/>
       <xsd:attribute ref="xml:base"/>
       <xsd:anyAttribute namespace="##other" processContents="strict"/>
    </xsd:complexType>

    <xsd:complexType name="metadataType">
       <xsd:sequence>
          <xsd:element ref="schema" minOccurs="0"/>
          <xsd:element ref="schemaversion" minOccurs="0"/>
          <xsd:group ref="grp.any"/>
       </xsd:sequence>
    </xsd:complexType>

    <xsd:complexType name="organizationsType">
       <xsd:sequence>
          <xsd:element ref="organization" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:group ref="grp.any"/>
       </xsd:sequence>
       <xsd:attributeGroup ref="attr.default"/>
       <xsd:anyAttribute namespace="##other" processContents="strict"/>
    </xsd:complexType>

    <xsd:complexType name="organizationType">
       <xsd:sequence>
          <xsd:element ref="title" minOccurs="0"/>
          <xsd:element ref="item" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element ref="metadata" minOccurs="0"/>
          <xsd:group ref="grp.any"/>
       </xsd:sequence>
       <xsd:attributeGroup ref="attr.identifier.req"/>
       <xsd:attributeGroup ref="attr.structure.req"/>
       <xsd:anyAttribute namespace="##other" processContents="strict"/>
    </xsd:complexType>

    <xsd:complexType name="resourcesType">
       <xsd:sequence>
           <xsd:element ref="resource" minOccurs="0" maxOccurs="unbounded"/>
           <xsd:group ref="grp.any"/>
       </xsd:sequence>
       <xsd:attributeGroup ref="attr.base"/>
       <xsd:anyAttribute namespace="##other" processContents="strict"/>
    </xsd:complexType>

    <xsd:complexType name="resourceType">
       <xsd:sequence>
          <xsd:element ref="metadata" minOccurs="0"/>
          <xsd:element ref="file" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element ref="dependency" minOccurs="0" maxOccurs="unbounded"/>
          <xsd:group ref="grp.any"/>
       </xsd:sequence>
       <xsd:attributeGroup ref="attr.identifier.req"/>
       <xsd:attributeGroup ref="attr.resourcetype.req"/>
       <xsd:attributeGroup ref="attr.base"/>
       <xsd:attributeGroup ref="attr.href"/>
       <xsd:anyAttribute namespace="##other" processContents="strict"/>
    </xsd:complexType>

    <xsd:simpleType name="schemaType">
       <xsd:restriction base="xsd:string">
          <xsd:maxLength value="100"/>
       </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="schemaversionType">
       <xsd:restriction base="xsd:string">
          <xsd:maxLength value="20"/>
       </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="titleType">
       <xsd:restriction base="xsd:string">
          <xsd:maxLength value="200"/>
       </xsd:restriction>
    </xsd:simpleType>

 </xsd:schema>
 
See Also:
  • Field Details

    • NAMESPACE_URI

      public static final String NAMESPACE_URI
      The namespace URI for the SCORM 1.2 manifest, as defined in the IMS Content Packaging specification.
      See Also:
  • Constructor Details

    • Scorm12Manifest

      public Scorm12Manifest()
  • Method Details

    • getTitle

      public String getTitle()
      Description copied from interface: PackageManifest
      The title of the package, which is a human-readable name.
      Specified by:
      getTitle in interface PackageManifest
      Returns:
      the title of the package
    • getDescription

      public String getDescription()
      Description copied from interface: PackageManifest
      The description of the package, which provides additional information about it.
      Specified by:
      getDescription in interface PackageManifest
      Returns:
      the description of the package
    • getLaunchUrl

      public String getLaunchUrl()
      Description copied from interface: PackageManifest
      The launch URL of the package, which is the URL to start the package.
      Specified by:
      getLaunchUrl in interface PackageManifest
      Returns:
      the launch URL of the package
    • getDuration

      public Duration getDuration()
      Description copied from interface: PackageManifest
      The duration of the package, which indicates how long the package is expected to take.
      Specified by:
      getDuration in interface PackageManifest
      Returns:
      the duration of the package