2011-02-27 6 views
2

일부 XPath :하위 노드의 서브 세트 만 포함하는 노드를 선택할 수 있습니까?

//tbody/tr[2]/td/div/table/tbody/tr[2]/td[position() > 1] 

어느 것이 든 첫 번째 자식 노드를 제외한 모든 것을 제공합니다. 그러나 결과적으로 나에게 td 노트의 노드리스트를 제공합니다. 부모 tr 노드를 선택하고 싶지만 첫 번째 자식 노드를 제거해야합니다.

그냥 xpath를 사용하여 가능합니까?

+0

좋은 질문, +1. 설명 및 전체, 짧고 쉬운 해결책에 대한 내 대답을 참조하십시오. –

답변

4

XPath는 XML 문서의 쿼리 언어입니다. 따라서 소스 XML 문서의 구조를 수정하거나 새 XML 문서를 작성할 수 없습니다.

수정 된 새 문서를 작성하는 작업은 XPath로만 수행 할 수 없습니다.

이러한 변화는 다음과 같은 XML 문서에 적용되는
<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> 

:

<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> 

원하는, 올바른 결과 (모든 노드

이 XSLT으로 달성하기 쉽습니다 첫 번째 <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> 
+0

+1 정답. –

+0

+1 올바른 제안. – Flack

관련 문제