Avatar billede sbm Nybegynder
20. april 2009 - 16:22 Der er 3 kommentarer og
1 løsning

Namespace problematik omkring xsi-type

Jeg forsøger at opbygge nogle regler for konvertering af noget XML. Der findes bl.a. en gen-spec struktur, hvor en bestemt entitet kan være en af flere forskellige specialiseringer af denne entitet. Det kan så eksempelvis være angivet som

<ns5:entitet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns10:specialisering1">

Jeg har så først lavet en regel der matcher entitets-typen:

<xsl:template match="namespace:entitet">

Og den rammer i princippet fint, men den rammer dem alle, og behandler dem alle ens. Jeg vil gerne kunne identificere om der er tale om specialisering1, 2 eller 3. Det har jeg så opnået med følgende:

<xsl:template match="namespace:entitet[@xsi:type = 'ns10:specialisering1']">

MEN! Den matcher på hele strengen 'ns10:specialisering1', og det er ikke godt, da jeg ikke kan regne med at det altid er ns10 der er namespace. Jeg ved godt præcis hvilket namespace det ligger på, men jeg ved ikke hvad det er mappet til i det enkelte dokument, idet XML'en er autogenereret.

Så det korte af det lange. Hvordan får jeg det tilpasset, så det matcher uanset om der står ns1 , ns5 eller ns[hvad-som-helst] som namespace?
Avatar billede arne_v Ekspert
21. april 2009 - 03:08 #1
Er det ikke bare at erklære namespace ns10 i dit XSLT stylesheet?

Alternativt prøv:

<xsl:template match="namespace:entitet[@xsi:type = '{http://bla.bla/bla}specialisering1']">
Avatar billede sbm Nybegynder
21. april 2009 - 10:12 #2
Nej, den genkender ikke "ns10" som værende et namespace. Det lader til at være ren streng-sammenligning. Deraf problemet. :)

Jeg får prøvet dit forslag af i løbet af formiddagen.
Avatar billede sbm Nybegynder
21. april 2009 - 11:23 #3
Nix. :-(

Det lader som sagt til at være ren streng-sammenligning.
Avatar billede sbm Nybegynder
26. februar 2010 - 10:30 #4
Oprydning i gamle indlæg.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester