{"id":135,"date":"2016-07-15T13:56:22","date_gmt":"2016-07-15T11:56:22","guid":{"rendered":"http:\/\/www.summonte.com\/home\/?p=135"},"modified":"2016-07-16T17:22:27","modified_gmt":"2016-07-16T15:22:27","slug":"xmlxsd-estensione","status":"publish","type":"post","link":"https:\/\/www.summonte.com\/home\/2016_07_15-xmlxsd-estensione\/","title":{"rendered":"XML\/XSD Estensione"},"content":{"rendered":"<p>Ciao,<br \/>\nmi \u00e8 capitato di dover realizzare degli schemi XSD che potessero permettere l&#8217;aggiunta dinamica di tag. Il caso specifico era un elenco di periferiche presenti in un server dove ogni dispositivo aveva il proprio tag e dentro esso aveva la proprie caratteristiche.<\/p>\n<p>Per ottenere ci\u00f2 \u00e8 utilizzabile il tag\u00a0<em><strong>&lt;xs:any&gt;<\/strong><\/em>.<\/p>\n<hr \/>\n<p>Aggiunta di &#8220;Qualunque dato&#8221; senza alcun controllo se non sintattico che i tag (se presenti) siano correttamente aperti e chiusi<\/p>\n<p><code><br \/>\n<strong>Schema:<\/strong><\/code><\/p>\n<p>&lt;xs:schema xmlns:xs=&#8221;http:\/\/www.w3.org\/2001\/XMLSchema&#8221;&gt;<br \/>\n&lt;xs:element name=&#8221;computer&#8221;&gt;<br \/>\n&lt;xs:annotation&gt;<br \/>\n&lt;xs:documentation xml:lang=&#8221;it-IT&#8221;&gt;Definizione di un computer&lt;\/xs:documentation&gt;<br \/>\n&lt;xs:documentation xml:lang=&#8221;en-US&#8221;&gt;Definition of a computer&lt;\/xs:documentation&gt;<br \/>\n&lt;\/xs:annotation&gt;<br \/>\n&lt;xs:complexType&gt;<br \/>\n&lt;xs:sequence&gt;<br \/>\n&lt;xs:element name=&#8221;keyboard&#8221; \/&gt;<br \/>\n&lt;xs:element name=&#8221;mouse&#8221; \/&gt;<br \/>\n&lt;xs:element name=&#8221;monitor&#8221; \/&gt;<br \/>\n<em><strong>&lt;xs:any namespace=&#8221;##any&#8221; processContents=&#8221;lax&#8221; minOccurs=&#8221;0&#8243; maxOccurs=&#8221;unbounded&#8221;\/&gt;<\/strong><\/em><br \/>\n&lt;\/xs:sequence&gt;<br \/>\n&lt;\/xs:complexType&gt;<br \/>\n&lt;\/xs:element&gt;<\/p>\n<p><strong>Esempio:<\/strong><\/p>\n<p>&lt;computer&gt;<br \/>\n&lt;keyboard&gt;105 keys&lt;\/keyboard&gt;<br \/>\n&lt;mouse&gt;3 button&lt;\/mouse&gt;<br \/>\n&lt;monitor&gt;vga&lt;\/monitor&gt;<br \/>\n<em><strong>\u00a0 &lt;joystic&gt;<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0 &lt;mytag1&gt;<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 data1<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;mytag2 myattr=&#8221;asd&#8221;&gt;<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 myValue<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/mytag2&gt;<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0 &lt;\/mytag1&gt;<\/strong><\/em><br \/>\n<em><strong>\u00a0 &lt;\/joystic&gt;<\/strong><\/em><br \/>\n&lt;\/computer&gt;<\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<p>Aggiunta di un estensione basata su uno schema esterno &#8220;senza alcun controllo&#8221; se non sintattico che i tag (se presenti) siano correttamente aperti e chiusi. Il controllo rispetto lo schema esterno deve essere fatto con una attivit\u00e0 ulteriore separata.<\/p>\n<p><code><strong>Schema:<\/strong><\/code><\/p>\n<p>&lt;xs:schema xmlns:xs=&#8221;http:\/\/www.w3.org\/2001\/XMLSchema&#8221;&gt;<br \/>\n<em><strong>\u00a0 &lt;xs:complexType name=&#8221;myextraType&#8221;&gt;<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:sequence&gt;<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xs:any namespace=&#8221;##other&#8221; processContents=&#8221;lax&#8221; maxOccurs=&#8221;unbounded&#8221;\/&gt;<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xs:sequence&gt;<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0 &lt;\/xs:complexType&gt;<\/strong><\/em><br \/>\n&lt;xs:element name=&#8221;computer&#8221;&gt;<br \/>\n&lt;xs:annotation&gt;<br \/>\n&lt;xs:documentation xml:lang=&#8221;it-IT&#8221;&gt;Definizione di un computer&lt;\/xs:documentation&gt;<br \/>\n&lt;xs:documentation xml:lang=&#8221;en-US&#8221;&gt;Definition of a computer&lt;\/xs:documentation&gt;<br \/>\n&lt;\/xs:annotation&gt;<br \/>\n&lt;xs:complexType&gt;<br \/>\n&lt;xs:sequence&gt;<br \/>\n&lt;xs:element name=&#8221;keyboard&#8221; \/&gt;<br \/>\n&lt;xs:element name=&#8221;mouse&#8221; \/&gt;<br \/>\n&lt;xs:element name=&#8221;monitor&#8221; \/&gt;<br \/>\n&lt;xs:element name=&#8221;myextra&#8221; type=&#8221;myextraType&#8221; minOccurs=&#8221;0&#8243; maxOccurs=&#8221;unbounded&#8221;\/&gt;<br \/>\n&lt;\/xs:sequence&gt;<br \/>\n&lt;\/xs:complexType&gt;<br \/>\n&lt;\/xs:element&gt;<br \/>\n&lt;\/xs:schema&gt;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Esempio:<\/strong><\/p>\n<p>&lt;computer&gt;<br \/>\n&lt;keyboard&gt;105 keys&lt;\/keyboard&gt;<br \/>\n&lt;mouse&gt;3 button&lt;\/mouse&gt;<br \/>\n&lt;monitor&gt;vga&lt;\/monitor&gt;<br \/>\n<em><strong>\u00a0 &lt;myextra xmlns:myExt=&#8221;http:\/\/personal.site\/myExtensions.xsd&#8221;&gt;<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0 &lt;myExt:joystick&gt;<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 data1<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;myExt:mytag2 myattr=&#8221;asd&#8221;&gt;<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 myValue<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/myExt:mytag2&gt;<\/strong><\/em><br \/>\n<em><strong>\u00a0\u00a0\u00a0\u00a0 &lt;\/myExt:joistick&gt;<\/strong><\/em><br \/>\n<em><strong>\u00a0 &lt;\/myextra&gt;<\/strong><\/em><br \/>\n&lt;\/computer&gt;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ciao, mi \u00e8 capitato di dover realizzare degli schemi XSD che potessero permettere l&#8217;aggiunta dinamica di tag. Il caso specifico era un elenco di periferiche presenti in un server dove ogni dispositivo aveva il proprio tag e dentro esso aveva la proprie caratteristiche. Per ottenere ci\u00f2 \u00e8 utilizzabile il tag\u00a0&lt;xs:any&gt;. Aggiunta di &#8220;Qualunque dato&#8221; senza &hellip; <a href=\"https:\/\/www.summonte.com\/home\/2016_07_15-xmlxsd-estensione\/\" class=\"more-link\">Continua la lettura di <span class=\"screen-reader-text\">XML\/XSD Estensione<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-135","post","type-post","status-publish","format-standard","hentry","category-senza-categoria"],"_links":{"self":[{"href":"https:\/\/www.summonte.com\/home\/wp-json\/wp\/v2\/posts\/135","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.summonte.com\/home\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.summonte.com\/home\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.summonte.com\/home\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.summonte.com\/home\/wp-json\/wp\/v2\/comments?post=135"}],"version-history":[{"count":7,"href":"https:\/\/www.summonte.com\/home\/wp-json\/wp\/v2\/posts\/135\/revisions"}],"predecessor-version":[{"id":142,"href":"https:\/\/www.summonte.com\/home\/wp-json\/wp\/v2\/posts\/135\/revisions\/142"}],"wp:attachment":[{"href":"https:\/\/www.summonte.com\/home\/wp-json\/wp\/v2\/media?parent=135"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.summonte.com\/home\/wp-json\/wp\/v2\/categories?post=135"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.summonte.com\/home\/wp-json\/wp\/v2\/tags?post=135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}