Ich habe eine XSLT, in der ich eine Funktion definiert habe. Der Transformator sagt, dass jede Funktion ihren Namespace haben muss, also habe ich einen Dummy-Namespace im Kopf des XSLT deklariert, aber jetzt erscheint dieser Namespace auch im Root-Tag des Ausgangs! kann nicht erraten, wie dies zu vermeiden ...Namespace in xslt im Root-Tag platziert
Beispiel:
input.xml
<something>
<mytag> test </mytag>
</something>
Test.xsl
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://function" version="2.0" >
<xsl:output method="xml" indent="yes" />
<xsl:function name="fn:trim" >
<xsl:param name="pStr"/>
<xsl:value-of select="replace($pStr,'^\s*(.+?)\s*$', '$1')"/>
</xsl:function>
<xsl:template match="something">
<root><xsl:value-of select="fn:trim(mytag)" /></root>
</xsl:template>
</xsl:stylesheet>
out.xml
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:fn="http://function">test</root>
Es ist die xmlns:fn="http://function"
im <root>
Tag, das ich aus meiner Ausgabe entfernen möchte. Weiß nicht ob es eine Rolle spielt, aber ich benutze Saxon-HE-9.4.
Wenn Sie möchten, dass Ihre Funktion den String-Wert zurückgibt, der durch Ihren 'replace'-Aufruf berechnet wurde, verwenden Sie' ' wie bei '