首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用XSLT获取所选跨标记之前的文本

使用XSLT获取所选跨标记之前的文本
EN

Stack Overflow用户
提问于 2014-03-03 10:15:53
回答 1查看 53关注 0票数 0

我有从外部URL获取HTML代码的代码。获取的代码片段如下所示。

代码语言:javascript
运行
复制
$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代码。

代码语言:javascript
运行
复制
<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标记(不包括BRs)之前获取文本。有人能给它点光吗??

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-03 10:23:12

使用以下样式表:

代码语言:javascript
运行
复制
<?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>

它产生:

代码语言:javascript
运行
复制
Monday-Thursday 3-6 March
Friday 7 March
Saturday 8 March
Monday-Thursday 10-13 March
Friday-Saturday 14-15 March
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22143946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档