我正在创建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>
我从墨尔本.xml称这个xsl页面。我想使用墨尔本.xml作为主要文件,并从这里处理其他城市。
你们能给我一些想法吗?
附言我是 XML 和 XSLT 的新手。
您可以使用 XSLT 函数 document() 打开外部 XML 文档。它返回文档节点。它将文档 URI 作为参数。可选的第二个参数告诉如何解释相对 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。