User:Dr pda/extractClass.stx
<?xml version="1.0"?> <stx:transform version="1.0"
xmlns:stx="http://stx.sourceforge.net/2002/ns" xmlns:m="http://www.mediawiki.org/xml/export-0.3/" pass-through="none" output-method="xml" exclude-result-prefixes="#all"
>
<stx:variable name="namespace-prefixes"/>
<stx:template match="m:namespace">
<stx:if test="@key!=0"> <stx:assign name="namespace-prefixes" select="($namespace-prefixes, .)"/> </stx:if>
</stx:template>
<stx:template match="/m:mediawiki">
<mediawiki> <stx:process-children /> </mediawiki>
</stx:template>
<stx:template match="m:siteinfo">
<stx:process-children />
</stx:template>
<stx:template match="m:namespaces">
<stx:process-children />
</stx:template>
<stx:variable name="page-title"/> <stx:variable name="page-text"/> <stx:variable name="page-id"/>
<stx:template match="m:title">
<stx:assign name="page-title" select="string(.)"/>
</stx:template>
<stx:template match="m:text">
<stx:assign name="page-text" select="string(.)"/>
</stx:template>
<stx:variable name="first-revision" select="true()"/>
<stx:template match="m:revision">
<stx:if test="$first-revision"> <stx:assign name="first-revision" select="false()"/> <stx:process-children/> </stx:if>
</stx:template>
<stx:buffer name="parsed"/> <stx:variable name="article-count" select="0"/> <stx:variable name="found-something"/> <stx:variable name="fa-class"/> <stx:variable name="fl-class"/> <stx:variable name="a-class"/> <stx:variable name="ga-class"/> <stx:variable name="b-class"/> <stx:variable name="c-class"/> <stx:variable name="start-class"/> <stx:variable name="stub-class"/> <stx:variable name="list-class"/>
<stx:template match="m:id">
<stx:if test="$first-revision"> <stx:assign name="page-id" select="normalize-space(.)"/> </stx:if>
</stx:template>
<stx:template match="m:page">
<stx:assign name="first-revision" select="true()"/> <stx:process-children /> <stx:variable name="prefix" select="substring-before($page-title,':')"/> <stx:variable name="skip" select="false()"/> <stx:if test="not(starts-with($prefix,'Talk'))"> <stx:assign name="skip" select="true()"/> </stx:if> <stx:if test="not($skip)"> <stx:assign name="found-something" select="false()"/> <stx:assign name="article-count" select="$article-count+1"/> <stx:assign name="fa-class" select="0"/> <stx:assign name="fl-class" select="0"/> <stx:assign name="a-class" select="0"/> <stx:assign name="ga-class" select="0"/> <stx:assign name="b-class" select="0"/> <stx:assign name="c-class" select="0"/> <stx:assign name="start-class" select="0"/> <stx:assign name="stub-class" select="0"/> <stx:assign name="list-class" select="0"/> <stx:result-buffer name="parsed" clear="yes"> <stx:variable name="text" select="$page-text"/> <stx:while test="string-length($text) > 0"> <stx:assign name="text" select="substring-after($text,'{{')"/> <stx:if test="string-length($text) > 0"> <stx:variable name="temp" select="substring-before($text,'}}')"/> <stx:assign name="temp" select="substring-after($temp,'lass')"/> <stx:if test="string-length($temp) > 0"> <stx:call-procedure name="template"> <stx:with-param name="content" select="string-join(($temp,'}}'),)"/> </stx:call-procedure> <stx:assign name="text" select="substring-after($text,'}}')"/> </stx:if> </stx:if> </stx:while> <template name="classes"> <param name="fa"> <stx:value-of select="$fa-class"/> </param> <param name="fl"> <stx:value-of select="$fl-class"/> </param> <param name="a"> <stx:value-of select="$a-class"/> </param> <param name="ga"> <stx:value-of select="$ga-class"/> </param> <param name="b"> <stx:value-of select="$b-class"/> </param> <param name="c"> <stx:value-of select="$c-class"/> </param> <param name="start"> <stx:value-of select="$start-class"/> </param> <param name="stub"> <stx:value-of select="$stub-class"/> </param> <param name="list"> <stx:value-of select="$list-class"/> </param> </template> </stx:result-buffer> <stx:if test="$found-something"> <stx:message> <stx:value-of select="$article-count"/> </stx:message> <stx:text> </stx:text> <page> <title><stx:value-of select="$page-title"/></title> <id><stx:value-of select="$page-id"/></id> <stx:text> </stx:text> <revision> <parsed> <stx:process-buffer name="parsed" group="copy"/> </parsed> <stx:text> </stx:text> </revision> </page> <stx:text> </stx:text> </stx:if> </stx:if>
</stx:template>
<stx:group name="copy">
<stx:template match="*"> <stx:element name="{name(.)}"> <stx:process-attributes/> <stx:process-children/> </stx:element> </stx:template> <stx:template match="@*"> <stx:attribute name="{name(.)}" select="."/> </stx:template> <stx:template match="text()"> <stx:value-of select="."/> </stx:template>
</stx:group>
<stx:procedure name="template">
<stx:param name="content" required="yes"/> <stx:choose> <stx:when test="matches($content,'\s?=\s?fa\s?[|}]','i')"> <stx:assign name="fa-class" select="1"/> <stx:assign name="found-something" select="true()"/> </stx:when> <stx:when test="matches($content,'\s?=\s?fl\s?[|}]','i')"> <stx:assign name="fl-class" select="1"/> <stx:assign name="found-something" select="true()"/> </stx:when> <stx:when test="matches($content,'\s?=\s?a\s?[|}]','i')"> <stx:assign name="a-class" select="1"/> <stx:assign name="found-something" select="true()"/> </stx:when> <stx:when test="matches($content,'\s?=\s?ga\s?[|}]','i')"> <stx:assign name="ga-class" select="1"/> <stx:assign name="found-something" select="true()"/> </stx:when> <stx:when test="matches($content,'\s?=\s?b\s?[|}]','i')"> <stx:assign name="b-class" select="1"/> <stx:assign name="found-something" select="true()"/> </stx:when> <stx:when test="matches($content,'\s?=\s?c\s?[|}]','i')"> <stx:assign name="c-class" select="1"/> <stx:assign name="found-something" select="true()"/> </stx:when> <stx:when test="matches($content,'\s?=\s?start\s?[|}]','i')"> <stx:assign name="start-class" select="1"/> <stx:assign name="found-something" select="true()"/> </stx:when> <stx:when test="matches($content,'\s?=\s?stub\s?[|}]','i')"> <stx:assign name="stub-class" select="1"/> <stx:assign name="found-something" select="true()"/> </stx:when> <stx:when test="matches($content,'\s?=\s?list\s?[|}]','i')"> <stx:assign name="list-class" select="1"/> <stx:assign name="found-something" select="true()"/> </stx:when> </stx:choose>
</stx:procedure>
</stx:transform>