<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Web Services</title><link>https://www.dotnetzone.gr:443/cs/forums/21/ShowForum.aspx</link><description>Συζήτηση περί των web services και WSE, την υλοποίησή τους με το .NET Framework, καθώς και θέματα interoperability με άλλα συστήματα</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: "Advanced" XML Serialization</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7568.aspx</link><pubDate>Mon, 05 Dec 2005 22:01:20 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7568</guid><dc:creator>kkara</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7568.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=21&amp;PostID=7568</wfw:commentRss><description>&lt;P&gt;Επανέρχομαι (δριμύτερος;) για ένα επιπλέον ερώτημα σχετικά με το αυτόματα παραγόμενο WSDL. Ξέρει κανείς αν μπορώ να εισάγω με κάποιο τρόπο στο WSDL annotation για τα elements που δημιουργούνται; Σε ένα κανονικό XSD θα μπορούσα να περιγράψω ένα element ως π.χ. :&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;xs:element&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="testElement"&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;xs:annotation&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;xs:documentation&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT size=2&gt;My annotation for testElement&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;xs:documentation&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;xs:annotation&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;xs:element&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;Μπορώ να κάνω κάτι αντίστοιχο σε ένα element που παράγεται αυτόματα στο WSDL (π.χ. element που αντιστοιχεί σε definition κλάσης, κτλ.);&lt;/P&gt;</description></item><item><title>Απ: "Advanced" XML Serialization</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7314.aspx</link><pubDate>Fri, 25 Nov 2005 18:35:36 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7314</guid><dc:creator>kkara</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7314.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=21&amp;PostID=7314</wfw:commentRss><description>&lt;P&gt;Τελικά το καλύτερο που μπόρεσα να κάνω για να φέρω το παραγόμενο WSDL μιας WebService στα "μέτρα" μου είναι να ανταλάσσω αντικείμενα κλάσεων που έχω φτιάξει για αυτό το σκοπό. Η ιδέα είναι να χρησιμοποιηθούν επιπλέον πεδία που θα ελέγχουν&amp;nbsp;το παραγόμενο&amp;nbsp;output όταν ο XMLSerializer κάνει serialize τα instances. Για παράδειγμα η κλάση : &lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;class&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt; MyClass {&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt; MyString;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;short&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt; MyShort;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt; DateTime MyDateTime;&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;παράγει το εξής XSD τμήμα : &lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;s:complexType&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="MyClass"&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;s:sequence&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;FONT color=#800000 size=2&gt;s:element&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;minOccurs&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="0"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;maxOccurs&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="1"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="MyString"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="s:string"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;s:element&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;minOccurs&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="1"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;maxOccurs&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="1"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="MyShort"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="s:short"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;s:element&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;minOccurs&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="1"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;maxOccurs&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="1"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="MyDateTime"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="s:dateTime"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;s:sequence&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;s:complexType&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;Όπως φαίνεται το πεδίο τύπου string είναι προαιρετικό, ενώ τα άλλα δύο πεδία είναι υποχρεωτικά. Παρότι δεν κατάφερα να κάνω το πρώτο πεδίο υποχρεωτικό, τουλάχιστον κατάφερα να κάνω τα άλλα δύο πεδία προαιρετικά, αλλάζοντας την κλάση ως εξής : &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;class&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt; MyClass {&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt; MyString;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;short&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt; MyShort;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;bool&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt; MyShortSpecified;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;[System.Xml.Serialization.XmlIgnoreAttribute()]&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt; DateTime MyDateTime = DateTime.MinValue;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;[System.Xml.Serialization.XmlIgnoreAttribute()]&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;bool&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt; MyDateTimeSpecified {&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;/FONT&gt;&lt;FONT size=2&gt; { &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;this&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;.MyDateTime != DateTime.MinValue; }&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set&lt;/FONT&gt;&lt;FONT size=2&gt; { &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;this&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;.MyDateTime = DateTime.MinValue; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;Τα δύο πεδία που προστέθηκαν έχουν ονόματα ίδια με τα πεδία που θα γίνουν προαιρετικά με επιπλέον κατάληξη το Specified. Τα πεδία αυτά&amp;nbsp;δεν περιλαμβάνονται στο Serialization λόγω του &lt;FONT face="Courier New" color=#000000&gt;XmlIgnoreAttribute&lt;FONT face=Tahoma&gt;, αλλά όταν ο XMLSerializer κάνει serialize ένα instance της MyClass ελέγχει την τιμή τους και ανάλογα&amp;nbsp;αποφασίζει αν θα βάλει το αντίστοιχο element στο XML ή όχι&amp;nbsp;(δυστυχώς για το short δεν μπορεί να γίνει αυτόματα, όπως για το DateTime &lt;img src="/cs/emoticons/emotion-6.gif" alt="Sad [:(]" /&gt;). Έτσι το παραγόμενο WSDL είναι απλά : &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff&gt;&amp;lt;&lt;FONT color=#800000 size=2&gt;s:complexType&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="MyClass"&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;s:sequence&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;FONT color=#800000 size=2&gt;s:element&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;minOccurs&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="0"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;maxOccurs&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="1"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="MyString"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="s:string"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;s:element&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;minOccurs&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="0"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;maxOccurs&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="1"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="MyShort"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="s:short"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;s:element&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;minOccurs&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="0"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;maxOccurs&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="1"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;name&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="MyDateTime"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;type&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="s:dateTime"&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;/&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;s:sequence&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;s:complexType&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Αν λοιπόν σε μια WebMethod πρέπει να οριστούν κάποιοι παράμετροι εισόδου προαιρετικοί, ο τρόπος είναι να χρησιμοποιήσεις αντικείμενα ως input. Εξακολουθεί βέβαια να παραμένει το ερώτημα του πως θα κάνω το MyString υποχρεωτικό (ώστε να μην χρειάζεται να ελέγχω αν είναι null και να πετάω exceptions). Γενικώς πάντως το συμπέρασμα είναι ότι δεν μπορείς να έχεις απόλυτο έλεγχο του σχήματος που ακολουθούν τα αντικείμενα που ανταλάσσεις &lt;img src="/cs/emoticons/emotion-6.gif" alt="Sad [:(]" /&gt;.&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;</description></item><item><title>Απ: &amp;quot;Advanced&amp;quot; XML Serialization</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7284.aspx</link><pubDate>Thu, 24 Nov 2005 18:03:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7284</guid><dc:creator>kkara</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7284.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=21&amp;PostID=7284</wfw:commentRss><description>Η ιδέα με την XML γενικώς είναι ότι όταν δεν υπάρχει καθόλου το element
τότε θεωρείται null, ενώ όταν υπάρχει και δεν περιέχει τίποτα τότε
είναι το κενό string. Για να θέσεις στο XSD ότι ένα element μπορεί να
μην υπάρχει καθόλου τότε το ορίζεις ως π.χ. &lt;br&gt;
&amp;lt;s:element minoccurs="0" maxoccurs="1" name="MyParameter" type="s:string"&amp;gt;&lt;br&gt;
Έτσι αν έχουμε ένα field MyParameter τύπου string τότε το 
&amp;lt;MyParameter&amp;gt;&amp;lt;/MyParameter&amp;gt; αντιστοιχεί στο String.Empty και όχι στο null. Αν το πεδίο ήταν τύπου
int τότε θα υπήρχε πρόβλημα καθώς δεν θα πέρναγε το XSD Validation εφόσον δεν περιέχεται valid int τιμή. &lt;br&gt;
&lt;br&gt;Αν δεν υπάρξει καμιά ιδέα θα βάλω σε επόμενο post κανένα workaround...</description></item><item><title>Απ: "Advanced" XML Serialization</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7277.aspx</link><pubDate>Thu, 24 Nov 2005 03:23:23 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7277</guid><dc:creator>Χρήστος Γεωργακόπουλος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7277.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=21&amp;PostID=7277</wfw:commentRss><description>&lt;P&gt;Όταν ο τύπος μιας παραμέτρου είναι ακέραιος, και η xml με τα δεδομένα σου περιέχει πχ: &amp;lt;Myparameter&amp;gt;&amp;lt;/MyParameter&amp;gt; βλέπεις ξεκάθαρα ότι δεν έχει μέσα κανέναν ακέραιο, άρα είναι null και άρα μπορείς να προσδιορίσεις αν μπορεί να είναι null ή όχι. Αν όμως για την ίδια παράμετρο ο τύπος ήταν string, πως θα μπορούσες μέσα στην xml με τα δεδομένα να ξεχωρίσεις το null από το empty string (string με μήκος 0); Άρα, αφού δεν γίνεται να τα ξεχωρίσεις δεν σε αφήνει και να το ορίσεις σαν required. Υποθέσεις κάνω.... χάνω λίγο σε βάθος στην xml...&lt;/P&gt;</description></item><item><title>"Advanced" XML Serialization</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/7267.aspx</link><pubDate>Wed, 23 Nov 2005 23:26:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:7267</guid><dc:creator>kkara</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/7267.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=21&amp;PostID=7267</wfw:commentRss><description>Καιρό είχε να πέσει ερώτημα για Web Services οπότε είπα να αδράξω την ευκαιρία. Ξεκινάμε λοιπόν.&lt;br&gt;
Υλοποιώ αυτή την εποχή κάποια Web Services τα οποία θέλω να είναι όσο
πιο interoperable γίνεται. Για το λόγο αυτό αποφάσισα να παρατηρώ το
παραγόμενο WSDL για κάθε τι που ορίζω ότι λαμβάνουν ή επιστρέφουν τα
Services. Μετά από πολύ ψάξιμο σχετικά με τον XMLSerializer, τα
attributes που ελέγχουν το παραγόμενο WSDL και το XSD.exe, διαπίστωσα
ότι κάποια απλά πράγματα δεν καταφέρνω να τα κάνω. Πιο συγκεκριμένα : &lt;br&gt;
&lt;ul&gt;
  &lt;li&gt;Ενώ κατάφερα να θέσω ότι ένα property τύπου int ή DateTime σε μια
