我有一些的XPath:是否可以選擇一個只包含子節點子集的節點?
//tbody/tr[2]/td/div/table/tbody/tr[2]/td[position() > 1]
這給了我一切,但第一個子節點。但是,它給了我一個td註釋的節點列表。我想選擇父tr節點,但刪除了第一個子節點td節點。
這可能只使用xpath?
我有一些的XPath:是否可以選擇一個只包含子節點子集的節點?
//tbody/tr[2]/td/div/table/tbody/tr[2]/td[position() > 1]
這給了我一切,但第一個子節點。但是,它給了我一個td註釋的節點列表。我想選擇父tr節點,但刪除了第一個子節點td節點。
這可能只使用xpath?
XPath是XML文檔的查詢語言。因此,它不能修改源XML文檔的結構或創建新的XML文檔。
創建新的已修改文檔的任務只能用XPath完成。
這是很容易使用XSLT做到:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="tr[2]/td[1]"/>
</xsl:stylesheet>
當這種轉變是在下面的XML文檔應用:
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</table>
想要的,正確的結果(所有節點被複制,但第二個<tr>
的第一個<td>
孩子除外)被生產出來:
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</table>
+1正確答案。 – 2011-02-27 21:27:29
對於正確的建議+1。 – Flack 2011-02-27 22:12:18
好問題,+1。請參閱我的答案以獲得解釋和完整,簡短的解決方案。 – 2011-02-27 20:30:44