Project

General

Profile

« Previous | Next » 

Revision 4229

xml_func.py: simplify(): Added pruning optimization that removes empty children. Empty children are created when some mappings don't apply to the current datasource.

View differences:

inputs/XAL/specimens/test.xml.ref
383 383
                    </determinationdate>
384 384
                </taxondetermination>
385 385
                <verbatimcollectorname>$Collector</verbatimcollectorname>
386
                <voucher><specimenreplicate_id><specimenreplicate><catalognumber_dwc/></specimenreplicate></specimenreplicate_id></voucher>
387 386
            </taxonoccurrence>
388 387
            <waterdepth>
389 388
                <_avg>
inputs/NY/specimens/test.xml.ref
415 415
                    </determinationdate>
416 416
                </taxondetermination>
417 417
                <verbatimcollectorname>$Collector</verbatimcollectorname>
418
                <voucher><specimenreplicate_id><specimenreplicate><catalognumber_dwc/></specimenreplicate></specimenreplicate_id></voucher>
419 418
            </taxonoccurrence>
420 419
            <waterdepth>
421 420
                <_avg>
inputs/ACAD/specimens/test.xml.ref
181 181
                    <determinationdate><_date><date><_dateRangeStart><value>$dateIdentified</value></_dateRangeStart></date></_date></determinationdate>
182 182
                </taxondetermination>
183 183
                <verbatimcollectorname>$recordedBy</verbatimcollectorname>
184
                <voucher><specimenreplicate_id><specimenreplicate><catalognumber_dwc/></specimenreplicate></specimenreplicate_id></voucher>
185 184
            </taxonoccurrence>
186 185
        </locationevent>
187 186
        <locationnarrative>
inputs/U/specimens/test.xml.ref
229 229
                        <2>$Addcoll</2>
230 230
                    </_merge>
231 231
                </verbatimcollectorname>
232
                <voucher><specimenreplicate_id><specimenreplicate><catalognumber_dwc/></specimenreplicate></specimenreplicate_id></voucher>
233 232
            </taxonoccurrence>
234 233
        </locationevent>
235 234
        <locationnarrative>
inputs/ARIZ/specimens/test.xml.ref
458 458
                    <taxonfit>$IdentificationModifier</taxonfit>
459 459
                </taxondetermination>
460 460
                <verbatimcollectorname>$Collector</verbatimcollectorname>
461
                <voucher><specimenreplicate_id><specimenreplicate><catalognumber_dwc/></specimenreplicate></specimenreplicate_id></voucher>
462 461
            </taxonoccurrence>
463 462
            <waterdepth>
464 463
                <_avg>
inputs/GBIF/specimens/test.xml.ref
222 222
                    </plantconcept_id>
223 223
                </taxondetermination>
224 224
                <verbatimcollectorname>$Collector</verbatimcollectorname>
225
                <voucher><specimenreplicate_id><specimenreplicate><catalognumber_dwc/></specimenreplicate></specimenreplicate_id></voucher>
226 225
            </taxonoccurrence>
227 226
        </locationevent>
228 227
        <locationnarrative>$Locality</locationnarrative>
inputs/NCU-NCSC/specimens/test.xml.ref
129 129
                        </plantconcept>
130 130
                    </plantconcept_id>
131 131
                </taxondetermination>
132
                <voucher><specimenreplicate_id><specimenreplicate><catalognumber_dwc/></specimenreplicate></specimenreplicate_id></voucher>
133 132
            </taxonoccurrence>
134 133
        </locationevent>
135 134
    </location>
inputs/SpeciesLink/specimens/test.xml.ref
695 695
                        <2>$dwc_terms_recordedBy</2>
696 696
                    </_alt>
697 697
                </verbatimcollectorname>
698
                <voucher><specimenreplicate_id><specimenreplicate><catalognumber_dwc/></specimenreplicate></specimenreplicate_id></voucher>
699 698
            </taxonoccurrence>
700 699
            <waterdepth>
701 700
                <_avg>
inputs/MO/specimens/test.xml.ref
332 332
                    </plantconcept_id>
333 333
                </taxondetermination>
334 334
                <verbatimcollectorname>$Collector</verbatimcollectorname>
335
                <voucher><specimenreplicate_id><specimenreplicate><catalognumber_dwc/></specimenreplicate></specimenreplicate_id></voucher>
336 335
            </taxonoccurrence>
337 336
        </locationevent>
338 337
        <locationnarrative>$Locality</locationnarrative>
inputs/QMOR/specimens/test.xml.ref
297 297
                    <taxonfit>$identificationQualifier</taxonfit>
298 298
                </taxondetermination>
299 299
                <verbatimcollectorname>$recordedBy</verbatimcollectorname>
300
                <voucher><specimenreplicate_id><specimenreplicate><catalognumber_dwc/></specimenreplicate></specimenreplicate_id></voucher>
301 300
            </taxonoccurrence>
302 301
        </locationevent>
303 302
        <locationnarrative>
lib/xml_func.py
98 98
            if is_agg_func or (is_if_no_cond and param == 'else'):
99 99
                xml_dom.replace(node, value)
100 100
            elif is_if_no_cond and param == 'then': xml_dom.remove(node)
101
    # Pruning optimizations
102
    else: # these should not run on functions because they would remove args
103
        # Remove empty children
104
        for child in xml_dom.NodeElemIter(node):
105
            if xml_dom.is_empty(child): xml_dom.remove(child)
101 106

  
102 107
def process(node, on_error=exc.reraise, is_rel_func=None, db=None):
103 108
    '''Evaluates the XML functions in an XML tree.

Also available in: Unified diff