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?