スキーマトロン パターンを作成したところ、予期しないエラーが見つかりました。
文字列 ("Robinson 1983" など) を xsl 関数の出力と比較しようとしました。私の機能はこのように機能します
<xsl:value-of select="surname"/><xsl:text> </xsl:text><xsl:value-of select="year"/>
だから、スキーマトロンでは
test="'Robinson 1983' = ...function-call..."
関数の出力は 3 つのテキスト要素で構成されるシーケンスであるため、"false" が返されました。
xsltを使用して修正できました
<xsl:variable name="output"><xsl:value-of select="...function-call..."/></xsl:variable>
と
test="'Robinson 1983' = $output"
期待どおり「true」を返しました。
しかし、私は疑問に思っています:これは「純粋な」Schematron/XPathでどのように解決されるのでしょうか? xsl:value-of に相当するものはありますか? つまり、シーケンスを文字列に変換して、他のコンテンツを取り除きます。これは、XPath で実行したい最も重要なことの 1 つだと思いますが、解決策が見つかりませんでした。