NAME
TBX::XCS - Extract data from an XCS file
VERSION
version 0.03
SYNOPSIS
use TBX::XCS;
my $xcs = TBX::XCS->new(file=>'/path/to/file.xcs');
my $languages = $xcs->get_languages();
my $ref_objects = $xcs->get_ref_objects();
my $data_cats = $xcs->get_data_cats();
DESCRIPTION
This module allows you to extract and edit the information contained in an XCS file. In the future, it may also be able to serialize the contained information into a new XCS file.
METHODS
new
Creates a new TBX::XCS object.
parse
Takes a named argument, either file
for a filename or string
for a string pointer.
This method parses the XCS content given by the specified file or string pointer. The contents of the XCS can then be accessed via get_ref_objects
, get_languages
, and get_data_cats
.
get_languages
Returns a pointer to a hash containing the languages allowed in the langSet xml:lang
attribute, as specified by the XCS languages
element. The keys are abbreviations, values the full names of the languages.
get_ref_objects
Returns a pointer to a hash containing the reference objects specified by the XCS. For example, the XML below:
<refObjectDef>
<refObjectType>Foo</refObjectType>
<itemSpecSet type="validItemType">
<itemSpec type="validItemType">data</itemSpec>
<itemSpec type="validItemType">name</itemSpec>
</itemSpecSet>
</refObjectDef>
</refObjectDefSet>
will yield the following structure:
{ Foo => ['data', 'name'] },
get_data_cats
Returns a hash pointer containing the data category specifications. For example, the XML below:
<datCatSet>
<descripSpec name="context" datcatId="ISO12620A-0503">
<contents/>
<levels>term</levels>
</descripSpec>
<descripSpec name="descripFoo" datcatId="">
<contents/>
<levels/>
</descripSpec>
<termNoteSpec name="animacy" datcatId="ISO12620A-020204">
<contents datatype="picklist" forTermComp="yes">animate inanimate
otherAnimacy</contents>
</termNoteSpec>
<xrefSpec name="xrefFoo" datcatId="">
<contents targetType="external"/>
</xrefSpec>
</datCatSet>
would yield the data structure below:
{
'descrip' =>
[
{
'datatype' => 'noteText',
'datCatId' => 'ISO12620A-0503',
'levels' => ['term'],
'name' => 'context'
},
{
'datatype' => 'noteText',
'levels' => ['langSet', 'termEntry', 'term'],
'name' => 'descripFoo'
}
],
'termNote' => [{
'choices' => ['animate', 'inanimate', 'otherAnimacy'],
'datatype' => 'picklist',
'datCatId' => 'ISO12620A-020204',
'forTermComp' => 'yes',
'name' => 'animacy'
}],
'xref' => [{
'datatype' => 'plainText',
'name' => 'xrefFoo',
'targetType' => 'external'
}]
};
get_title
Returns the title of the document, as contained in the title element.
get_name
Returns the name of the XCS file, as found in the TBXXCS element.
FUTURE WORK
extract
datCatDoc
extract
refObjectDefSet
Setter methods for XCS data
Print an XCS file
SEE ALSO
The XCS and the TBX specification can be found on GitHub.
AUTHOR
Nathan Glenn <garfieldnate@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Alan K. Melby.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.