这是我想用XSLT转换的HTML的一部分
<tr>
<td>ELE1600A </td>
<td>CIRCUITS ELECTRIQUES <br>Chahe Nerguizian </td>
<td><center>01 </center></td>
<td><center>01 </center></td>
<td><center>03</center></td>
</tr>
我想拆分以下
<td>CIRCUITS ELECTRIQUES <br>Chahe Nerguizian </td>
进入:
我尝试过使用
<xsl:valuf-of select="substring-before(td[2],'
')"/>
<xsl:valuf-of select="substring-after(td[2],'
')"/>
但它在php和eclipse的XSLT处理器中都没有返回任何内容。 我怎么能做到这一点?
提前致谢。
答案 0 :(得分:2)
正如评论中所提到的,这里没有XHTML,因此没有XML,因此不能在其上使用XSLT。但是.... IF 它被修改为XML,你可以用它做点什么。
想象一下,这是一个结构良好的起始文件:
<tr>
<td>ELE1600A </td>
<td>CIRCUITS ELECTRIQUES<br />Chahe Nerguizian
</td>
<td>
<center>01 </center>
</td>
<td>
<center>01 </center>
</td>
<td>
<center>03</center>
</td>
</tr>
然后,您可以使用标识转换,使用额外的匹配模板来处理 td 元素的匹配,该元素具有 br 元素作为子元素。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="td[br]">
<xsl:copy>
<ol>
<xsl:apply-templates />
</ol>
</xsl:copy>
</xsl:template>
<xsl:template match="td[br]/node()">
<li>
<xsl:call-template name="IdentityTransform" />
</li>
</xsl:template>
<xsl:template match="td[br]/br">
<!-- Ignore tag -->
</xsl:template>
<xsl:template match="@*|node()">
<xsl:call-template name="IdentityTransform" />
</xsl:template>
<xsl:template name="IdentityTransform">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
当这应用于输入XML时,会生成以下内容:
<tr>
<td>ELE1600A </td>
<td>
<ol>
<li>CIRCUITS ELECTRIQUES </li>
<li>Chahe Nerguizian </li>
</ol>
</td>
<td>
<center>01 </center>
</td>
<td>
<center>01 </center>
</td>
<td>
<center>03</center>
</td>
</tr>