在下面的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元素
请帮忙。
答案 0 :(得分:0)
xsl:matching-substring
看起来based on the spec至少需要xsl:non-matching-substring
或xsl: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}}