xslt分析字符串不允许" value-of"选择

时间:2014-11-03 13:34:01

标签: xslt

In the template below I'm trying to grab some information from an existing XML document and to re-write that same document with the addition of some specific ids.

这是xml的片段:

<item id='ta-' type='articulus'>
   <fileName filestem='ta-'>ta-.xml</fileName>
   <title>Super Sent., lib. 1 d. 1 q. 3 a. 1 tit.</title>
   <questionTitle>Utrum utendum sit omnibus aliis a Deo</questionTitle>
</item>

在下面的模板中,正则表达式效果很好。但是尝试重建并失败。 Saxon告诉我'XPTY0019:'/'的第一个操作数的必需项类型是node();提供的值具有项类型xs:string'。我不确定这意味着什么。但我认为,在“analyze-string”元素之后,我不再在树中的正确节点上成功执行“value-of”选项。(请参阅下面的模板)。感谢您的帮助。

    <xsl:template match="item">
        <xsl:analyze-string select="./title" regex="([0-9]+)[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^0-9]+([0-9]+)">
            <xsl:matching-substring>
                <xsl:variable name="fs"><xsl:value-of select="concat('ta-l', regex-group(1) ,'d', regex-group(2) ,'q', regex-group(3),'a',regex-group(4))"></xsl:value-of></xsl:variable>
            <item xml:id="{$fs}">
                <fileName filestem='{$fs}'><xsl:value-of select="concat($fs, '.xml')"/></fileName>
                <title><xsl:value-of select="./title"/></title>
                <questionTitle><xsl:value-of select="./questionTitle"/></questionTitle>
            </item>
            </xsl:matching-substring>
            </xsl:analyze-string>
    </xsl:template>

1 个答案:

答案 0 :(得分:2)

您需要将上下文节点存储在analyze-string之外

<xsl:variable name="item" select="."/>

然后在analyze-string里面你可以使用

            <title><xsl:value-of select="$item/title"/></title>
            <questionTitle><xsl:value-of select="$item/questionTitle"/></questionTitle>