søndag den 30. november 2008

gruppering et XML-dokument baseret på element navne

Det har været et stykke tid siden vi har talt om nogle "rene XML "problem skal løses med XQuery, så når jeg læser denne un - besvaret post Stylus Studio Developer Network Jeg troede at det var en god chance for at tale om det her som en interessant XQuery f.eks.
Problemet indebærer at flytte fra en fast XML-struktur som denne: ... til en mere hierarkisk XML, der "eksploderer" den implicitte struktur skjulte i den oprindelige XML element navne: I sidste ende er en sammenslutning problem, men en smule vanskeligere end normalt, fordi det drejer sig om anerkendelse og eksploderende grupper fra den oprindelige XML element navne.
Selvom XQuery 1.0 virker ikke 't støtte gruppe udtrykkeligt, fn: særskilte-værdier () funktion er yderst nyttige i at løse sammenslutning problemer. fn: særskilte-værdier () får en sekvens af atomare værdier i input og returnerer en sekvens der indeholder de samme værdier med eventuelle identiske fjernet. Det hjælper meget med vores problem, som vi kan hente, hvad alle de unikke øverste niveau kategorier (MAINx), og hvad den entydige sub kategorier (SUBy) for hver øverste niveau en. Tilføj til, at en meget enkel brug af fn: tokenize () funktion, der opdeler et navn gerne "MAIN1_SUB1_COLNAME1" i en sekvens gerne ( "MAIN1", "SUB1", "COLNAME1"), og det problem er let løst; her er XQuery jeg kom op med: , der genererer følgende XML resultat, som er det, vi søger: Et simpelt eksempel, men det gør brug af nogle nyttige funktioner og strukturer i XQuery, bare for at minde os om, at mens vi holder taler om, hvordan nyttigt XQuery er at beskæftige sig med heterogene datakilder og løftestang XML Data Model som en abstraktion fra de fysiske detaljer af de data, vi beskæftiger os med, XQuery er ekstremt kraftfuld og fleksibel også i den "lettere" tilfælde, hvor du har brug for at manipulere og re-arrangere XML strukturer .