xslt - xslt:函数中不存在上下文项
问题描述
我的 xml 池就像
<POOL>
<CUSTOMER>
<GROUP_ID>
2
</GROUP_ID>
</CUSTOMER>
</POOL>
我要调用我的函数,看起来像
<xsl:value-of select="nck:serviceNo(' ',' ')"/>
我的功能是:
<xsl:function name="nck:serviceNo" as="xs:string">
<xsl:param name="spacer1" as="xs:string"/>
<xsl:param name="spacer2" as="xs:string"/>
<xsl:variable name="num">
1010<xsl:value-of select="$spacer1" />2020 3030<xsl:value-of select="$spacer2" />
<xsl:choose>
<xsl:when test="/POOL/CUSTOMER/GROUP_ID = 2" >
10
</xsl:when>
<xsl:otherwise>
0
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:sequence select="$num"/>
</xsl:function>
我的错误是:
在 xsl 的表达式中的字符 1 处键入错误:test.xsl 的第 31 行第 60 列上的 when/@test:XPDY0002 前导 '/' 不选择任何内容:上下文项不存在 在样式表编译期间报告了错误
我需要一个工作区来在函数中提供池,任何人都可以帮忙
解决方案
添加一个参数以传入一个节点,例如<xsl:param name="group-id"/>
并传入例如<xsl:value-of select="nck:serviceNo(' ',' ', /POOL/CUSTOMER/GROUP_ID)"/>
,然后您在其中 ckeck<xsl:when test="$group-id = 2">
或声明一个全局参数或变量,例如<xsl:param name="main-root" select="/"/>
并使用 eg <xsl:when test="$main-root/POOL/CUSTOMER/GROUP_ID = 2">
。
推荐阅读
- r - 考克斯模型森林图
- c# - 滚动到底部时,ListView 会自动添加更多内容
- huawei-mobile-services - IAP 回调地址
- r - devtools::check() - 没有名为“Matrix”的包
- flutter - ListView.builder 到达列表末尾并向后滚动后返回起始位置
- python - 补丁是否可以在 SemVer 中包含添加内容?
- c++ - wxTimer 与 Bind() 绑定后未调用回调
- arrays - Ruby:比较两个数组数组的有效方法
- firebase - 未处理的异常:[firebase_storage/object-not-found] 所需参考处不存在对象
- debugging - 如何找出最初创建淘汰赛 observable 的位置(在哪个 .js 文件中)?