Have information of multiple XSLT files on an array for importing
"alien" formatted XML dive log files. Adding support for new XSLT
requires updating the array and adding the XSLT file (provided the
format can be identified by root element of the XML).
Signed-off-by: Miika Turkia <miika.turkia@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+static struct xslt_files {
+ const char *root;
+ const char *file;
+} xslt_files[] = {
+ { "JDiveLog", "jdivelog2subsurface.xslt" },
+ { NULL, }
+};
+
xmlDoc *test_xslt_transforms(xmlDoc *doc)
{
xmlDoc *test_xslt_transforms(xmlDoc *doc)
{
+ struct xslt_files *info = xslt_files;
xmlDoc *transformed;
xsltStylesheetPtr xslt = NULL;
xmlNode *root_element = xmlDocGetRootElement(doc);
xmlDoc *transformed;
xsltStylesheetPtr xslt = NULL;
xmlNode *root_element = xmlDocGetRootElement(doc);
- if (strcasecmp(root_element->name, "JDiveLog") == 0) {
+
+ while ((info->root) && (strcasecmp(root_element->name, info->root) != 0)) {
+ info++;
+ }
+
+ if (info->root) {
xmlSubstituteEntitiesDefault(1);
xmlSubstituteEntitiesDefault(1);
- xslt = get_stylesheet("jdivelog2subsurface.xslt");
+ xslt = get_stylesheet(info->file);
if (xslt == NULL)
return doc;
transformed = xsltApplyStylesheet(xslt, doc, NULL);
if (xslt == NULL)
return doc;
transformed = xsltApplyStylesheet(xslt, doc, NULL);