我对 XSL(T) 很陌生。我不确定它是否相关,但我正在使用 IBM DataPower。
我正在尝试使用 XSL 解析传入的 URI,如下所示:
http://ip:port/Nucleus_v2.9.3/SomeEndPoint
我希望将版本 (2.9.3) 提取到一个变量中,并将目标 (SomeEndPoint) 提取到第二个变量中。我正在尝试使用带有两个参数(上面的 URI 和斜杠字符)的递归模板。在模板中,我想使用一个元素来跟踪 URI 并将这两个值捕获到变量中。
<xsl:template name="parseIncomingURI"> <xsl:param name="string" /> <xsl:param name="char" /> <xsl:choose> <xsl:when test="contains($string, $char) and contains($string, 'Nucleus_v')"> <xsl:call-template name="parseIncomingURL"> <xsl:with-param name="string" select="substring-after($string, $char)" /> <xsl:with-param name="char" select="$char" /> </xsl:call-template> </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose> </xsl:template>
我不确定我正在尝试什么是可能的,我可能误解了模板的含义。我想在上面的“when”元素中分配版本,然后在“otherwise”中分配端点变量(这将在递归中遇到最后一个斜杠后触发)。
值得一提的是,我只是在 XSL 的其他地方调用此模板,并将原始 URI 和一个“/”字符作为两个初始参数传递。我在“when”元素中意识到,我需要通过一些 substring-before 和 substring-after 函数来获取版本。我没有在此处包含该代码,因为我认为它会使示例混乱。
我在正确的轨道上吗?任何帮助或指示将不胜感激。我很乐意根据需要编辑和添加更多信息。
谢谢,克里斯