我需要提供一个带有参数的XSLT样式表,该参数可能包含在运行时确定的不同数量的数据。我试图在样式表中获得不同数量的唯一QNames,然后在评估XPath字符串时引用它们。我最初的尝试是将此数据作为单独的XML文档提供,然后使用document()
函数通过<xsl:variable>
访问其内容。然而,这在我的案例中被证明是麻烦的。
由于我依赖于样式表的痛苦1.0版本,需要使用dyn:evaluate
exslt函数将字符串值计算为XPath表达式,该函数拒绝在XPath变量中处理结果树片段(如上所述{{3我决定通过<xsl:param>
将样式表的参数作为空格分隔的值字符串提供给每个值,其中每个值都是Clark表示法中的限定名称,例如{org:example:foo}name
。
此解决方案有效,但我担心使用<xsl:param>
这样的事情。应该以上述方式滥用<xsl:param>
吗?在执行此操作时是否应该注意任何限制,例如长度限制?
答案 0 :(得分:2)
听起来好像你正在使用Java和Xalan。由于您询问的是限制,因此答案将特定于您使用的产品,因此您确实需要在问题中指明。
您可以传递给xsl:param的数据类型会有限制,但看起来好像您已经通过将数据编码为单个字符串来解决这个问题,并且每个处理器都可能接受字符串值而不是麻烦。
对于字符串的长度,任何Java处理器都不太可能施加比Java字符串的最大长度更短的限制,这类似于2 ^ 31个字符,并且你&#39;在你达到这个限制之前,你的内存可能会耗尽。