1
私は関数を定義したXSLTを持っています。 トランスフォーマーには名前空間が必要なので、XSLTの先頭にダミーの名前空間を宣言しましたが、この名前空間は出力のルートタグにも表示されます。 は...これを回避する方法を推測することはできませんxsltの名前空間がルートタグに配置されています
例:
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>
出力から削除したい<root>
タグのxmlns:fn="http://function"
重要かどうかは分かりませんが、私はSaxon-HE-9.4を使用しています。
あなたの関数が 'replace'呼び出しで計算された文字列値を返すようにするには、' 'と同様に '