
    tij
                    D    d Z ddlmZ ddlZddlmZ ddlmZ ddZd	dZ	y)
z8Optional XSD validation for generated C59 XML documents.    )annotationsN)Path)XmlPayloadValidationErrorc                 n    t        t        t              j                         j                  dz  dz        S )z?Return the conventional module-local path for the C59 XSD file.schemaszc59.xsd)strr   __file__resolveparent     5/backend/istat/xml_export/validation/xsd_validator.pyload_default_c59_xsd_pathr      s,     tH~%%'..:YFGGr   c                   | rt        |       j                         st        d      |rt        |      j                         st        d      t        |      j	                         j                         }|j                         st        d|       	 t        j                  d      }	 |j                  t        |            }|j                  |      }	 |j                  | j                  d            }|j!                  |      ry|j"                  D cg c]7  }t%        |d
d      j                         r|j&                  j                         9 }	}|	rdj)                  |	      nd}
t        d|
       # t        $ r}t        d      |d}~ww xY w# |j                  |j                  f$ r}t        d|       |d}~ww xY w# |j                  $ r}t        d	|       |d}~ww xY wc c}w )z<Validate C59 XML content against a provided XSD schema path.z*xml_content is required for XSD validationz'xsd_path is required for XSD validationzXSD schema file not found: z
lxml.etreez:C59 XSD validation requires the optional 'lxml' dependencyNzInvalid XSD schema: zutf-8zMalformed XML content: message z; z&XML does not conform to the XSD schemazC59 XML failed XSD validation: )r   stripr   r   
expanduserr
   exists	importlibimport_moduleModuleNotFoundErrorparse	XMLSchemaXMLSyntaxErrorXMLSchemaParseError
fromstringencodevalidate	error_loggetattrr   join)xml_contentxsd_pathschema_pathetreeexcschema_documentschemaxml_documenterrorerrorsdetails              r   validate_c59_xml_against_xsdr.      s    c+.446'(TUU3x=..0'(QRRx.++-557K'*Ek](STT''5O++c+&671R''(:(:7(CD |$ %%%E5)R(..0 	%  
 #)TYYv.VF
#&EfX$N
OO3  'H
	   %";";< O'*>se(DE3NO
  R'*A#(GHcQRsN   E6 )+F  G <G+6	F?FFG.F==GG(G##G()returnr   )r#   r   r$   r   r/   None)
__doc__
__future__r   r   pathlibr   istat.xml_export.exceptionsr   r   r.   r   r   r   <module>r5      s     > "   AH'Pr   