Thomas J.S.: Namespace ermitteln

Beitrag lesen

Hallo,

<xsl:variable name="NS" select="document('schema.xsd')/*[1]/@targetNamespace"/>
<xsl:value-of select="name(//*[namespace-uri() = $NS])"/>

So wäre es fein (ich parse mit xsl eine xml der verschieden xsd file zugeordnet sind) Also mein $NS hat den Inhalt der namespace-URI (geteste mit einer probeausgabe von $NS mit xsl:value-of). Die Anweisung danach  <xsl:value-of select="name(//*[namespace-uri() = $NS])"/> bringt dann aber nur Erfolg, wenn in meiner XML auch Element mit dem Namespace vorhanden sind. Also wenn keine Elemente des Namespace vorhanden sind, dann gibt mir auch substring-before(name(//*[namespace-uri() = $NS]),':') nicht den prefix aus.

Jein, wenn im Schema nur xmlns="" und nicht xmlns:foo="" mit targetNamespace benutzt wurde, wird substring-before(...) wirklich nichts bringen, weil dann ist beim Element: name() = local-name().
Aber sonst hast du recht, wenn kein Element aus dem Namenstaum verwendet wird, gibts auch nichts anzuzeigen.

Aber ich weiss nicht, was du wirklich erreichen möchtest, vielleicht gibt nohc andere Wege dafür.

Grüße
Thomas