{ "cells": [ { "cell_type": "markdown", "id": "db95113b-4dc7-4b64-96f9-1f14895ac228", "metadata": {}, "source": [ "# Compare two XML files (Nestle1904LFT)" ] }, { "cell_type": "markdown", "id": "318a0e17-7538-4b54-8001-c129e29fb27d", "metadata": {}, "source": [ "Jupiter Notebook intended to quicly compare the content and structure of two versions of the input XML files." ] }, { "cell_type": "code", "execution_count": 1, "id": "2b34f28b-8848-42ef-a97b-5be863291ac9", "metadata": {}, "outputs": [], "source": [ "# Following variables should contain the relative path and name of the two files to compare\n", "book=\"26-jude.xml\"\n", "version1=\"20230123\"\n", "version2=\"20230628\"\n", "file1_path = \"xml/\"+version1+\"/\"+book\n", "file2_path = \"xml/\"+version2+\"/\"+book\n", "# Set to True if detailed reporting is required\n", "details = True" ] }, { "cell_type": "code", "execution_count": 2, "id": "4dd89b74-80bc-40f4-bfc4-709694acec6a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Comparing file xml/20230123/26-jude.xml with xml/20230628/26-jude.xml \n", "\n", "Result:The XML files are different.\n", "\n", "Details:\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'rule': 'Np-Appos', 'role': 's'} != {'type': 'apposition', 'class': 'np', 'rule': 'Np-Appos', 'role': 's'}\n", "\n", "\n", "Attribute: role is present in the first file but not in the second file\n", "Attribute: junction is present in the second file but not in the first file\n", "Details on Tag/Attributes: wg != wg or {'role': 'apposition', 'rule': 'NpaNp'} != {'junction': 'apposition', 'rule': 'NpaNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'ofNPNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'ofNPNP'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'rule': 'Np-Appos'} != {'type': 'apposition', 'class': 'np', 'rule': 'Np-Appos'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'io', 'type': 'modifier-clause-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'io'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdjpNp', 'type': 'modifier-clause-scope'} != {'class': 'np', 'rule': 'AdjpNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'rule': 'Np-Appos'} != {'type': 'apposition', 'class': 'np', 'rule': 'Np-Appos'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'rule': 'Np-Appos', 'role': 'adv'} != {'type': 'apposition', 'class': 'np', 'rule': 'Np-Appos', 'role': 'adv'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'All-NP', 'role': 'o', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'All-NP', 'role': 'o'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdjpNp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'AdjpNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'ofNPNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'ofNPNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'adv', 'type': 'modifier-clause-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdjpNp', 'type': 'modifier-clause-scope'} != {'class': 'np', 'rule': 'AdjpNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetAdj', 'role': 'io', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetAdj', 'role': 'io'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'rule': 'Conj-CL'} != {'rule': 'Conj-CL'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'rule': 'Np-Appos', 'role': 's'} != {'type': 'apposition', 'class': 'np', 'rule': 'Np-Appos', 'role': 's'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'rule': 'Np-Appos'} != {'type': 'apposition', 'class': 'np', 'rule': 'Np-Appos'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdjpNp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'AdjpNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Attribute: role is present in the first file but not in the second file\n", "Attribute: junction is present in the second file but not in the first file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'role': 'apposition', 'articular': 'true', 'rule': 'DetCL'} != {'junction': 'apposition', 'articular': 'true', 'rule': 'DetCL'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'Demo-NP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'Demo-NP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'o', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'o'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'ofNPNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'ofNPNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'o', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'o'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdjpNp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'AdjpNp'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'rule': 'Np-Appos'} != {'type': 'apposition', 'class': 'np', 'rule': 'Np-Appos'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: role is present in the first file but not in the second file\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: junction is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'role': 'apposition', 'appositioncontainer': 'true', 'rule': 'Np-Appos'} != {'type': 'apposition', 'class': 'np', 'junction': 'apposition', 'rule': 'Np-Appos'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'rule': 'Conj-CL'} != {'rule': 'Conj-CL'}\n", "\n", "\n", "Attribute: class is present in the second file but not in the first file\n", "Details on Tag/Attributes: wg != wg or {'Rule': 'ClCl', 'nodeId': '650010050080600'} != {'Rule': 'ClCl', 'class': 'cl', 'nodeId': '650010050080600'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetAdj', 'role': 'adv', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetAdj', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'articular': 'true', 'rule': 'DetCL', 'role': 'o'} != {'articular': 'true', 'rule': 'DetCL', 'role': 'o'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'rule': 'Np-Appos', 'role': 'o'} != {'type': 'apposition', 'class': 'np', 'rule': 'Np-Appos', 'role': 'o'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Attribute: role is present in the first file but not in the second file\n", "Attribute: junction is present in the second file but not in the first file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'role': 'apposition', 'articular': 'true', 'rule': 'DetCL'} != {'junction': 'apposition', 'articular': 'true', 'rule': 'DetCL'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'o', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'o'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'ofNPNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'ofNPNP'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'o', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'o'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdjpNp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'AdjpNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdjpNp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'AdjpNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'role': 'adv', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NpAdjp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Attribute: role - Value in first file: adv, Value in second file: o\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'rule': 'sub-CL', 'role': 'adv'} != {'rule': 'sub-CL', 'role': 'o'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'PpNp2Np', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'PpNp2Np'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp'} != {'class': 'pp', 'rule': 'PrepNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'o', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'o'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdjpNp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'AdjpNp'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NpAdjp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'ofNPNP', 'role': 'o', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'ofNPNP', 'role': 'o'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NpAdjp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'rule': 'Conj-CL'} != {'rule': 'Conj-CL'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdvpNp', 'role': 's', 'type': 'modifier-clause-scope'} != {'class': 'np', 'rule': 'AdvpNp', 'role': 's'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'Demo-NP', 'type': 'modifier-clause-scope'} != {'class': 'np', 'rule': 'Demo-NP'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'rule': 'Conj-CL'} != {'rule': 'Conj-CL'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Attribute: rule is present in the first file but not in the second file\n", "Attribute: Rule is present in the second file but not in the first file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: nodeId is present in the second file but not in the first file\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'rule': 'ClCl2'} != {'Rule': 'ClCl2', 'class': 'cl', 'nodeId': '650010090060230'}\n", "Number of Children: 2 != 5\n", "\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'rule': 'Conj-CL'} != {'rule': 'Conj-CL'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'articular': 'true', 'rule': 'sub-CL', 'junction': 'subordinate', 'role': 'adv'} != {'articular': 'true', 'rule': 'sub-CL', 'junction': 'subordinate', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 's', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 's'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdjpNp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'AdjpNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Attribute: rule is present in the first file but not in the second file\n", "Attribute: Rule is present in the second file but not in the first file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: nodeId is present in the second file but not in the first file\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'rule': 'ClCl'} != {'Rule': 'ClCl', 'class': 'cl', 'nodeId': '650010110010210'}\n", "Number of Children: 2 != 3\n", "\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'p', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'p'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'PpNp2Np', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'PpNp2Np'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'articular': 'true', 'rule': 'PrepNp'} != {'class': 'pp', 'articular': 'true', 'rule': 'PrepNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'type': 'modifier-clause-scope'} != {'class': 'np', 'rule': 'NpAdjp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NpAdjp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'type': 'modifier-clause-scope'} != {'class': 'np', 'rule': 'NpAdjp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'type': 'modifier-clause-scope'} != {'class': 'np', 'rule': 'NpAdjp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NpAdjp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NpAdjp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'type': 'modifier-clause-scope'} != {'class': 'np', 'rule': 'NpAdjp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NpAdjp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'o', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'o'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'ofNPNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'ofNPNP'}\n", "\n", "\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: apposition-group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'apposition-group', 'rule': 'NP-CL'} != {'class': 'np', 'type': 'apposition', 'rule': 'NP-CL'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'rule': 'Np-Appos'} != {'type': 'apposition', 'class': 'np', 'rule': 'Np-Appos'}\n", "\n", "\n", "Attribute: role is present in the first file but not in the second file\n", "Attribute: junction is present in the second file but not in the first file\n", "Details on Tag/Attributes: wg != wg or {'class': 'cl', 'clauseType': 'nominalized', 'rule': 'IO-S-ADV-V', 'role': 'apposition'} != {'class': 'cl', 'clauseType': 'nominalized', 'rule': 'IO-S-ADV-V', 'junction': 'apposition'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 's', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 's'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'rule': 'Conj-CL'} != {'rule': 'Conj-CL'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdvpNp', 'role': 'io', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'AdvpNp', 'role': 'io'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'rule': 'Np-Appos', 'role': 's'} != {'type': 'apposition', 'class': 'np', 'rule': 'Np-Appos', 'role': 's'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpPp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NpPp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp'} != {'class': 'pp', 'rule': 'PrepNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdjpNp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'AdjpNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'All-NP', 'role': 'o', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'All-NP', 'role': 'o'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetAdj', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetAdj'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'articular': 'true', 'rule': 'PrepNp'} != {'class': 'pp', 'articular': 'true', 'rule': 'PrepNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'All-NP', 'type': 'modifier-clause-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'All-NP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-clause-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: apposition-group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'apposition-group', 'rule': 'NP-CL'} != {'class': 'np', 'type': 'apposition', 'rule': 'NP-CL'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: role is present in the first file but not in the second file\n", "Attribute: junction is present in the second file but not in the first file\n", "Details on Tag/Attributes: wg != wg or {'class': 'cl', 'clauseType': 'nominalized', 'rule': 'ADV-V', 'role': 'apposition'} != {'class': 'cl', 'clauseType': 'nominalized', 'rule': 'ADV-V', 'junction': 'apposition'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'articular': 'true', 'rule': 'PrepNp'} != {'class': 'pp', 'articular': 'true', 'rule': 'PrepNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'All-NP', 'type': 'modifier-clause-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'All-NP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-clause-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: apposition-group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'apposition-group', 'rule': 'NP-CL'} != {'class': 'np', 'type': 'apposition', 'rule': 'NP-CL'}\n", "\n", "\n", "Attribute: role is present in the first file but not in the second file\n", "Attribute: junction is present in the second file but not in the first file\n", "Details on Tag/Attributes: wg != wg or {'class': 'cl', 'clauseType': 'nominalized', 'rule': 'O-V-ADV-S', 'role': 'apposition'} != {'class': 'cl', 'clauseType': 'nominalized', 'rule': 'O-V-ADV-S', 'junction': 'apposition'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'role': 's', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NpAdjp', 'role': 's'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'role': 'p', 'type': 'modifier-clause-scope'} != {'class': 'np', 'rule': 'NpAdjp', 'role': 'p'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NpAdjp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 's', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 's'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'NP-Prep', 'role': 'adv'} != {'class': 'pp', 'rule': 'NP-Prep', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'rule': 'Conj-CL'} != {'rule': 'Conj-CL'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'articular': 'true', 'rule': 'Np-Appos', 'role': 'o'} != {'type': 'apposition', 'class': 'np', 'articular': 'true', 'rule': 'Np-Appos', 'role': 'o'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Attribute: role is present in the first file but not in the second file\n", "Attribute: junction is present in the second file but not in the first file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'role': 'apposition', 'articular': 'true', 'rule': 'DetCL'} != {'junction': 'apposition', 'articular': 'true', 'rule': 'DetCL'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'articular': 'true', 'rule': 'Np-Appos'} != {'type': 'apposition', 'class': 'np', 'articular': 'true', 'rule': 'Np-Appos'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: role is present in the first file but not in the second file\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: junction is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'role': 'apposition', 'appositioncontainer': 'true', 'rule': 'Np-Appos'} != {'type': 'apposition', 'class': 'np', 'junction': 'apposition', 'rule': 'Np-Appos'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'rule': 'that-VP'} != {'rule': 'that-VP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'p'} != {'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'p'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'AdjpNp', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'AdjpNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'role': 's', 'type': 'modifier-clause-scope'} != {'class': 'np', 'rule': 'NpAdjp', 'role': 's'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'ofNPNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'ofNPNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'articular': 'true', 'rule': 'DetCL'} != {'articular': 'true', 'rule': 'DetCL'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'rule': 'Conj-CL'} != {'rule': 'Conj-CL'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'adv', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdjpNp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'AdjpNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'ofNPNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'ofNPNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NpAdjp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'o', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'role': 'o'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'articular': 'true', 'rule': 'Np-Appos'} != {'type': 'apposition', 'class': 'np', 'articular': 'true', 'rule': 'Np-Appos'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: role is present in the first file but not in the second file\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: junction is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'role': 'apposition', 'appositioncontainer': 'true', 'rule': 'Np-Appos'} != {'type': 'apposition', 'class': 'np', 'junction': 'apposition', 'rule': 'Np-Appos'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NpAdjp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'rule': 'Conj-CL'} != {'rule': 'Conj-CL'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NpAdjp', 'role': 'o', 'type': 'modifier-clause-scope'} != {'class': 'np', 'rule': 'NpAdjp', 'role': 'o'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'AdvpNp', 'role': 'o', 'type': 'modifier-clause-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'AdvpNp', 'role': 'o'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-clause-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdjpNp', 'type': 'modifier-clause-scope'} != {'class': 'np', 'rule': 'AdjpNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-clause-scope', 'rule': 'Conj-CL'} != {'rule': 'Conj-CL'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'articular': 'true', 'rule': 'Np-Appos', 'role': 'io'} != {'type': 'apposition', 'class': 'np', 'articular': 'true', 'rule': 'Np-Appos', 'role': 'io'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-clause-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'articular': 'true', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: role is present in the first file but not in the second file\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: junction is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'role': 'apposition', 'appositioncontainer': 'true', 'rule': 'Np-Appos'} != {'type': 'apposition', 'class': 'np', 'junction': 'apposition', 'rule': 'Np-Appos'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'AdjpNp', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'AdjpNp'}\n", "\n", "\n", "Attribute: role is present in the first file but not in the second file\n", "Attribute: type is present in the first file but not in the second file\n", "Attribute: junction is present in the second file but not in the first file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'role': 'apposition', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'junction': 'apposition', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'} != {'class': 'pp', 'rule': 'PrepNp', 'role': 'adv'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'rule': 'Np-Appos'} != {'type': 'apposition', 'class': 'np', 'rule': 'Np-Appos'}\n", "\n", "\n", "Attribute: appositioncontainer is present in the first file but not in the second file\n", "Attribute: class is present in the second file but not in the first file\n", "Attribute: type - Value in first file: group, Value in second file: apposition\n", "Details on Tag/Attributes: wg != wg or {'type': 'group', 'appositioncontainer': 'true', 'rule': 'Np-Appos'} != {'type': 'apposition', 'class': 'np', 'rule': 'Np-Appos'}\n", "\n", "\n", "Attribute: role is present in the first file but not in the second file\n", "Attribute: type is present in the first file but not in the second file\n", "Attribute: junction is present in the second file but not in the first file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'role': 'apposition', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'junction': 'apposition', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'rule': 'NPofNP', 'type': 'modifier-scope'} != {'class': 'np', 'rule': 'NPofNP'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'articular': 'true', 'rule': 'PrepNp'} != {'class': 'pp', 'articular': 'true', 'rule': 'PrepNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'All-NP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'All-NP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type - Value in first file: conjuncted-wg, Value in second file: group\n", "Details on Tag/Attributes: wg != wg or {'type': 'conjuncted-wg'} != {'type': 'group'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'type': 'wrapper-scope', 'class': 'pp', 'articular': 'true', 'rule': 'PrepNp'} != {'class': 'pp', 'articular': 'true', 'rule': 'PrepNp'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'All-NP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'All-NP'}\n", "\n", "\n", "Attribute: type is present in the first file but not in the second file\n", "Details on Tag/Attributes: wg != wg or {'class': 'np', 'articular': 'true', 'rule': 'DetNP', 'type': 'modifier-scope'} != {'class': 'np', 'articular': 'true', 'rule': 'DetNP'}\n" ] } ], "source": [ "import xml.etree.ElementTree as ET\n", "\n", "def normalize_text(text):\n", " return ' '.join(text.strip().split())\n", "\n", "def compare_xml_files(file1, file2, details):\n", " # Parse the XML files\n", " tree1 = ET.parse(file1)\n", " tree2 = ET.parse(file2)\n", "\n", " # Get the root elements of both trees\n", " root1 = tree1.getroot()\n", " root2 = tree2.getroot()\n", "\n", " # Compare the two root elements and their descendants recursively\n", " differences=compare_elements(root1, root2, details)\n", "\n", " if not differences:\n", " print(\"The XML files are identical.\")\n", " else:\n", " print(\"The XML files are different.\")\n", " if details:\n", " print(\"\\nDetails:\")\n", " for diff in differences:\n", " print(diff)\n", "\n", "def compare_elements(elem1, elem2, details):\n", " differences = []\n", " ReportTag=ReportElement=ReportChildren=ReportChildDiff=True\n", " \n", " # Compare element tags and attributes\n", " if elem1.tag != elem2.tag or elem1.attrib != elem2.attrib:\n", " if details:\n", " differences.append(f\"\\n\")\n", " for attr in elem1.attrib:\n", " if attr not in elem2.attrib:\n", " differences.append(f\"Attribute: {attr} is present in the first file but not in the second file\")\n", "\n", " for attr in elem2.attrib:\n", " if attr not in elem1.attrib:\n", " differences.append(f\"Attribute: {attr} is present in the second file but not in the first file\")\n", " \n", " for attr in elem1.attrib:\n", " if attr in elem2.attrib and elem1.attrib[attr] != elem2.attrib[attr]:\n", " differences.append(f\"Attribute: {attr} - Value in first file: {elem1.attrib[attr]}, Value in second file: {elem2.attrib[attr]}\")\n", " \n", " differences.append(f\"Details on Tag/Attributes: {elem1.tag} != {elem2.tag} or {elem1.attrib} != {elem2.attrib}\")\n", "\n", " else:\n", " if ReportTag==True:\n", " differences.append(\"Differences in Tag/Attributes found\")\n", " ReportTag=False\n", "\n", " # Normalize and compare element text\n", " text1 = normalize_text(elem1.text)\n", " text2 = normalize_text(elem2.text)\n", " \n", " if text1 != text2:\n", " if details:\n", " differences.append(f\"Text: {elem1.text} != {elem2.text}\\n\")\n", " else:\n", " if ReportElement==True:\n", " differences.append(\"Differences in element Text found\")\n", " ReportElement=False\n", "\n", " # Compare element children recursively\n", " children1 = list(elem1)\n", " children2 = list(elem2)\n", " if len(children1) != len(children2):\n", " if details:\n", " differences.append(f\"Number of Children: {len(children1)} != {len(children2)}\\n\")\n", " else:\n", " if ReportChildren==True:\n", " differences.append(\"Differences in number of children\")\n", " ReportChildren=False \n", " else:\n", " for child1, child2 in zip(children1, children2):\n", " child_diff = compare_elements(child1, child2, details)\n", " differences.extend(child_diff)\n", " \n", " return differences\n", "\n", "# this is the main part\n", "print (\"Comparing file \",file1_path,\" with \",file2_path,\"\\n\\nResult:\",end=\"\")\n", "compare_xml_files(file1_path, file2_path, details)" ] }, { "cell_type": "code", "execution_count": null, "id": "f6638381-0020-4157-be97-f45f5ec5ddc7", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.12" } }, "nbformat": 4, "nbformat_minor": 5 }