Xslt分析字符串错误

Xslt分析字符串错误,xslt,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 universa

在下面的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>

评论员
(32)nec universalem原材料公司,
特别是nec,它是世界和医学的基本形式-
在这之前,所有人都有自己的名字。
(33)项目评论员:非est形式物种,sed etiam
以材料和形式交换的流动性集合。
(34)非哈贝特-埃塞的普遍性项目,第二个问题是动物。
XSLT


但它不起作用

Saxon给了我以下错误

XTSE1130:必须至少存在一个xsl:matching子字符串或xsl:non-matching子字符串元素

请帮助。

看起来您至少需要一个
xsl:matching子字符串
xsl:non-matching子字符串
作为
xsl:analyze string元素
的子元素

规范中的一个示例如下:

<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>

<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>