in reply to Re^2: the annoying keys "key" and "value"
in thread the annoying keys "key" and "value"

IIRC XML allows multiple children-elements of same tag-name (like - as already mentioned - some HTML-Form elements do) and they are ordered.

Ordinary hashes in perl don't allow multiple keys of same name and have no order.

I doubt there is any common name, you might call it "XML-structure".

Cheers Rolf

  • Comment on Re^3: the annoying keys "key" and "value"

Replies are listed 'Best First'.
Re^4: the annoying keys "key" and "value"
by jabowery (Beadle) on Dec 23, 2010 at 22:24 UTC
    Thanks for the cogent response -- although I expect someone has come up with a term for this kind of annoying representation of a hash.

    PS: I understand the "reason" for the pathological representation. The non-pathological representation would have:  $hash{$key}=[$value1, $value2, $value3,...] and the distinction between array and scalar fields would be handled by the schema.

      I'm not sure that "pathological" describes this structure because it is one of the good ways in Perl to represent some types of C 2-D structures.

      It appears, as it turns out, a less general and more specific Perl structure, a HashOfArray would have been better.

      Sorry that I have no specific name in your application for this structure or knowledge of a standard module to convert between various structure types. But as seen in this thread, such a conversion is "not hard".

        This is getting a little esoteric but then if esoterica is disallowed among monks where would it be allowed, pray tell? The only cases where I can imagine the keys "key" and "value" being nonpathological are in schema descriptions. Could you expand my imagination with some counter-examples?
      > The non-pathological representation would have: $hash{$key}=[$value1, $value2, $value3,...] and the distinction between array and scalar fields would be handled by the schema.

      I don't understand what you want or mean, sorry.

      Could you give me an example of a non trivial XML with a reversable mapping to a nested perl data structure?

      For my amateur understanding each XML-tag is from a perl perspective a hash with attributes as keys additionally to tag name and an ordered list of children tags. And the list part can only be represented as an array or a scalar if it's just one element (like a text-string).

      The example you gave in the OP is only a special case of a simple schema, where "key" was the tag-name and "value" was a (one element) string.

      For sure many DTDs might be much easier - or in your word "non-pathologically" - represented, but thats the general case we are talking about.

      Cheers Rolf