代码之家  ›  专栏  ›  技术社区  ›  Arpegius

使用xslt作为xhtml链接提取器

  •  1
  • Arpegius  · 技术社区  · 15 年前

    我开始使用XSLT并编写这个scipt:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" encoding="utf-8" />
    <xsl:template match="span[@class='thumb']" >
        Link: <xsl:value-of select="$base" /><xsl:value-of select="a/@href" />
    </xsl:template>
    
    <xsl:template match="/">
        Base href: <xsl:value-of select="$base" />
        <xsl:apply-templates/>
    </xsl:template>
    
    </xsl:stylesheet>
    

    并使用以下命令:

    xsltproc --html --param base "'http://example.com'" lista.xslt test.html
    

    我需要得到链接列表,但我得到输出的整个页面。怎么了?我怎样才能让它工作?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Derek Slager    15 年前

    这里有一些默认模板未被打开。解决这个问题的真正简单的方法是只显式地限制要匹配的跨度元素,如下所示。否则,可以覆盖默认模板。

    <xsl:template match="/">
      Base href: <xsl:value-of select="$base" />
      <xsl:apply-templates select="//span[@class='thumb']" />
    </xsl:template>
    
        2
  •  1
  •   Carl Smotricz    15 年前

    有一个默认模板,如果您允许的话,它基本上匹配所有内容。你的第四行调用模板。

    这是问题的一部分。剩下的可能会通过直接在顶级模板中匹配您要查找的内容来处理。