Ich möchte die wikipedia API verwenden, um die Französisch Seiten einschließlich der Vorlage zu finden: Infobox Scientifique fehlt in der englischen Version. So, das war meine Idee, das folgende Dokument mit Xproc zu verarbeiten:Aufschließende Transformationen mit xslt, xpath: document() und mediawiki
und das folgende Stylesheet:
<?xml version='1.0' ?>
<xsl:stylesheet
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
version='1.0'
>
<xsl:output method='text' indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="api"/>
</xsl:template>
<xsl:template match="api">
<xsl:for-each select="query/embeddedin/ei">
<xsl:variable name="title" select="translate(@title,' ','_')"/>
<xsl:variable name="english-title">
<xsl:call-template name="englishTitle"><xsl:with-param name="title" select="@title"/></xsl:call-template>
</xsl:variable>
<xsl:value-of select="$english-title"/><xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:template>
<xsl:template name="englishTitle">
<xsl:param name="title"/>
<xsl:variable name="uri1" select="concat('http://fr.wikipedia.org/w/api.php?action=query&format=xml&prop=langlinks&lllimit=500&titles=',translate($title,' ','_'))"/>
<xsl:message><xsl:value-of select="$uri1"/></xsl:message>
<xsl:message>count=<xsl:value-of select="count(document($uri1,/api/query/pages/page/langlinks/ll))"/></xsl:message>
</xsl:template>
</xsl:stylesheet>
Der XSLT extrahieren Sie alle Artikel, die die Vorlage enthalten und für jeden Artikel, den ich wollte wikipedia anrufen, um die Links zwischen den Wikis zu erhalten. Hier ruft die Vorlage englishTitle die Xpath-Funktion document() auf.
Aber es sagt immer, dass count(ll)=1
während es viele Knoten gibt. (z.B. http://fr.wikipedia.org/w/api.php?action=query&format=xml&prop=langlinks&lllimit=500&titles=Carl_Sagan).
Kann ich die von der document()-Funktion zurückgegebenen Knoten nicht verarbeiten?
Danke, es hat funktioniert :-) – Pierre