Portál AbcLinuxu, 12. května 2025 07:35

Dotaz: XML - spravnost navrhnuti struktury

8.10.2008 23:47 Tomáš Skočdopole | skóre: 13
XML - spravnost navrhnuti struktury
Přečteno: 480×
Odpovědět | Admin
Ahoj,

"konecne" jsem zacal neco tvorit v XML :)

Narazil jsem tam na jednu nejasnost pri vytvareni struktury XML. Chtel bych se zeptat, jaky je rozdil v techto dvou prikladech:
<micuda>
    <barva>bila</barva>
    <prumer>40</prumer>
</micuda>
vs.
<micuda barva="bila" prumer="40" />
Nebo je nejake pravidlo/doporuceni, kdy je vhodnejsi pouzit atribut="neco" a kdy je vhodnejsi to rozepsat jako v prvni variante.

Dekuji! Tomas
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

finc avatar 9.10.2008 00:08 finc | skóre: 8 | blog: Finc | Kolín
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Odpovědět | | Sbalit | Link | Blokovat | Admin
Prvni zpusob je o dost ukecanejsi. A pokud xml bude rozsahlejsi + napr. posilane pres sit, tak varianta c.2 je lepsi.

Dost veci se da napsat do atributu, dost veci zase ne. Prikladem muze byt treba toto:
<report destination="jdbc/blabla">
 <description>dljdlksjfl dlksjf ldsjflsjkflsj</description>
 <sql><![CDATA[ SELECT * FROM blabla; ]]</sql>
</report>
Kdybych chtel popisek prepsat jako atribut, tak by to jiste slo, ale dane xml by bylo dost neprehledne. Pokud bych chtel sql prepsat jako atribut, tak bych se mohl dostat do problemu, protoze v danem sql by se mohla objevit specialni znamenka, ktera by mi v atributu "neprosla". Kdybych chtel destination prepsat do elementu, tak by to jiste slo, ale bylo by to zbytecne ukecane, protoze to vzdy bude kratky a jasny text bez dalsiho rozsirovani.

Druhy pohled na vec muze byt fakt, ze dane xml se bude rozsirovat:
<osoba jmeno="Ales" typ="programator" />
Tento zapis by byl jiste validni, problem ale muze nastat ve chvili, kdy bych chtel dany typ dale rozsirit. Napriklad rict, ze se jedna o programatora pro javu, C# ci C++. Pote by tento navrh byl spatny, protoze typ by mel byt elementem, ktery bude obsahovat dalsi vlastnosti.
Kdo Vam dal pravo ty lidi urazet? A kdo ti dal pravo cumet z okna, ty kr.vo!
9.10.2008 08:18 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Souhlas. Jeste bych dodal, ze jde taky o "logickou" stavbu zaznamu. Cili "vlastnosti" daneho zaznamu (v prikladu s osobou by to bylo nejake ID osoby) davam do atributu, obsah (v tomto prikladu jmeno, typ) do vnorenych elementu. Myslim, ze v HTML lze hledat docela dobrou inspiraci, jak tohle rozdelit. S tim HTML to myslim tak, ze
  • elementy obsahuji informaci o tom, co bude zobrazeno, tedy obsah
  • a atributy zase informaci o tom, jak to bude zobrazeno, tedy vlastnosti
. Dejv
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
9.10.2008 18:05 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Speciální znaménka v XML snad nejsou problém ani u atributů - i v nich se místo nich dá zapsat &lt; nebo &#číslo;.
Josef Kufner avatar 10.10.2008 00:00 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Ale výrazně to snižuje čitelnost.
Hello world ! Segmentation fault (core dumped)
10.10.2008 00:37 Messa | skóre: 39 | blog: Messa
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
XML je formát pro přenos dat, ne pro přímé čtení.

IMHO ani ty CDATA sekce na čitelnosti taky zrovna nepřidávají.
Josef Kufner avatar 10.10.2008 17:43 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Výhodou je, že máš bordel jen na začátku a na konci, kdežto zbytek je jak má být. Takže pokud by v onom selectu bylo často používáno většítek a menšítek, na přehlednosti by to bylo znát výrazně. V případě atributů a uvozovek ještě více.
Hello world ! Segmentation fault (core dumped)
Josef Kufner avatar 10.10.2008 00:05 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
U textových formátů obecně není velikost dat problém, jen se to prostě musí prohnat skrz gzip (nebo jinou proudovitou kompresi). Text se dobře komprimuje, tagy se opakují, takže výsledek bude hezky malý tak jako tak.
Hello world ! Segmentation fault (core dumped)
finc avatar 10.10.2008 09:31 finc | skóre: 8 | blog: Finc | Kolín
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Ne vzdy se hodi provest kompresi. Samotna komprese a dekomprese muze byt casove mnohem narocnejsi nez ciste odeslani.

Myslim, ze xml trpi zejmena timto neduhem, ze je prilis ukecane a dany objem dat muze byt problem.

