2013-10-17 5 views
1

xmllint 및 "네임 스페이스 지원"에 대한 많은 항목을 stackoverflow에서 찾았지만 아무도 도움이되지 않았습니다. 여기 xmllint - 네임 스페이스가있는 xml 파일을 구문 분석합니다.

파일 (XSD 정확한 수) 내 XML입니다 :

나는이 파일에서 "내 텍스트"체인 그래서 나는이 시도 검색 할
<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"> 
    <xsd:annotation> 
     <xsd:documentation>My Text</xsd:documentation> 
    </xsd:annotation> 
</xsd:schema> 

:

xmllint myfile.xsd --xpath "/*[namespace-uri()='http://www.w3.org/2001/XMLSchema' and 
name()='schema']/*[namespace-uri()='http://www.w3.org/2001/XMLSchema' and 
name()='annotation']/*[namespace-uri()='http://www.w3.org/2001/XMLSchema' and 
name()='documentation']/text()" 

을하지만 아무튼 일하지 마라. 나는 "Segmentation Fault"를 얻는다.

UPDATE

나는 또 다른 질문이 :이 파일에 내 태그의 속성 "토토"값을 얻기 위해 사용해야 무엇 :

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:toto="testAtributeValue"> 
    <xsd:annotation> 
     <xsd:documentation>myText</xsd:documentation> 
    </xsd:annotation> 
</xsd:schema> 

이 다른 방법을 넣어를, 내가 원하는 get "testAtributeValue"

답변

2

"xsd"접두사가 선언되지 않았기 때문에 XML이 유효하지 않습니다. (질문의 두 번째 .version에 편집 된 명령 출력에서도보고 되었음).

xmlns:xsd=xmlns=이 아닙니다.

name()은 QName을 반환합니다. 로컬 이름과 일치 시키려면 local-name()을 사용하려고합니다.

+0

+1 나에게 도움이되었습니다. –