2011-07-01 5 views
2

첫 번째 열에 고유 한 값을 가진 행을 얻기 위해 OpenOffice 스프레드 시트를 구문 분석하려고합니다.고유 한 값을 가진 요소를 선택하십시오.

I.E., 첫 번째 하위 <table:table-cell>에있는 <text:p> 값이 고유 한 <table:table-row> 개의 요소를 모두 다음 XML 조각에서 검색하려고합니다.

<table:table table:name="foo"> 
     <table:table-row> 
      <table:table-cell> 
       <text:p>1</text:p> 
      </table:table-cell> 
      <table:table-cell> 
       <text:p>foo</text:p> 
      </table:table-cell> 
     </table:table-row> 
     <table:table-row> 
      <table:table-cell> 
       <text:p>2</text:p> 
      </table:table-cell> 
      <table:table-cell> 
       <text:p>bar</text:p> 
      </table:table-cell> 
     </table:table-row> 
     <table:table-row> 
      <table:table-cell> 
       <text:p>1</text:p> 
      </table:table-cell> 
      <table:table-cell> 
       <text:p>baz</text:p> 
      </table:table-cell> 
     </table:table-row> 
    </table:table> 

내가

 <table:table-row> 
      <table:table-cell> 
       <text:p>1</text:p> 
      </table:table-cell> 
      <table:table-cell> 
       <text:p>foo</text:p> 
      </table:table-cell> 
     </table:table-row> 
     <table:table-row> 
      <table:table-cell> 
       <text:p>2</text:p> 
      </table:table-cell> 
      <table:table-cell> 
       <text:p>bar</text:p> 
      </table:table-cell> 
     </table:table-row> 

가 어떻게 XPath를 사용하여이 작업을 수행 할 수 노드로 아래의 출력을 얻을 싶은거야?

+0

XPath는 정의 Elemente를 얻을 그냥 표현이다. 처음 XML 파일을 다른 XML 파일로 변환하는 것이 좋습니다. XSLT를 사용한 다음 XSLT를 사용하여 XPath 식을 사용하면됩니다. – Spredzy

+1

나는 노드를 얻고 싶었고 XML도 얻을 수 있다고 생각하지 않았다. 감사. – Aru

답변

0

이 XPath를 원하는 생산하고 출력 : | 특성 | 당신의 DOM의 노드 /table:table/table:table-row[not(./table:table-cell[1]/text:p/text() = preceding-sibling::table:table-row/table:table-cell[1]/text:p/text())]

0

순수 XPath는해야한다 :

예상 출력 당신이 table:row 노드의 순서가 아닌 사람이 제대로 코멘트에주의로 XML 문서를 의미
/table:table/table:*[not(
    .//text:p[1] 
    = preceding-sibling::table:table-row//text:p[1] 
)] 

합니다.

/table:table/table:*[not(
    ./table:*[1]//text:*[1] 
    = preceding-sibling::table:*/table:*[1]/text:*[1] 
)] 
+0

XPath 표현을 이해할 수 없지만 이로 인해 나를 위해 여분의 빈 노드가 생성됩니다. 코드 및 설명을 주셔서 감사합니다. – Aru

+0

@polishchuk 대답은 절대적인 XPath가 아마도 약간 구두점을두기 때문에 훨씬 안전합니다. 나는 당신에게 당신의 입력 xml (그리고 XPath :)에 대한 지식에 따라 조정 되어야만하는 짧은 질문을 주었다. 정확성을 위해, 덜 일반적이어야하지만 더 안전해야하는 안전한 XPath로 질문을 편집했습니다. –