Kazdy, kdo kdy pracoval s webovymi sluzbami, tak navrh xml pro SOAP response je obcas magie. To je treba priklad, kde s kompresi by byl vcelku problem.
Kdo Vam dal pravo ty lidi urazet? A kdo ti dal pravo cumet z okna, ty kr.vo!
10.10.2008 10:26 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
fuj, SOAP :-) to je to, čomu osobne vravím java-style ... nabubrelé, nechutné, ale v móde. Osobne radšej obyčajné XML/RPC.
Daniel Kvasnička ml. avatar 10.10.2008 15:39 Daniel Kvasnička ml. | skóre: 52 | blog: The Joys and Sorrows of Being an IT Freak | Ostrava
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Tak to uz snad rovnou RESTful services, ne? :-)
FSF: “screw you for not wanting the stuff we produce”, People: “screw you for not producing the stuff we want."
10.10.2008 15:59 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Tak, a teď by se sem měli nahrnout všichni ti RESToví věrozvěsti a vysvětlit ti, že REST je architektonický přístup, zatímco SOAP je protokol, takže lze dělat REST klidně na SOAPu a podobné úchvatnosti. Pokud jde o mě, všechen ten hype okolo RESTu mne nechává ledově chladným, protože v zásadě jde o formulaci triviálních principů, které používá snad každý, vědomky či nevědomky, a jenom různá svoloč okolo toho buduje neprostupnou bariéru frameworků, na které se dají prodávat konzultantské služby. Uff :-)
Ještě na tom nejsem tak špatně, abych četl Viewegha.
Josef Kufner avatar 10.10.2008 17:43 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Tak v tomhle případě se o kompresi postará transparentně samotné HTTP.
Hello world ! Segmentation fault (core dumped)
9.10.2008 08:45 JS
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jestli se snazite pouzivat XML na neco jineho, nez je oznacovani textu (semantic markup nebo jak se tomu rika), tak je vase pouziti mimo originalni zamer (k cemu se XML ma pouzit) a z toho vyplyva vase dilema.

Takze odpoved zni, pokud vase aplikace je takove povahy, ze jde o text v zasade citelny uzivatelem, pak to co je v elementech je citelny text (uzivatelem), kdezto atributy urcuji vlastnosti toho textu.

Pokud ovsem to pouzivate jako ukladaci format dat (databaze, konfigurace), pak to pouzivate v rozporu s puvodnim zamerem a tedy je to v podstate na vas, jak si to zorganizujete, a z techto duvodu take nikdo nema rozumne doporuceni.
9.10.2008 09:06 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Odpovědět | | Sbalit | Link | Blokovat | Admin

Jenom poznámka - pokud to bude rovnou atribut, tak pak nemůžeme přidávat jeho další vlastnosti (rozuměj - ne tak elegantně, IMHO):

<micuda>
    <barva>bila</barva>
    <prumer jednotky="mm">40</prumer>
</micuda>
vs.
<micuda barva="bila" prumer="40" prumer-jednotky="mm"/>

A ještě něco: pokud očekáváme, že bude hodnota z nějaké nevelké množiny (třeba máme jenom bílé, modré a žluté míče), tak bude asi lepší atribut, protože ten můžeme otestovat vůči schematu (myslím, že data vně nelze).

I am always ready to learn although I do not always like to be taught. (W. Churchill)
stybla avatar 9.10.2008 10:00 stybla | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury

A ještě něco: pokud očekáváme, že bude hodnota z nějaké nevelké množiny (třeba máme jenom bílé, modré a žluté míče), tak bude asi lepší atribut, protože ten můžeme otestovat vůči schematu (myslím, že data vně nelze).

Otazkou je, jestli ma schema smysl. Co jsem zatim videl, tak schema objemem prevysovalo samotna data v XML.
Heron avatar 9.10.2008 15:55 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Jak kdy, ale dá se vůči němu krásně validovat.
stybla avatar 9.10.2008 17:45 stybla | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Jak kdy, ale dá se vůči němu krásně validovat.
Ja to nepopiram. Pouze jsem konstatoval skutecnost, ze schema muze byt prehnane velke. Muj dojem je takovy, ze schema se zrovna moc nepovedlo. A i kdyz mam XML moc rad resp. nepouzivam nic jineho, tak validaci asi budu (pozn. jiz resim) (vzdy) resit primo v aplikaci.
9.10.2008 20:55 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Dekuji vsem za odpovedi! Pomohlo me to se zorientovat.

Tomas
Daniel Kvasnička ml. avatar 10.10.2008 09:34 Daniel Kvasnička ml. | skóre: 52 | blog: The Joys and Sorrows of Being an IT Freak | Ostrava
Rozbalit Rozbalit vše Re: XML - spravnost navrhnuti struktury
Odpovědět | | Sbalit | Link | Blokovat | Admin
Od jednoho z "XML gurus"... http://www.ibm.com/developerworks/xml/library/x-eleatt.html

V podstate bych to shrnul jeho slovy: If you consider the information in question to be part of the essential material that is being expressed or communicated in the XML, put it in an element. If you consider the information to be peripheral or incidental to the main communication, or purely intended to help applications process the main communication, use attributes.

+ ta dobra definovatelnost vyctoveho typu pro atributy
FSF: “screw you for not wanting the stuff we produce”, People: “screw you for not producing the stuff we want."

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.