我的目的是从谷歌地方获取数据。我有以下代码段html:
<div class="rsw-pp rsw-pp-widget">
<div g:type="AverageStarRating"
g:secondaryurls="http://maps.google.com/?cid=12948004443906002997"
g:decorateusingsecondary="http://maps.google.com/?cid=12948004443906002997" g:groups="maps" g:rating_override="2.998000" class="rsw-stars">
</div>
</div>
我想获得g:rating_override的价值。我试着跟随xsl
<Rating>
<xsl:value-of
select="//div[@class='rsw-pp rsw-pp-widget']/div[@class='rsw-stars']/@g:rating_override" />
</Rating>
它说'System.Xml.Xsl.XsltException:前缀'g'未定义'。你能帮帮我吗?
答案 0 :(得分:1)
您需要定义“g”命名空间。典型地,这是在stylesheet
元素上完成的。
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:g=" ... "
version="1.0">
答案 1 :(得分:1)
如果您使用的是Html Agility Pack嵌入式XSLT工具,那么您将面临两个严格的Html Agility Pack限制(至少使用版本1.3.0.0):
您可以使用C#代码克服这些限制,但不能轻松使用纯XPATH,因此不能使用XSLT。
在这种情况下,使用Html Agility Pack将HTML转换为XML通常更容易,然后使用标准.NET类的XML上的常规XSLT,而不是使用Html Agility Pack类的HTML上的XSLT。