使用regex+查找字符串中的数字;xslt
我正在尝试从以下XML代码的描述中提取大量注释:使用regex+查找字符串中的数字;xslt,regex,xslt,numbers,reddit,Regex,Xslt,Numbers,Reddit,我正在尝试从以下XML代码的描述中提取大量注释: <item> <title>War Stats</title> <link>http://www.reddit.com/r/politics/comments/r3p6r/war_stats/</link> <guid isPermaLink="true">http://www.reddit.com/r/politics
<item>
<title>War Stats</title>
<link>http://www.reddit.com/r/politics/comments/r3p6r/war_stats/</link>
<guid isPermaLink="true">http://www.reddit.com/r/politics/comments/r3p6r/war_stats/</guid>
<pubDate>Mon, 19 Mar 2012 10:30:01 -0700</pubDate>
<description>submitted by <a href="http://www.reddit.com/user/focusing"> focusing </a> to <a href="http://www.reddit.com/r/politics/"> politics</a> <br/> <a href="http://i.imgur.com/8HpWg.jpg">[link]</a> <a href="http://www.reddit.com/r/politics/comments/r3p6r/war_stats/">[634 comments]</a></description>
</item>
战争统计
http://www.reddit.com/r/politics/comments/r3p6r/war_stats/
http://www.reddit.com/r/politics/comments/r3p6r/war_stats/
2012年3月19日星期一10:30:01-0700
由a href=”提交http://www.reddit.com/user/focusing“聚焦/a到a href=”http://www.reddit.com/r/politics/“政治/a br/a href=”http://i.imgur.com/8HpWg.jpg“[链接]/a href=”http://www.reddit.com/r/politics/comments/r3p6r/war_stats/“[634条评论]/a
如您所见,我想从中提取数字634,并将其放入新xml文件的“score”属性中
<xsl:attribute name="score">
<xsl:analyze-string select='description' regex='\d'>
<xsl:matching-substring>
<number><xsl:value-of select='.' /></number>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:attribute>
但我认为我做错了
这是全部代码:
雷迪特
http://dl.dropbox.com/u/8226356/Unief/DatabasesWebtechnologie/Praktijk/Project/Reddit_logo.thumbnail.png
有人能告诉我怎么做吗?正则表达式
\d
匹配一个单位数字符,我想您需要\d+
或[0-9]+
匹配一个数字序列。
而且,xsl:attribute
输出一个属性节点,我不明白为什么在这里面你会想要创建一个带有…
的元素节点,因为属性不能包含元素。
因此,请确保在结果元素或
xsl:element
内部使用xsl:attribute
,然后对于属性值,只需使用
,代码就可以工作了。如果您仍然有问题,请更详细地解释您想要什么输出。我正在尝试使用新的xml布局将reddit top文章解析为项目。扔掉
,这在您似乎想要计算属性值(分数时没有任何意义。仍然不起作用,虽然我不知道正则表达式代码实际上是做什么的:S
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:a="http://www.w3.org/2005/Atom"
xmlns:media='http://search.yahoo.com/mrss/'>
<xsl:template match="/">
<xsl:for-each select="/rss/channel/item">
<item>
<xsl:attribute name="type">reddit</xsl:attribute>
<xsl:variable name="redditTitle" content="title" />
<xsl:attribute name="name">
<xsl:if test="string-length(title) > 50">
<xsl:value-of select="concat(substring(title, 1, 75), '...')" />
</xsl:if>
<xsl:if test="string-length(title) < 50">
<xsl:value-of select="title" />
</xsl:if>
</xsl:attribute>
<xsl:attribute name="url">
<xsl:value-of select="link" />
</xsl:attribute>
<xsl:attribute name="image">http://dl.dropbox.com/u/8226356/Unief/DatabasesWebtechnologie/Praktijk/Project/Reddit_logo.thumbnail.png</xsl:attribute>
<xsl:attribute name="score">
<xsl:analyze-string select='description' regex='[0-9]+'>
<xsl:matching-substring>
<xsl:value-of select='.' />
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:attribute>
</item>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>