X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=parse-xml.c;h=ddf93a4b1ad58ff45fdc4790dfe5d5ad005f82dd;hb=350462949d2dc205355e5c94ccaacf83a0775257;hp=5eabc353c17c47e4e68db5e0db2ded912f2b1437;hpb=4b735521e2561fe6d03f9f94122fbdc58f48e4a5;p=ext%2Fsubsurface.git diff --git a/parse-xml.c b/parse-xml.c index 5eabc35..ddf93a4 100644 --- a/parse-xml.c +++ b/parse-xml.c @@ -7,6 +7,9 @@ #include #include #include +#ifdef XSLT +#include +#endif #include "dive.h" #include "uemis.h" @@ -1466,6 +1469,9 @@ void parse_xml_file(const char *filename, GError **error) set_filename(filename); reset_all(); dive_start(); +#ifdef XSLT + doc = test_xslt_transforms(doc); +#endif traverse(xmlDocGetRootElement(doc)); dive_end(); xmlFreeDoc(doc); @@ -1476,3 +1482,23 @@ void parse_xml_init(void) { LIBXML_TEST_VERSION } + +#ifdef XSLT +xmlDoc *test_xslt_transforms(xmlDoc *doc) +{ + xmlDoc *transformed; + xsltStylesheetPtr xslt = NULL; + xmlNode *root_element = xmlDocGetRootElement(doc); + if (strcasecmp(root_element->name, "JDiveLog") == 0) { + xmlSubstituteEntitiesDefault(1); + xslt = xsltParseStylesheetFile(XSLT G_DIR_SEPARATOR_S "jdivelog2subsurface.xslt"); + if (xslt == NULL) + return doc; + transformed = xsltApplyStylesheet(xslt, doc, NULL); + xmlFreeDoc(doc); + xsltFreeStylesheet(xslt); + return transformed; + } + return doc; +} +#endif