함수를 정의한 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>
그것은을의 xmlns:fn="http://function"
에 <root>
내 출력에서 삭제할 것인지 태그입니다. 중요한지 모르겠지만 Saxon-HE-9.4를 사용하고 있습니다.
간단히 추가하십시오 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://function" version="2.0" exclude-result-prefixes="fn">
. 또한 fn
일반적으로 XPath 함수 네임 스페이스에 사용되므로 코드 사용자의 혼동을 피하기 위해 다른 접두사를 사용할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다