我有从外部URL获取HTML代码的代码。截取的代码段落如下。
$output = '<div align="center" class="style12">
Monday-Thursday 3-6 March<br/>
<span class="style21">Band XYZ</span><br/>
Friday 7 March<br/>
<span class="style21">Band PQR</span><br/>
Saturday 8 March<br/>
<span class="style21">Band ABC</span><br/>
Monday-Thursday 10-13 March<br/>
<span class="style21">Band UVW</span><br/>
Friday-Saturday 14-15 March<br/>
<span class="style21">Band MNO</span>
</div>
';
我试图从上面的字符串中获取日期和乐队名称,因为我使用的是XSLT和PHPDOM。这是我到目前为止的XSLT代码。
<xsl:for-each select="div/span">
<xsl:variable name="band_name" select="." />
<xsl:variable name="positions" select="position()+(position()-1)" />
<xsl:variable name="raw_event_date" select="parent::div/text()[$positions]" />
</xsl:for-each>
当html格式正确时,这很有效,因此此代码仅提取少量事件日期。我想检索所有日期,以便我想做其他方式,比如在选定的span标记之前提取文本(不包括BR)。谁能对它有所启发?
由于
答案 0 :(得分:1)
使用以下样式表:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:for-each select="div/span">
<xsl:value-of select="preceding-sibling::text()[1]"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
它产生:
Monday-Thursday 3-6 March
Friday 7 March
Saturday 8 March
Monday-Thursday 10-13 March
Friday-Saturday 14-15 March