XML Schema nillable=¡±true¡± vs minOccurs=¡±0¡å
³ö´¦£ºhttp://www.dimuthu.org/blog/2008/08/18/xml-schema-nillabletrue-vs-minoccurs0/
¡¾Ç°ÑÔ¡¿Ò»¸öÔÂǰÑо¿¹ýnillable="true"ºÍ vs minOccurs="0"µÄÇø·Ö£¬Ã»ÓÐÏëµ½°¡£¬½ñÌì¾Í¼Ç²»µÃÁË£¬¿´À´ÕæÊǺüÇÐÔ²»ÈçÀñÊÍ·°¡£¬¿öÇÒÎÒ»¹Ã´µÄºÃ¼ÇÐÔ¡£¡£¡£¡£
¡¾×ܽ᡿ӢÎÄÒ»ÑÛ¿´²»³ö½áÂÛ£¬ËµµãººÓïÖ±½ÓЩ£¬±ð˵ÎÒÍÁ¹þ~
nillable="true"£º¸ÃÔªËØµÄÖµ¿ÉÒÔΪ¿Õ£¬µ«ÊǸÃÔªËØ²»ÄÜÊ¡ÂÔ£¬Ò²¾ÍÊÇ˵£¬Ö»ÄÜ£º
<minzero xsi:nil="true"><minzero>
¶ø²»ÄÜÖ±½Ó½«minzeroÕâ¸öÔªËØÈ¥µô
£¨×¢Ò⣺xsi:nil="true"»òÕßxsi:nil="1"Ó¦¸Ã¾ÍÊDZíʾÕâ¸öÔªËØÎª¿Õ£©
minOccurs="0"£º¸ÃÔªËØ¿ÉÒÔÖ±½Ó±»Ê¡ÂÔµô£¬µ«ÊDz»ÄÜÈøÃÔªËØµÄֵΪ¿Õ£¬Ò²¾ÍÊÇ˵£¬²»ÄÜ£º
<minzero xsi:nil="true"><minzero>
In a WSDL, XML Schema is the section where it define the message format for each operations, which eventually become the real API that users are interested. And it is the most tricky part of the WSDL. Nowadays there are many tools that you can design and use WSDLs without any needs in knowing the meaning of a single line of the WSDL. But there are situations that you may find it is better you have some knowledge in XML Schema section and in WSDL overall.
For this post I m taking a simple example of use of nillable=”true” and minOccurs=”0″. Take the following example.
<xs:element name="myelements">
<xs:complexType>
<xs:sequence>
<xs:element name="nonboth" type="xs:string"/>
<xs:element minOccurs="0" name="minzero" type="xs:int"/>
<xs:element name="nilint" nillable="true" type="xs:int"/>
<xs:element name="nilstring" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="minzeronil" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Just ignore the meaning of what nillable and minOccurs attributes for now. You can safely say the following XML is valid for the above Schema.
<myelements>
<nonboth>i can't be either nil nor skipped<nonboth>
Ïà¹ØÎĵµ£º
Óŵ㣺ÓÉÓÚxmlÊÇ¿ÉÀ©Õ¹µÄ£¬ËùÒÔxml¿ÉÒÔÃèÊöÀ´×Ô¶àÖÖÓ¦ÓóÌÐòµÄÊý¾Ý¡£
ͨ¹ýÁ£¶È¸üÐÂÀ´Ìá¸ßÐÔÄÜ¡£XML ÔÊÐíÁ£¶È¸üС£¿ª·¢ÈËÔ±²»±ØÔÚÿ´Î¸Ä¶¯Ê±¶¼·¢ËÍÕû¸ö½á¹¹»¯Êý¾Ý¼¯¡£ÓÐÁËÁ£¶È¸üкó£¬Ö»ÓиıäµÄÔªËØ²Å´Ó·þÎñÆ÷·¢Ë͵½¿Í»§»ú¡£ ......
Ò»°ãxmlÖÐÈç¹ûº¬ÓÐ&µÈ×Ö·û£¬¿ÉÒÔͨ¹ýCDATAÀ´¹ýÂË£¬µ«ÊǺ¬ÓÐһЩ²»ÈÏʶµÄÌØÊâ×Ö·ûʱºò¾Í»á²»Æð×÷Óã¬ÏÂÃæÊÇ´Ó±ðÈËÄǶùÄÃÀ´µÄÒ»¸ö¹ýÂË·½
·¨£¬¹ýÂËxmlÖеķǷ¨×Ö·û:
//XML±ê×¼¹æ¶¨µÄÎÞЧ×Ö½ÚΪ£º
/*
0×00 – 0×08
0×0b – 0×0c
0×0e – 0×1f
* ......
public string GetPage(int page, int pages, string url)
{
if (pages == 0)
{
&n ......
ÏÂÃæµÄ±í¸ñÁгöÁ˰üº¬ÔÚDOM Level 1Öеķ½·¨£¬²¢Áгö²»Í¬µÄä¯ÀÀÆ÷ÊÇ·ñÖ§³ÖÏî¡£
·½ ·¨
Ãè Êö
IE
MOZ
OP
SAF
createAttribute
(name
)
Óøø¶¨Ãû³Æname
´´½¨ÌØÐÔ½Úµã
×
×
×
£
createCDATASection
(text
)
Óðüº¬Îı¾
text
µÄÎı¾×Ó½Úµã
´´½ ......
½âÎö£º
CMarkup xml;
CString strChanText, strChanType;
xml.Load("MyXml.xml");
xml.ResetMainPos();
if (!Chan.FindElem("TreeOrg"))
{
return;
}
if (xml.IntoElem())
{
xml.FindEle ......