1

我构建了一个 schematron 模式,发现了一个意外错误。

我试图将字符串(例如“Robinson 1983”)与 xsl 函数的输出进行比较。我的功能是这样的

<xsl:value-of select="surname"/><xsl:text> </xsl:text><xsl:value-of select="year"/>

所以,在 schematron

test="'Robinson 1983' = ...function-call..."

返回“false”,因为函数的输出是由三个文本元素组成的序列。

我能够使用 xslt 解决这个问题

<xsl:variable name="output"><xsl:value-of select="...function-call..."/></xsl:variable>

test="'Robinson 1983' = $output"

正如预期的那样回馈“真实”。

但我想知道:如何在“纯”Schematron/XPath 中解决这个问题?有没有等效于 xsl:value-of 的?即将一个序列变成一个字符串,去掉其他内容。我认为这是您想在 XPath 中做的最重要的事情之一,但我没有找到解决方案。

4

1 回答 1

0

我试图重新创建您的示例,但它对我来说非常有效,就像您首先对其进行编码一样。

我怀疑使用您的第一个 select 语句的函数:

<xsl:value-of select="surname"/><xsl:text> </xsl:text><xsl:value-of select="year"/>

将这些组合值作为单个字符串返回,但您的数据实际上可能包含多组(姓氏年份)字符串。

您的数据是否可能包含多组(姓氏年份)字符串?也许您的函数无意中一次返回多组。

于 2013-12-06T14:47:28.783 回答