Я построил шаблон схемы и обнаружил непредвиденную ошибку.XPath/Schematron эквивалент «xsl: value-of»
Я попытался соединить строку (например, «Robinson 1983») с выходом функции xsl. Моя функция работает как этот
<xsl:value-of select="surname"/><xsl:text> </xsl:text><xsl:value-of select="year"/>
Так, в Schematron
test="'Robinson 1983' = ...function-call..."
вернула «ложь», потому что выход функции является последовательность, состоящая из трех элементов текста.
я был в состоянии исправить это с помощью XSLT
<xsl:variable name="output"><xsl:value-of select="...function-call..."/></xsl:variable>
и
test="'Robinson 1983' = $output"
вернул "истинный", как и ожидалось.
Но мне интересно: как это решить в «чистом» Schematron/XPath? Есть ли какой-либо эквивалент xsl: value-of? То есть превращая последовательность в строку, избавляясь от другого содержимого. Я думаю, что это одна из самых важных вещей, которые вы хотите сделать в XPath, но я не нашел решения.
Существует ['fn: string-join()'] (http://www.w3.org/TR/xpath-functions/#func-string-join). Или просто используйте 'concat (фамилия, год, год)' прямо сейчас. – Tomalak