我有以下HTML:
<html>
<head>
<meta http-equiv="refresh" content="0;URL=http://amazingjokes.com" />
</head>
</html>
我想找到带有重定向的META,所以我编写了以下XPath查询:
/html/head/meta[@http-equiv="refresh"]
然而,&#39; - &#39;在&#39; http-equiv&#39;导致错误:
无效的正则表达式:// html / head / meta [@ http-equiv =&#34; refresh&#34;] /: 字符类中的范围无序
如何正确重写xpath查询以便能够找到元重定向?
我尝试了这个,当我删除&#39; - &#39;从HTML代码和查询的东西按预期工作,但遗憾的是&#39; http-equiv&#39;是一套标准,所以我不能改变它。这个实验告诉我,我非常接近...
答案 0 :(得分:0)
然而,&#39; - &#39;在&#39; http-equiv&#39;导致错误:
无效的正则表达式:// html / head / meta [@ http-equiv =&#34; refresh&#34;] /: 字符类中的范围无序
显然,您使用的XPath引擎是错误的。
问题中使用的XPath表达式是一个有效的XPath 1.0表达式,它选择了想要的<meta>
元素。
这是一个基于XSLT的验证:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:copy-of select="/html/head/meta[@http-equiv='refresh']"/>
</xsl:template>
</xsl:stylesheet>
当上述转换应用于提供的XML文档时:
<html>
<head>
<meta http-equiv="refresh" content="0;URL=http://amazingjokes.com" />
</head>
</html>
评估XPath表达式并输出此评估节点中的选定内容:
<meta http-equiv="refresh" content="0;URL=http://amazingjokes.com"/>