Xslt分析字符串错误

时间:2014-02-12 20:34:37

标签: xslt

在下面的XML中,我试图从括号中的数字创建一个id。因此,我试图在开括号和右括号之间获取数字,然后将它们用作xmlid属性的一部分。

XML输入

<list>
<head>Commentator.</head>
<item>(32) Materia prima nullam formam habet omnino, nec universalem,
nec particularem, sed recipit primo formam universalem et medi-
ante illa, recipit omnes alias formas usque ad individuales.</item>
<item>(33) Item Commentator : species non est forma tantum, sed etiam
quid aggregatum ex materia et forma.</item>
<item>(34) Item universale non habet esse, nisi secundum quod est in anima.</item>
</list>

XSLT

<xsl:template match="tei:item">
    <xsl:analyze-string select="." regex="\(([^\)]*)\)"/>
    <xsl:variable name="numberid"><xsl:value-of select="regex-group(1)"/></xsl:variable>
    <item xml:id="aa-meta-{$numberid}"><xsl:apply-templates/></item>
</xsl:template>

但它不起作用。

撒克逊给了我以下错误。

XTSE1130:必须至少有一个xsl:matching-substring或xsl:non-matching-substring元素

请帮忙。

1 个答案:

答案 0 :(得分:0)

xsl:matching-substring看起来based on the spec至少需要xsl:non-matching-substringxsl:analyze-string element作为<xsl:analyze-string select="body" regex="\[(.*?)\]"> <xsl:matching-substring> <cite><xsl:value-of select="regex-group(1)"/></cite> </xsl:matching-substring> <xsl:non-matching-substring> <xsl:value-of select="."/> </xsl:non-matching-substring> </xsl:analyze-string> 上的一个孩子。

规范中的一个例子如下:

<xsl:template match="tei:item">
    <xsl:analyze-string select="." regex="\(([^\)]*)\)">
      <xsl:matching-substring>
        <item xml:id="aa-meta-{regex-group(1)}"><xsl:apply-templates/></item>
      </xsl:matching-substring>
  </xsl:analyze-string>
</xsl:template>

基于此,您应该能够将模板更新为以下内容:

{{1}}