如何使用XSLT从.js文件中提取链接

时间:2014-02-04 03:51:24

标签: javascript xslt

我有一个.js文件。这是一个javascript文件,文本如下。我想提取所有的href URL并将它们添加到循环内的变量中以进一步处理。我怎样才能做到这一点?非常感谢。

 document.write('<tr bgcolor="#6691BC">'); document.write('<td
 width="15" height="25">&nbsp;</td>'); document.write('<td width="690"
 height="25" class="headertext">');

 document.write('<a href="../myspace.com/index.html" class="headerLink"
 style="color: #ffffff;">My Space</a>&nbsp;&nbsp;|&nbsp;&nbsp;');

 document.write('<a href="../technotes.com/index.html"
 class="headerLink" style="color: #ffffff;">Tech
 Notes</a>&nbsp;&nbsp;|&nbsp;&nbsp;');

 document.write('<td width="15" height="25">&nbsp;</td>');
 document.write('</tr>');

2 个答案:

答案 0 :(得分:1)

我会采用不同的方法 - 首先将您的html转换为单个xhtml字符串(请注意缺少</td>,而&需要转义为&amp;

var xhtml = [
'<tr bgcolor="#6691BC">', 
  '<td width="15" height="25">&amp;nbsp;</td>',
  '<td width="690" height="25" class="headertext">',
    '<a href="../myspace.com/index.html" class="headerLink" style="color: #ffffff;">My Space</a>&amp;nbsp;&amp;nbsp;|',
    '<a href="../technotes.com/index.html" class="headerLink" style="color: #ffffff;">Tech Notes</a>'
  '</td>',
  '<td width="15" height="25"><a id="JustAnAnchor">Anchor</a></td>',
'</tr>'].join("");

document.write(xhtml);

然后,您需要solve the challenge在javascript中应用xslt转换。

以下xslt将从所有href标记中提取<a href>并将它们转储到逗号分隔列表中,然后您可以在javascript中使用它(不应该remove the extraneous last trailing comma })

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>
    <xsl:template match="/">
        <xsl:apply-templates select="//a[@href]"></xsl:apply-templates>
    </xsl:template>

    <xsl:template match="a">'<xsl:value-of select="@href"/>',</xsl:template>
</xsl:stylesheet>

输出:

'../myspace.com/index.html','../technotes.com/index.html',

答案 1 :(得分:0)

XSLT无法轻松解析Javascript。这是工作的错误工具。

以下是您可以采取的一些方法:

(1)运行javascript,捕获生成的文档,然后使用XSLT。如果文档格式不正确,这可能会很麻烦。

(2)使用正则表达式,例如grep,perl -e,Javascript匹配函数

(3)运行javascript,然后使用document.querySelectorAll('* [href]')来获取所有带有href和工作表单的元素