XSLT 1.0 函数从字符串中删除定界符
XSLT 1.0 Function to remove a delimiter from a string
我正在尝试创建一个可重用的 XSLT 1.0 函数来从任何给定的字符串中删除定界符。由于我在第 3 方应用程序中工作,源 XML 和编译器对我来说是黑盒。如果我使用,我的代码会产生很好的结果:
<xsl:value-of select="translate(variable,$delimiter,'')"/>
对于我要清理的每个字符串,但是如果我尝试通过调用 <xsl:value-of select="ecm:rmdelim(variable)"/>
使用我在下面编写的函数,结果会在该点截断。我错过了什么?
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsl:stylesheet version="1.0"
xmlns="http://www.w3.org/1999/XSL/Transform"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:func="http://exslt.org/functions"
xmlns:ecm="http://tempuri.org/mynamespace"
exclude-result-prefixes="ecm"
extension-element-prefixes="func"
>
<xsl:output method="text" />
<!-- set the delimiter -->
<xsl:variable name="delimiter" select="'^'"/>
<!-- create function to remove delimiters from a string -->
<func:function name="ecm:rmdelim">
<xsl:param name="arg"/>
<func:result select="translate($arg,$delimiter,'')"/>
</func:function>
只有当您的处理器支持 EXSLT func:function
扩展元素时,您才能编写自己的函数。很少有处理器这样做。您可以通过查看以下结果来了解您是否这样做:
<xsl:value-of select="element-available('func:function')"/>
Since I am working in a 3rd party application, the source XML and the compiler are black-box to me.
您可以通过应用 identity transform 来查看来源 XML 的样子。
您可以通过以下方式识别处理器:
<xsl:value-of select="system-property('xsl:vendor')"/>
我正在尝试创建一个可重用的 XSLT 1.0 函数来从任何给定的字符串中删除定界符。由于我在第 3 方应用程序中工作,源 XML 和编译器对我来说是黑盒。如果我使用,我的代码会产生很好的结果:
<xsl:value-of select="translate(variable,$delimiter,'')"/>
对于我要清理的每个字符串,但是如果我尝试通过调用 <xsl:value-of select="ecm:rmdelim(variable)"/>
使用我在下面编写的函数,结果会在该点截断。我错过了什么?
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsl:stylesheet version="1.0"
xmlns="http://www.w3.org/1999/XSL/Transform"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:func="http://exslt.org/functions"
xmlns:ecm="http://tempuri.org/mynamespace"
exclude-result-prefixes="ecm"
extension-element-prefixes="func"
>
<xsl:output method="text" />
<!-- set the delimiter -->
<xsl:variable name="delimiter" select="'^'"/>
<!-- create function to remove delimiters from a string -->
<func:function name="ecm:rmdelim">
<xsl:param name="arg"/>
<func:result select="translate($arg,$delimiter,'')"/>
</func:function>
只有当您的处理器支持 EXSLT func:function
扩展元素时,您才能编写自己的函数。很少有处理器这样做。您可以通过查看以下结果来了解您是否这样做:
<xsl:value-of select="element-available('func:function')"/>
Since I am working in a 3rd party application, the source XML and the compiler are black-box to me.
您可以通过应用 identity transform 来查看来源 XML 的样子。
您可以通过以下方式识别处理器:
<xsl:value-of select="system-property('xsl:vendor')"/>