abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 6
    včera 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 1
    včera 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    včera 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    včera 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    24.4. 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 12
    24.4. 15:55 | Nová verze

    Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    24.4. 13:44 | IT novinky

    Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (73%)
     (9%)
     (2%)
     (16%)
    Celkem 765 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: Jak strukturovat xml - multijazykové dokumenty

    18.9.2013 10:47 Lukáš
    Jak strukturovat xml - multijazykové dokumenty
    Přečteno: 501×
    Dobrý den všem,

    pracuju na návrhu datového modelu pro multijazyčný dokument a nevím, co je výhodnější, zda uvnitř elementu definovat další subelementy pro každý podporovaný jazyk nebo zda to ošetřit atributy. V podstatě tedy řeším, zda je leší varaianta A nebo B níže:
    A:
    
    <element>
    <cs>Cesky text</cs>
    <en>Anglicky text</en>
    <fr>Francouzsky text</fr>
    </element>
    
    
    nebo
    B:
    
    <element lang="cs">Cesky text</element>
    <element lang="en">Anglicky text</element>
    <element lang="fr">Francouzsky text</element>
    
    

    Odpovědi

    18.9.2013 11:27 JS
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    V XML se nevyznam (vubec), ale prijde mi smysluplnejsi to druhe. V prvnim pripade bude patrne potreba zabudovat mnozinu jazyku do schematu, v druhem pripade nikoli. Ta druha situace mi prijde v praxi flexibilnejsi.
    18.9.2013 14:34 Kit
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Oba přístupy jsou ve své podstatě rovnocenné. Puristé budou možná dávat přednost způsobu A, ale praktičtější asi bude B.
    Josef Kufner avatar 19.9.2013 01:26 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Já bych raději použil JSON a variantu A. Pro XML se ale hodí více B, neboť definovat element pro každý jazyk je ošklivé. Asi bych ale použil variantu C (pokud bych opravdu musel použít XML):
    <element>
      <value lang="cz">Český text.</value>
      <value lang="en">English text.</value>
      <value lang="fr">Texte français.</value>
    </element>
    
    Hello world ! Segmentation fault (core dumped)
    19.9.2013 09:50 Jirka W.
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty

    Případně variantu D:

    <element id="text1">Defaultní text, pokud není v dospozici překlad</element>

    a překlady bych měl v externím xliff souboru (o xliff víc napoví google). U většího projektu by tak mohly překlady dělat pomocí profesionálních nástrojů (třeba Qt Linguist nebo komerční produkty).

    Pokud bych použil variantu B nebo C, tak bych místo lang použil standardní xml:lang.

    Josef Kufner avatar 19.9.2013 13:36 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Přijde na to, zda se jedná o kus programu nebo kus uživatelských dat. V případě programu se externí soubor a překládací nástroj hodí. V případě dat je lepší si nekomplikovat život a uložit to na jednu hromadu.
    Hello world ! Segmentation fault (core dumped)
    xkucf03 avatar 21.9.2013 13:57 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty

    Přiznám se, že někdy váhám, jestli ty elementy ještě takhle obalovat (varianta C) nebo ne. Nějaké argumenty pro a proti?

    (samozřejmě jsou případy, kdy je to jasné, např. ten obalující element se tam může vyskytovat víckrát a má nějaké ID nebo jiné vlastnosti/atributy – pak je jasné, že ty elementy s hodnotou takto seskupíme/obalíme a společné atributy uvedeme jen jednou v tom obalu, než abychom je duplikovali ke každé hodnotě)

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Josef Kufner avatar 21.9.2013 14:11 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Záleží na tom, zda je jazyk vlastností elementu (samostatná instance pro každý jazyk), nebo je přeložený text alternativní hodnotou vlastnosti elementu (jedna instance pro všechny jazyky).
    Hello world ! Segmentation fault (core dumped)
    xkucf03 avatar 21.9.2013 14:24 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Příklad 1:
    <program>
    	<název jazyk="cs">Textový editor</název>
    	<název jazyk="en">Text editor</název>
    	<ikona>/usr/share/…/editor.png</ikona>
    	<cesta>/usr/bin/…</cesta>
    	…
    </program>
    Příklad 2:
    <program>
    	<název>
    		<hodnota jazyk="cs">Textový editor</hodnota>
    		<hodnota jazyk="en">Text editor</hodnota>
    	</název>
    	<ikona>/usr/share/…/editor.png</ikona>
    	<cesta>/usr/bin/…</cesta>
    	…
    </program>
    Jazyk je vlastností elementu název (je tam víc instancí názvu – pro každý jazyk jedna) a zároveň přeložený text je alternativní hodnotou vlastnosti název elementu program (jedna instance pro všechny jazyky).
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Josef Kufner avatar 21.9.2013 14:41 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Hehe, přesně tohle mne napadlo, když jsem ten předchozí příspěvek psal, ale byl jsem líný to vytvořit.

    No, asi jsem měl místo slova "element" použít "entita". V XML dává větší smysl první varianta, ale v programu z toho nakonec stejnak bude muset vzniknout to druhé. Tohle je jeden z důvodů, proč nemám rád XML a mám rád JSON.
    Hello world ! Segmentation fault (core dumped)
    xkucf03 avatar 21.9.2013 15:08 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty

    XML je v tomhle právě lepší – můžeš v něm mít i vícenásobné atributy (jako třeba v LDAPu). Jak si to přemapuješ do objektového modelu je už na tobě – tam z toho nakonec asi nějaký ten seznam/sadu uděláš, ale taky to nemusíš na objekty mapovat vůbec – může se to mapovat na relační databázi nebo to jít do tisku nebo třeba volat nějaký kód na základě SAX událostí. Mapování XML na objekty je fajn, šetří to spoustu práce, ale ne vždy je nutné nebo žádoucí.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Josef Kufner avatar 21.9.2013 16:55 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    S tímhle mám právě zkušenost značně negativní. XML je tak výřečné, že jakákoliv práce s ním je příliš náročná. Vem si, že XML dokument má nějakých 12 typů uzlů, struktura může být docela šílená, a přitom neumí základní datové typy (např. int nebo bool), takže je potřeba je nějak emulovat (např. trojstavový bool (true/false/nedefinováno) je lahůdka).

    Oproti tomu takový JSON má tři typy uzlů (object, array a value). A data tvoří jednoduchý a snadno zpracovatelný strom, který je navíc 1:1 vyjádřitelný základními strukturami v dynamicky typovaných jazycích. Kdysi jsem byl smutný z toho, že v něm nejsou ani komentáře. Ale co ho intenzivněji používám, jsem za to rád, neboť i taková drobnost by značně komplikovala zpracování.
    Hello world ! Segmentation fault (core dumped)
    xkucf03 avatar 21.9.2013 17:20 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty

    xs:integer, xs:boolean a mnoho dalších včetně podtypů (např. text o určité délce, rozsahu nebo vyhovující regulárnímu výrazu). Trojstavový boolean uděláš jako nepovinný atribut nebo element typu xs:boolean.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Josef Kufner avatar 21.9.2013 17:30 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    To opravdu ke každému kusu XML vyrábíš i schema a ke všemu, co dostaneš ho máš?
    Hello world ! Segmentation fault (core dumped)
    xkucf03 avatar 21.9.2013 17:57 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty

    Pokud to XML má sloužit ke komunikaci1 s někým dalším, tak ano, schéma2 by tam vždy mělo být. Stejně musíš někde zdokumentovat, jak se ty elementy a atributy jmenují, jaká je kardinalita, jaké hodnoty se do nich mají zapisovat… Tak proč to neudělat rovnou ve strojově čitelné podobě?

    Jak to děláš u JSONu, když si chceš dohodnout nějaký formát pro výměnu dat?

    [1] nebo třeba konfigurák nějakého programu
    [2] pokud je někomu zatěžko psát XSD, tak může napsat třeba Relax NG v kompaktní syntaxi, to počítám taky jako schéma

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Josef Kufner avatar 21.9.2013 21:35 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Stejně ;-)

    Ale nepotřebuju to k tomu, abych rozeznal true od "true", takže mám lepší šanci správně interpretovat data bez schema.

    Co jsem tím však chtěl říct je, že převod z XML do interní reprezentace v programu je zbytečně komplikovaný, protože XML je příliš mocné. Tím přidělává práci a zesložiťuje programy, tedy minimálně jejich načítací a ukládací části (nemyslím jen XML parser, ale i to, co interpretuje samotná data).
    Hello world ! Segmentation fault (core dumped)
    xkucf03 avatar 21.9.2013 22:15 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Stejně ;-)

    Vím, že to existuje, ale ještě jsem to nikoho neviděl používat v praxi. Zato XSD a Relax NG schémata potkávám běžně. (a ne, nemělo by to být selektivní slepotou, protože JSON API vídám – bohužel – celkem často)

    Ale nepotřebuju to k tomu, abych rozeznal true od "true", takže mám lepší šanci správně interpretovat data bez schema.

    Když jen tak nakoukneš na nějakou ukázku dat, abys měl hrubou představu, tak je to celkem jedno – stejně u toho musíš přemýšlet a vycházet ze svých zkušeností – když např. někde čteš <price/> tak tě napadne, že to uvnitř asi bude cena, jestli to chápeš jako "490" nebo 490 je v tuhle chvíli jedno.

    Když ten formát chceš seriózně používat a vytvářet v něm i vlastní data nebo spolehlivě pracovat s cizími daty, tak stejně potřebuješ kompletní a závaznou dokumentaci k dané verzi formátu. A tam se dozvíš i o atributech a elementech, které v těch ukázkových datech nebyly, zjistíš z toho kardinalitu („aha, tohle tam může být víckrát“) nebo význam hodnot – např. že u některých se nepoužívá znaménko mínus a píší se tam jen nezáporná čísla, protože ten zápor je implicitní (např. uvnitř <sleva/>) nebo jak se zapisují procenta (může to být 0-1 s desetinnými místy ale taky 0-100). JSON rozlišuje jen tři primitivní datové typy (string, number, boolean), neříkám, že je to úplně na nic, ale je to takové polovičaté – jen zlomek informací, které k práci s nějakým formátem nebo API potřebuješ. Přijde mi lepší mít ten základní formát/syntaxi jednodušší, tohle tam neřešit (čísla a booleany zapisovat do stejných uvozovek jako texty) a pak mít komplexní typový systém ve schématu.

    Tím přidělává práci a zesložiťuje programy, tedy minimálně jejich načítací a ukládací části (nemyslím jen XML parser…

    Parsery jsou stejně už napsané a taková zátěž to taky není. Ale kde je potřeba maximální efektivita, tam je stejně blbost používat textový formát a bude to binární.

    …ale i to, co interpretuje samotná data).

    XInclude a entity ti předžvýká parser. A ty už si pak odchytíš jen to, co tě zajímá – určité elementy, atributy a text.

    Nebo použiješ mapování mezi XML a objekty – to už je pro tebe jen pár anotací ve třídách a nic víc neřešíš, funguje to samo :-)

    <xkucf03/>

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Josef Kufner avatar 21.9.2013 22:55 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Ftip je v tom, že z těch několika primitivních typů jsou poskládány ty komplexní. A protože je těm primitivním typům dobře rozumět, není schéma tak důležité, takže se s ním povětšinou nikdo neobtěžuje. Navíc XML ani JSON schema neobsahují žádné sémantické informace a nezvládají složitější validace dat, takže si s tím člověk beztak nevystačí a tak jako tak to skončí u obyčejné dokumentace. I když z té se automatické doplňování nenakrmí, to jo.

    S XInclude a dalším zpracováním v parseru, třeba i jen vynecháním komentářů nebo expanze entit, je problém, když chceš dokument načíst, upravit a zas uložit. Jakmile dokument něco takového obsahuje, je velmi těžké až nemožné to při strojové editaci (např. z GUI) zachovat. JSON zde má výhodu v tom, že platí: json_encode(json_decode(string)) == string (až na nevýznamné bílé znaky).
    Hello world ! Segmentation fault (core dumped)
    xkucf03 avatar 21.9.2013 23:54 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Navíc XML ani JSON schema neobsahují žádné sémantické informace a nezvládají složitější validace dat, takže si s tím člověk beztak nevystačí a tak jako tak to skončí u obyčejné dokumentace. I když z té se automatické doplňování nenakrmí, to jo.

    V XML Schematu toho uděláš většinu včetně sémantických informací a dokumentace jednotlivých elementů (to ti pak může zobrazovat editor při napovídání podobně jako třeba u Javy zobrazuje JavaDoc). A složité validace můžeš dělat ve Schematronu – tam už ti editor napovídat nemůže, protože to není deklarace očekávaných struktur, ale soubor pravidel, která mají být splněna – dají se jen validovat – takže je dobré kombinovat oboje: co jde, udělat v XSD a ten zbytek ve Schematronu.

    S XInclude a dalším zpracováním v parseru, třeba i jen vynecháním komentářů nebo expanze entit, je problém, když chceš dokument načíst, upravit a zas uložit. Jakmile dokument něco takového obsahuje, je velmi těžké až nemožné to při strojové editaci (např. z GUI) zachovat.

    To je pravda, je to minimálně hodně kompilované. Ale je potřeba říct, že JSON je v tomhle „lepší“ jen díky tomu, že tuto funkcionalitu nenabízí. Je to asi jako říct: „naše kuchyň je lepší, protože v ní nejsou žádné nože a nemůžeš se pořezat“ – no jo, jenže nemůžu ani krájet. S XML můžeš dosáhnout téhož výsledku, pokud se sám omezíš a nebudeš ty XIncludy používat (případně se smíříš se změněným výstupem nebo napíšeš poměrně složitý program), ale JSON tě takto omezuje nevyhnutelně, nemůžeš si vybrat, zda ano nebo ne, prostě tam ta funkcionalita chybí.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Josef Kufner avatar 22.9.2013 01:07 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Ta funkcionalita tam nechybí. Ona tam ani nemá být. Interpretace dat je záležitostí aplikační logiky a aplikační logika nemá v datech co dělat. Pokud se má s daty před načítáním něco stát, je na místě použít preprocesor/generátor, který je předchroupe (zde je pro XInclude, XSLT a podobné věci místo). Tím, že je to ale vestavěné už v parseru, se vše zbytečně komplikuje a aplikace nemá práci s daty plně pod kontrolou.
    Hello world ! Segmentation fault (core dumped)
    xkucf03 avatar 22.9.2013 10:41 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Parsery se dají konfigurovat, zpracování XInclude si můžeš vypnout a řešit si to na úrovni aplikace a mít to plně pod kontrolou. Vtip je v tom, že v XML máš standardizované značky pro vkládání externích souborů, zatímco v JSONu by sis je musel vymyslet – a někdo si vymyslí "include" : "/cesta/k/souboru" a někdo třeba "require" : "file:///cesta/k/souboru"
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    19.9.2013 11:15 Michal Karas | skóre: 45 | blog: /dev/random
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Ahoj, já bych si k tomu zkusil asi udělat XML Schema/RELAX NG a vyzkoušel v nějakém chytrém javovském IDE, jak se s tím potom pracuje - hlavně co se týče automatického doplňování.
    20.9.2013 12:27 Jindřich
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    na to je atribut xml:lang
    20.9.2013 12:43 Kit
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Významnou vlastností XML je fakt, že si v rámci aplikace mohu zvolit takové značky, které mi vyhovují. Používání standardizovaných značek je občas výhodné, ale velmi často je silně obtěžující při zpracování.

    Dokument XML by měl být vždy tak jednoduchý, jak je to jen možné.
    20.9.2013 13:28 Jindřich
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    To určitě ano, ale proč nepoužít něco, co je součástí specifikace XML 1.0. (Dá se např. očekávat, že některý SW bude na toto připraven.) Zajímavé info zde. Tím Vám ale nic nevnucuji.
    xkucf03 avatar 21.9.2013 13:48 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty

    Variantu A bych použil asi leda v případě, že by jazyky byly pevně dané – tzn. měl bys tam třeba místní název a pak anglický název podle nějakého ISO standardu (např. názvy zemí).

    Ve většině případů bych použil variantu B. Jednak nemusíš měnit schéma, když ti přibude nový jazyk. A jednak jsou to generické struktury a můžeš je zpracovávat jednotným způsobem – např. projdeš v cyklu1 všechny elementy element a jazyk je jen jejich atributem.

    V případě A bys musel mít v programu/šabloně vyjmenované všechny jazyky (názvy elementů) a ty zpracovat v cyklu. Nebo bys mohl zpracovat v cyklu všechny (*) elementy uvnitř element bez ohledu na název těch elementů (název bys interpretoval jako hodnotu – jazyk), což taky jde, akorát to má nevýhodu, kdybys tam chtěl vnořit na stejnou úroveň ještě jiné elementy, které nejsou jazykem, ale obsahují třeba nějaké společné informace – tak je nemáš jak odlišit od elementů obsahujících jazykové verze – leda šoupnout do jiného jmenného prostoru.

    Nakonec se dá použít oboje. Akorát v případě B můžeš mít i volnější schéma – povolíš element element a atribut lang, ale už nebudeš omezovat jeho hodnoty. V případě A bys to mohl taky udělat takto volné (povolit libovolné elementy uvnitř element) ale pak už bys ve schématu nemohl definovat vnitřní strukturu těchto libovolných elementů – což v případě B můžeš, např. to bude nějaký značkovací jazyk nebo prostý text vyhovující nějakému regulárnímu výrazu atd. No vlastně ve Schematronu by asi i tohle šlo :-) Ale fakt bych spíš doporučoval to B.

    [1] nebo na ně aplikuješ XSLT šablonu

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    21.9.2013 13:58 Kit
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    V určitých extrémních situacích může mít význam i další varianta zápisu
    <element cs="Cesky text" en="Anglicky text" fr="Francouzsky text"/>
    21.9.2013 18:14 potato
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Frameworkoví puristi teď budou prskat, ale po praktických zkušenostech si myslím, že nejlepší je mít každý překlad v samostatném dokumentu.
    xkucf03 avatar 21.9.2013 18:22 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty

    Zejména když část položek bude překládaných a část společných, že?

    Když už to roztahat po víc souborech, tak aspoň použít gettext – k tomu existuje řada nástrojů, které pomohou překladatelům.

    To bych ale dělal jen když tam toho překládání bude hodně a bude potřeba ho různě aktualizovat, přidávat překlady atd. – pokud je to pár položek, tak bych to nechal v jednom XML.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    21.9.2013 18:28 potato
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Pár položek je samozřejmě jiná věc, mluvíl jsem o zkušenostech s věcmi velikosti knihy. Společné obrázky, tabulky, rovnice, ... se dají xincludnout. A běžná situace, kdy nespolečné části obsaují teoreticky společné části, které ale mohou obsahovat malé nespolečné kousky, nemá AFAIK pěkné řešení v žádném hierarchickém modelu.
    xkucf03 avatar 21.9.2013 18:36 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty

    Proč ne? Prostě si jen ty části (elementy) označíš příznakem[což nemusí být jen jazyk, můžeš mít i různé další pohledy na ta data – třeba stručnou a plnou verzi] a pak si vyfiltruješ (třeba XSL šablonou to jde hezky) ty společné části + části s daným příznakem a vytáhneš si z toho třeba českou stručnou verzi.

    Tady bych doporučil použít ten obalový element kolem těch alternativních verzí/hodnot – pak se dá líp uhlídat, abys měl všude potřebné varianty (všechny jazyky) nebo měl aspoň jednu jako výchozí (např. když chybí český překlad, vypíše se aspoň anglický text + nějaké varování, že tohle ještě není přeloženo).

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    21.9.2013 18:56 potato
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Co si označím příznakem? Ve chvíli, kdy to je v jazykově rozdělené části, tak už tam mám tu vnořenou skoro-společnou fyzicky několikrát (nebo xincluduji/entituji/...).

    Vypsat varování, že to není přeloženo, je typický informatický přístup. Ve skutečnosti ale není cílem libovat si nad procesem, ale dát lidem dokumenty, které jim k něčemu budou a budou dávat smysl samy o sobě. V nich je možné, aby třeba namísto dvou posledních odstavců jedné sekce a dvou dalších někdo napsal jednu stručnou, než se dostane k tomu přeložit to pořádně...
    xkucf03 avatar 21.9.2013 19:24 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    Ve chvíli, kdy to je v jazykově rozdělené části, tak už tam mám tu vnořenou skoro-společnou fyzicky několikrát

    Tak jsi to asi jazykově rozdělil na příliš vysoké úrovni, je to potřeba dělit opravdu až tam, kde se liší ty texty. Ale dovedu si představit i případ, kdy to nepůjde: některé kapitoly budeš mít jen v některých jazykových verzích, pak to musíš jazykově rozdělit výš, ale zase někde uvnitř budou společné části – to bych pak řešil buď tím XIncludem nebo odkazem na ID v jiné části dokumentu (a tam opět můžou být některé části označené příznakem pro určitý jazyk).

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    21.9.2013 18:31 Kit
    Rozbalit Rozbalit vše Re: Jak strukturovat xml - multijazykové dokumenty
    To je bezvadné řešení v případě, kdy zdrojový dokument je jeden se všemi jazyky a zmíněné překlady vzniknou jeho kompilací. Výběr jazyka aplikace se tím zjednoduší na výběr souboru.

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.