0

XML ドキュメントからさまざまな都市の天気予報データを抽出する XSLT スタイルシートを作成しています。現在、3 つの XML ファイルがあります。しかし、1 つの XSLT スタイルシートから複数の XML ドキュメントを処理するというアイデアは得られません。ある都市の XML ファイルをアプリケーションのメイン XML ドキュメントとして使用し、複数の XML ドキュメントすべてに対してその 1 つの XSLT ファイルを呼び出したいと考えています。

これは私のメルボルン用の XSLT ページです。

<xsl:template match="/">
        <xsl:text>Melbourne</xsl:text><br/>
        <xsl:for-each select="product/forecast/area[@description='Melbourne']/forecast-period">
            <xsl:value-of select="text[@type='forecast']"/>
            <xsl:value-of select="text[@type='precis']"/>
            <xsl:value-of select="element[@type='air_temperature_minimum']"/>,
            <xsl:value-of select="element[@type='air_temperature_maximum']"/><br/>
        </xsl:for-each>
        </xsl:template>

この xsl ページを melbourne.xml から呼び出しています。そして、melbourne.xml をメインドキュメントとして使用し、ここから他の都市を処理したいと考えています。

アイデアを教えてください。

PS XML と XSLT は初めてです。

4

1 に答える 1

0

XSLT 関数document()を使用して、外部 XML ドキュメントを開くことができます。ドキュメントノードを返します。ドキュメントの URI を引数として取ります。オプションの 2 番目の引数は、相対 URI の解釈方法を示します。

おそらくより良いオプションは、XSLT への入力として、処理したいドキュメントの URI を含むメタ ドキュメントを定義することです。

<cities>
  <city url="melbourne.xml"/>
  <city url="timbuktu.xml"/>
</cities>

次に、XSLT を次のように開始できます。

<xsl:template match="/cities">
  <xsl:apply-templates select="document(city/@url, .)/product"/>
</xsl:template>

注: テンプレートを変更して、/ ではなく "product" に一致させ、それに応じて for-each を変更する必要があります。

于 2012-10-01T07:56:44.097 に答える