Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt Xsl-如何从名称包含特殊字符的属性中选择值_Xslt_Xpath_Html Agility Pack - Fatal编程技术网

Xslt Xsl-如何从名称包含特殊字符的属性中选择值

Xslt Xsl-如何从名称包含特殊字符的属性中选择值,xslt,xpath,html-agility-pack,Xslt,Xpath,Html Agility Pack,我的目的是从google place获取数据。我有以下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

我的目的是从google place获取数据。我有以下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'。您能帮助我吗?

您需要定义g名称空间。通常这是在样式表元素上完成的


如果您使用的是Html Agility Pack嵌入式XSLT工具,那么至少在版本1.3.0.0中,您将面临两个硬Html Agility Pack限制:

对名称空间的支持是有限的 XPATH实现不支持导航到仅属性选择。例如,这个XPATH//tag1/tag2/@myatt不起作用。 使用C代码可以克服这些限制,但使用纯XPATH并不容易,因此使用XSLT也不容易

在这种情况下,使用HTML Agility Pack将HTML转换为XML通常更容易,然后使用标准.NET类对XML使用常规XSLT,而不是使用HTML Agility Pack类对HTML使用XSLT

<xsl:stylesheet 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:g=" ... "
     version="1.0">