indexing description: "[ XML filter that extracts the attribute's values and generates a checksum over them. ]" date: "$Date$" revision: "$Revision$" class EM_XM_CHECKSUM_FILTER inherit XM_CALLBACKS_FILTER redefine on_start, on_finish, on_start_tag, on_attribute, on_end_tag end create make_null, set_next feature -- xml parsing on_start is do checksum := 0 if checksum_generator = Void then create checksum_generator end checksum_generator.reset Precursor end on_start_tag (a_namespace: STRING; a_prefix: STRING; a_local_part: STRING) is do if a_local_part.is_equal("checksum") then ignore_content := true end Precursor(a_namespace, a_prefix, a_local_part) end on_end_tag (a_namespace: STRING; a_prefix: STRING; a_local_part: STRING) is do ignore_content := false Precursor (a_namespace, a_prefix, a_local_part) end on_attribute (a_namespace: STRING; a_prefix: STRING; a_local_part: STRING; a_value: STRING) is do if not ignore_content then checksum_generator.append_string (a_value) end Precursor (a_namespace, a_prefix, a_local_part, a_value) end on_finish is do checksum_generator.generate_checksum checksum := checksum_generator.checksum Precursor end feature -- checksum checksum: INTEGER checksum_generator: EM_CHECKSUM_GENERATOR set_checksum_generator (a_generator: like checksum_generator) is -- set the checksum generator. -- set this to use custom checksum generator do checksum_generator := a_generator end feature {NONE} -- implementation ignore_content: BOOLEAN end