@ -11,6 +11,19 @@ from kedro.framework.session import KedroSession
logger = logging . getLogger ( __name__ )
logger = logging . getLogger ( __name__ )
with KedroSession . create ( ) as session :
context = session . load_context ( )
xlststylesheet = context . params [ ' xsltstylesheet ' ]
#xlststylesheet = "templates/xsl/actes_princiers.xsl"
# FIXME make this function a classmethod ?
def _xslt ( xsltstylesheet ) :
" performs XML transformation on each dataset "
xslt_doc = etree . parse ( xlststylesheet )
xslt_transformer = etree . XSLT ( xslt_doc )
return xslt_transformer
xslt_transformer = _xslt ( xlststylesheet )
class XMLDataSet :
class XMLDataSet :
" Abstract base class for an XML dataset loader "
" Abstract base class for an XML dataset loader "
@ -18,28 +31,11 @@ class XMLDataSet:
def __init__ ( self , filepath : str ) - > None :
def __init__ ( self , filepath : str ) - > None :
self . _filepath = filepath
self . _filepath = filepath
# def _load(self):
# "kedro's API-like loader"
# pass
#
# def _save(self, data:str) -> None:
# "kedro's API-like saver"
# pass
@property
@property
def filepath ( self ) - > str :
def filepath ( self ) - > str :
" xml file ' s filename getters "
" xml file ' s filename getters "
return self . _filepath
return self . _filepath
# FIXME à supprimer MAIS alors il faut rapatrier transform()...
def get_source_doc ( self ) - > str :
" XML source_doc (xml as a string) getter "
if hasattr ( self , ' source_doc ' ) :
return self . source_doc
else :
attr_error_msg = str ( self . _describe ( ) )
raise AttributeError ( f " XMLDataSet bject { attr_error_msg } has no attribute named : ' source_doc ' " )
def _describe ( self ) - > Dict [ str , Any ] :
def _describe ( self ) - > Dict [ str , Any ] :
" kedro ' s API-like repr() "
" kedro ' s API-like repr() "
return dict ( filepath = self . _filepath )
return dict ( filepath = self . _filepath )
@ -63,7 +59,9 @@ class EtreeXMLDataSet(XMLDataSet):
" kedro ' s API-like saver "
" kedro ' s API-like saver "
with open ( self . _filepath , ' w ' ) as fhandle :
with open ( self . _filepath , ' w ' ) as fhandle :
fhandle . write ( data )
fhandle . write ( data )
def transform ( self ) :
return str ( xslt_transformer ( self . source_doc ) )
class XMLDataSetCollection ( AbstractDataSet ) :
class XMLDataSetCollection ( AbstractDataSet ) :
""" Stores instances of ``XMLDataSet``
""" Stores instances of ``XMLDataSet``