XSLT i xmlns
• tech • 106 słów • 1 minuta czytania
Mam problem z przestrzeniami nazw w transformacji XSLT - brak nazwy lub prefiksu.
Po części problem opisano tutaj:
- XSLT gotcha with default namespace set with xmlns
- XSLT 1.0 Pattern Matching Tips for Source Documents with Namespaces
Dokładnie to chcę, aby XML:
<iq type="get" id="ab0ea">
<query xmlns="jabber:iq:roster"/>
</iq>
oraz
<iq xmlns='jabber:client' type="get" id="ab0ea">
<query xmlns="jabber:iq:roster"/>
</iq>
Był przetwarzany przez ten sam “template match” XSLT-a:
<xsl:template match="/iq"/>
lub
<xsl:template match="/xmpp:iq"/>
Może ktoś potrafi mi pomóc? Kombinowałem z różnymi metodami i nie mogę uzyskać wymaganego rezultatu.
Wiem, że w XSLT 2.0 wystarczyłoby dodanie 1 linijki:
xpath-default-namespace="jabber:client"
ale niestety korzystam z libxslt, a on na razie nie supportuje wersji 2.0.
Komentarze (2)
Spróbuj dodać do elementu
xsl:stylesheet
atrybutxmlns:xmpp="jabber:client"
.Nie rozwiąże to problemu, bo wtedy elementy bez namespace’a nie będą “łapane” przez ten warunek.