XSLT。如何选择所需的标签

时间:2016-06-27 22:10:44

标签: xml xslt xpath

<i>

如何选择&#34;红色矩形&#34;来自另一个TD标签?

xml的来源。如何正确选择<TD valign="top" width="40%">

&#13;
&#13;
<?xml version="1.0" encoding="UTF-8"?>
<TD width="10">
<IMG alt="" height="1" src="images/avro/spacer.gif" width="10"/>
</TD>
<TD valign="top" width="40%">
<B>Outward:</B>
<STRONG>Tue 18 December 2007</STRONG>
<BR/>
<BR/>
<B>12:00</B>
Depart Malaga, Costa del Sol (AGP)
<BR/>
<BR/>
<B>13:40</B>
Arrive London Luton (LTN)
<BR/>
<BR/>
<SCRIPT language="JavaScript">...</SCRIPT>
<BR/>
<BR/>
<B>Monarch Scheduled ZB13</B>
<BR/>
Total flight time: 0240
</TD>
&#13;
&#13;
&#13;

此变体不起作用

&#13;
&#13;
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <h2>Airlanes</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
      </tr>
       <xsl:for-each select="//TD[@valign='top' and @width='40%']">
      <tr>
        <td><xsl:value-of select="STRONG" /></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>
&#13;
&#13;
&#13;

预期产出 enter image description here

1 个答案:

答案 0 :(得分:0)

  

如何从另一个TD标签中选择“红色矩形”?

这是一个棘手的问题,不是一个简单的问题。假设“另一个TD标记”是您想要的TD元素的兄弟,您可能可能使用此XPath表达式:

../TD[@valign='top' and @width='40%']

选择它。

我说“可能”因为这将选择所有 TD元素,这些元素是上下文节点的兄弟节点并满足谓词中的条件。

加了:

您的XSLT 从其他TD标记中选择”。您的上下文节点是/根节点 - 从那里开始指令:

<xsl:for-each select="TD[@valign='top' and @width='40%']">

不选择任何内容,因为TD不是当前节点的子节点。你应该试试:

<xsl:for-each select="//TD[@valign='top' and @width='40%']">

这是一种推测,因为你还没有向我们展示你的输入和预期的输出。