κλάση είναι προαιρετικό (χρησιμοποιώντας ένα bool property με όνομα
&amp;lt;PropertyName&amp;gt;Specified), δεν κατάφερα να θέσω ότι ένα property
τύπου string είναι υποχρεωτικό. Ότι και να κάνω πάντοτε στο παραγόμενο
XSD ένα property τύπου string μπαίνει με minOccurs="0" (προφανώς για να
υποστηρίζεται η null τιμή). Το ίδιο βέβαια συμβαίνει και για τις
παραμέτρους μιας Web Method με αποτέλεσμα να μην μπορώ να απαιτήσω τιμή
για μια παράμετρο τύπου string.&lt;br&gt;
  &lt;/li&gt;
  &lt;li&gt;Επίσης
δεν κατάφερα να θέσω Optional παραμέτρους σε Web Methods
όταν πρόκειται για τύπο int, DateTime, custom enumerations, κτλ. Εκεί
δηλαδή που θέλω να βάλω minOccurs="0" δεν τα καταφέρνω &lt;img src="/cs/emoticons/emotion-6.gif" alt="Sad [:(]" /&gt;.Θα μπορούσα
βέβαι να το πετύχω χρησιμοποιώντας κλάσεις ή structures ως input των
WebMethods αλλά προσπαθώ να το αποφύγω. &lt;/li&gt;
  &lt;li&gt;Ιδίως όταν θέλω να κάνω κάτι πιο advanced, π.χ. να ορίσω ότι το
string που δέχεται μια μέθοδος έχει συγκεκριμένο μήκος, δεν κατάφερα να
βρω τρόπο.&lt;/li&gt;
&lt;/ul&gt;
Γενικώς λοιπόν δεν κατάφερα να διαμορφώσω το XSD που περιέχεται στο
WSDL ορίζοντας με κάποιο τρόπο τις κλάσεις και τις μεθόδους μου.
Ομολογώ ότι δεν δοκίμασα να φτιάξω δικό μου XMLSerializer (και δεν
είμαι και σίγουρος ότι κι αυτό θα βοηθήσει). Έχει κανείς καμιά ιδέα για
το πως μπορούν να γίνουν τα παραπάνω; Ενδιαφέρον θα ήταν να υπήρχε ένα
"AdvancedXSD.exe" το οποίο να δέχεται ένα XSD με πολύπλοκα definitions
και να παρήγαγε τις κατάλληλες κλάσεις.&lt;br&gt;</description></item></channel></rss>