[
Lists Home |
Date Index |
Thread Index
]
Alessandro Triglia wrote:
> Bob,
>
> As I said yesterday,
Sorry to make you repeat yourself.
> **Roughly speaking**, WXS "sequence"s are mapped to ASN.1 SEQUENCEs, while
> WXS "all"s are mapped to ASN.1 SEQUENCEs plus explicit information about the
> order. The order is made a part of the abstract type definition and so is
> made available to the ASN.1 application.
>
> So, although ASN.1 lacks, per se, an equivalent of the WXS "all" model
> group, the ability to specify semantic significance in XML encodings (which
> means lexical "variable order", as opposed to "any order") is realized by
> writing something like the following:
>
> -------------
> MyAll ::= [USE-ORDER] SEQUENCE {
> order SEQUENCE OF ENUMERATED {a, b, c},
> a INTEGER (1..1000),
> b INTEGER (1..100),
> c UTF8String }
> -------------
>
> This works as follows. The abstract value:
>
> v1 MyAll ::= { order {b, c, a},
> a 1000, b 70, c "hello" }
>
> is encoded in XML as:
>
> -------------
> <v1>
> <b>70</b>
> <c>hello<c/>
> <a>1000</a>
> </v1>
> -------------
>
> The abstract value:
>
> v2 MyAll ::= { order {c, a, b},
> a 1000, b 70, c "hello" }
>
> is encoded as:
>
> -------------
> <v2>
> <c>hello<c/>
> <a>1000</a>
> <b>70</b>
> </v2>
> -------------
>
> In this way, even if the constructor is SEQUENCE (and not "ALL"), the
> information about the order is present in the abstract value, and is
> therefore accessible by the application, both when writing and when reading
> the abstract instance.
>
> In other encoding rules the SEQUENCE OF ENUMERATED is encoded as a normal
> SEQUENCE OF, because there is no requirement for the "lexical order" to be
> implemented as physical lexical order. Notice that it is always the same
> information, which may be "encoded" either as a physical order of child
> elements (in XML), or explicitly as a SEQUENCE OF ENUMERATED (in other
> encoding rules).
I was rolling right along with you until now. (I know I'm in trouble
when I don't understand either sentence of a two-sentence paragraph.)
First things first, Encoding aside, do applications exchange abstract
values? In other words, is the value:
> v2 MyAll ::= { order {c, a, b},
> a 1000, b 70, c "hello" }
Recieved at the other end as a sequence of (c, a, b), i.e., in that
order, or not?
Thanks again.
Bob Foster
|