2013-06-17 1 views
0

OpenXML presentationML 형식에 포함 된 다음 샘플 관계 XML 파일의 노드를 쿼리하려고합니다.Nokogiri XML XPath에서 OpenXML Relationships 파일의 노드를 선택하지 않았습니다.

<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> 
    <Relationship Target="../notesSlides/notesSlide1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide" Id="rId2"/> 
    <Relationship Target="../slideLayouts/slideLayout2.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout" Id="rId1"/> 
    <Relationship Target="../media/image00.jpg" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Id="rId3"/> 
</Relationships> 

내가 원하는 것은 id = "rId3"인 관계 노드에 @Target 속성을 선택하는 것입니다. 어떤 XPath 선택기를 통과했는지에 상관없이 결과 노드 세트는 비어 있습니다. 누구든지이 수수께끼를 해결할 수 있습니까?

+0

선택기의 어떤 종류의 당신이 시도해야 ? "XPath 선택기가 무엇이든 관계없이"그렇다고 말하면 분명히 올바르게 처리하지 못하기 때문에 시도한 내용을 표시하여 작업을 수정할 수 있습니다. –

답변

1

이것은 매우 쉬운 질문입니다. 그러나 당신이 당신의 작품을 보여주지 못하기 때문에 나는 당신에게 대답을 주저하는 것을 주저합니다.

at 방법은 선택의 첫 번째 항목에 대한 문서를 검색합니다

대신, 여기서 일 것이다, XPath를 사용하지만, 좀 더 읽을 수 CSS를 사용하지 않는, 몇 가지 기본적인 빌딩 블록입니다. 쉽게 자사의 ID를 사용하여 특정 노드를 찾을 수 있습니다, CSS에서

at('Relationship') 

:

at('#rId3') 

모든 것을 사용할 수있는 일반 CSS 규칙을 사용하여이 첫 번째 <Relationship> 노드를 찾기 위해 CSS 선택기를 사용 인터넷을 통해 원하는 노드를 찾을 수 있습니다. HTML을 이해하고 CSS가 셀렉터를 사용하여 노드에 액세스하는 방법을 이해하는 것이 필수적입니다. 그러나 일단 그것이 인생을 훨씬 편하게한다는 것을 알게되면 어떻게됩니까?

1

신비는 네임 스페이스 잊고있는 것입니다 : 작동

doc.at('//xmlns:Relationship[@Id="rId3"]')[:Target] 

없는 네임 스페이스 요소를 찾습니다 때문에

doc.at('//Relationship[@Id="rId3"]')[:Target] 

실패를

관련 문제