は私が「」インフォボックス科学研究テンプレート」を含むフランスのページを見つけるためにwikipedia APIを使用したいです。だから、私のアイデアはXPROCと、次の文書を処理することでした:Recusive変換:「英語版で行方不明:文書()とmediawikiの
と、次のXSLTスタイルシート:
<?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>
XSLTテンプレートを含むすべての記事を抽出し、私が欲しかった各記事のためにウィキペディアに電話してウィキ間のリンクを得る。テンプレートenglishTitleは、xpath関数()を呼び出します。
しかし、それは常にcount(ll)=1
と言われていますが、たくさんのノードがあります。 (例えば、http://fr.wikipedia.org/w/api.php?action=query&format=xml&prop=langlinks&lllimit=500&titles=Carl_Sagan)。
文書()によって返されるノードを処理できませんか?
ありがとう、それは働いた:-) – Pierre