What happened to the Messenger Plus! forums on msghelp.net?
Shoutbox » MsgHelp Archive » Messenger Plus! for Live Messenger » WLM Plus! General » Schema for Interfaces

Schema for Interfaces
Author: Message:
effection
Full Member
***

Destroy The Runner

Posts: 135
Reputation: 4
– / Male / Flag
Joined: Sep 2006
O.P. Huh?  Schema for Interfaces
It seems to me this schema doc is pretty inaccurate and not very user friendly for checking against the schema in the end (every plus script i try to check fails for simple little things).

For example
code:

<xs:element name="BottomBar" minOccurs="0">
    <xs:complexType>
        <xs:sequence>
            <xs:choice>

                <xs:element name="LeftControls" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence minOccurs="0" maxOccurs="unbounded">
                            <xs:element name="Margin" type="xs:unsignedInt" default="10" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>Adjusts the space between this button and the last one.</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="Control" type="pli:Control"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
            <xs:choice>

                <xs:element name="RightControls" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence minOccurs="0" maxOccurs="unbounded">
                            <xs:element name="Margin" type="xs:unsignedInt" default="10" minOccurs="0">
                                <xs:annotation>
                                    <xs:documentation>Adjusts the space between this button and the next one.</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="Control" type="pli:Control"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:sequence>

        <xs:attribute name="Style" use="required">
            <xs:annotation>
                <xs:documentation>Changes the look of the bottom bar.</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:enumeration value="None"/>
                    <xs:enumeration value="Plain"/>
                    <xs:enumeration value="Light"/>
                    <xs:enumeration value="Default"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
</xs:element>


As you can see in this code the types "LeftControl" and "RightControl" are in SEPARATE blocks "Choice". Now this is obviously inccorrect because you CAN have either LeftControl or RightControl or both within the "BottomBar" object and Plus parses it fine. Now the way that is laid out is fine because you can have both (they are in separate choice blocks) but when it comes to using this schema it messes up certain things (relating to my IDE for Plus! in the end) so this object should have the "Choice" tags removed.

This is only one example which is making my life more difficult in making an Development Environment for everyone here.

There are many more such as objects being marked as use="optional" or having a default attribute (makes them optional) or having no attribute (also makes them optional) when some are actually required elements (as far as i can remember).

On top of this most complexTypes are using "sequence" tags which means, All types within the sequence must appear in the same order as defined within the schema. Now when Plus! parses a file it doesn't care what order they are in! At least on most objects it doesn't care. All of them should use "<all>" instead of "sequence" as it allows for any order.

The reason i bring this up is that if i change these to be more inkeeping with what the actual Plus! engine does and then there is eventually a new update to the schema not taking into account my changes it will become a nightmare to go and change all of these again.

It would be nice if someone with some xsd knowledge would help to go through and fix a lot of it but only if Patchou would commit these changes
10-02-2010 11:06 AM
Profile E-Mail PM Find Quote Report
matty
Scripting Guru
*****


Posts: 8336
Reputation: 109
39 / Male / Flag
Joined: Dec 2002
Status: Away
RE: Schema for Interfaces
Hey effection,

I had Patchou fix a bug in the schema and he also fixed yours.

Here is his email response:

Fixed.

Although the way it was written wouldn't have prevented any valid xml to be parsed, it was just a useless additional condition.

As for having "many more" of those, I wouldn't bet on it. Even if Plus! Parses something, if I set it as optional or required in the schema, it's because I have a reason. Go against your schema and you go against the internal design choices of Messenger Plus!. Having said that, if there are other known problems or incoherence in the schema, I'll gladly fix them :).
10-08-2010 11:25 AM
Profile E-Mail PM Find Quote Report
effection
Full Member
***

Destroy The Runner

Posts: 135
Reputation: 4
– / Male / Flag
Joined: Sep 2006
O.P. RE: Schema for Interfaces
I'll have another look at the XML and the C# files it produces this week and try to pick out other things. Basically i want to make sure that all required fields are definitely required. I have written a tool (based off xsd.exe) to do custom serialization on all optional fields so that if its the default value the xml doesn't get unnecessarily written to the file. For now it should be fine as long as the <choice> tags are fixed
10-09-2010 04:20 PM
Profile E-Mail PM Find Quote Report
« Next Oldest Return to Top Next Newest »


Threaded Mode | Linear Mode
View a Printable Version
Send this Thread to a Friend
Subscribe | Add to Favorites
Rate This Thread:

Forum Jump:

Forum Rules:
You cannot post new threads
You cannot post replies
You cannot post attachments
You can edit your posts
HTML is Off
myCode is On
Smilies are On
[img] Code is On