| xslt transformacija | ||
|---|---|---|
|
boss98
5. maj 2011 07:13:02
Pridružen od: 20. feb 2009 26 objav 7 13 0 |
#1
Prosil bi, če mi pomagate: imam xml iz tujine, ki ga hočem transformirat v naš standardni xml format. Notri je tudi za vsak item vrstica: rad bi dobil sledeč izpis: <table6>2 SOBNO STANOVANJE NA TABORU</table6> Poizkusil sem že na 2 načina: če pa probam takole: <xsl:template match="PropertyDescriptions/PropertyDescription"> pa je rezultat: <table>2 SOBNO STANOVANJE NA TABORU</table> Prosim, če mi pomagate, da dobim pravilni izpis tagov A.K.A. bosty33
|
|
|
perro
5. maj 2011 11:03:07
Pridružen od: 4. jun 2010 32 objav 47 6 3 |
#2
Problema sta dva. Problem št. 1: Pri prvi kodi je problem v tem, da loop-aš po DescriptionType namesto po PropertyDescription. Ker potem DescriptionText ni child od DescriptionType-a, ti vrne prazno vrednost za DescriptionText. Kar ti pri drugi varianti sicer uspe, ampak potem se pa znajdeš pred 2. problemom. Problem št. 2: je pa v tem, da je XML naravnost debilen. Problem je v DescriptionType-u. Če je že avtor XML-ja hotel izpostaviti tip opisa, potem bi ga lahko navedel kot atribut (xml varianta 1): ali pa kot polje (xml varianta 2): ali konec koncev vse skupaj precej krajše (brez DescriptionText) takole: Predlagam ti, da s kakim editorjem in uporabo search/replace popraviš vrstice z DescriptionType iz v V tem primeru (glej xml varianta 2) bo XSLT koda za izpis naslednja: Izvirni greh je torej XMLju "iz tujine" (Saturn, Jupiter?) in ne toliko v "domačem" XSLTju... :) |
|
|
boss98
5. maj 2011 12:35:25
Pridružen od: 20. feb 2009 26 objav 7 13 0 |
#3
Hvala @perro, ampak ali mi lahko pomagaš, da obstoječega spremenim v željeno? Partner iz tujine, ki pošilja svoj xml je tako nefleksibilen in vztraja pri svojem. A.K.A. bosty33
|
|
|
perro
6. maj 2011 08:31:19
Pridružen od: 4. jun 2010 32 objav 47 6 3 |
#4
Kot sem že omenil v prejšnjem postu, spremeni vse vrstice tipa v Kako to narediš (razen na roke). Če si na Linuxu ali Mac OS, potem izvedi naslednje: Ukaz sed ti s pomočjo regularnih izrazov (RE) zamenja tisti atribut v željeno obliko (xml varianta 2 iz prejšnjega posta). Če si na Windows, instaliraj Linux... :) Lahko naložiš CygWin, nek približek Linuxa za na Windowse. Še bolje, zalaufaj kak Linux Live CD in naredi samo to, in shrani rezultat na kak ključek. Sicer obstaja nek urejevalnik UltraEdit, ki ima možnost uporabe regularnih izrazov pri opearciji serach/replace. Kako boš pa prevedel klobaso iz sed-a v UltraEdit, je pa že drugo vprašanje. Tudi nisem prepričan, da bo vse skupaj delovalo. Sej vem, da izgledajo zoprno, ampak RE so res eno močno orodje za premetavanje v takih situacijah. No, ko bo vse to za teboj, pa uporabi XSLT s konca prejšnjega posta. |
|