我正在尝试使用 XSLT 从气象局网络服务中的以下 XML 中提取标题,但是我的 XSLT 选择返回空白。来源:
我正在尝试使用 XSLT 从气象局网络服务中的以下 XML 中提取标题,但我的 XSLT 选择返回空白。
来源:
<RegionalFcst xmlns="www.metoffice.gov.uk/xml/metoRegionalFcst" createdOn="2016-01-13T02:14:39" issuedAt="2016-01-13T04:00:00" regionId="se">
<FcstPeriods>
<Period id="day1to2">
<Paragraph title="Headline:">Frosty start. Bright or sunny day.</Paragraph>
<Paragraph title="Today:">A clear and frosty start in west, but cloudier in Kent with isolated showers. Then dry with sunny periods. Increasing cloud in west later will bring coastal showers with freshening southerly winds. Chilly inland, but less cold near coasts. Maximum Temperature 8C.</Paragraph>
</Period>
</FcstPeriods>
</RegionalFcst>
我的XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:value-of select="FcstPeriods/Period/Paragraph"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我已将根目录更改为 /RegionalFcst 并尝试进行其他类似的更改,例如在 FcstPeriods 之前添加前导斜杠,但没有任何效果,直到我从源 XML 中删除第一行和最后一行 - 然后它才能完美运行。
这在测试中是没问题的,但我当然想使用气象局提供的网络服务,这就是他们呈现它的方式。
有什么想法吗?
问题 :您的 XML 将其元素放在 命名 .
解决方案 :在样式表中声明相同的命名空间,为其分配一个前缀,并使用该前缀来寻址源 XML 中的元素:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:met="www.metoffice.gov.uk/xml/metoRegionalFcst"
exclude-result-prefixes="met">
<xsl:template match="/">
<html>
<body>
<xsl:value-of select="met:RegionalFcst/met:FcstPeriods/met:Period/met:Paragraph[@title='Headline:']"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>