0

我正在创建 XSLT 样式表以从 XML 文档中提取不同城市的天气预报数据。目前,我有 3 个 XML 文件。但我不知道从一个 XSLT 样式表处理多个 XML 文档。我想使用我的一个城市的 XML 文件作为我的应用程序的主要 XML 文档,并为所有多个 XML 文档调用那个 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>

我从 melbourne.xml 调用这个 xsl 页面。我想使用 melbourne.xml 作为主文档并从这里处理其他城市。

你们能给我一些想法吗?

PS 我是 XML 和 XSLT 的新手。

4

1 回答 1

0

您可以使用 XSLT 函数document()打开一个外部 XML 文档。它返回文档节点。它以文档 URI(s) 作为参数。可选的第二个参数告诉如何解释相对 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>

注意:您需要修改模板以匹配“产品”而不是 /,并相应地更改 for-each。

于 2012-10-01T07:56:44.097 回答