2012-01-25 4 views
1

xmllint을 사용하고 XPath 1.0을 사용하여 HTML/XHTML 입력을 처리 할 수 ​​있습니다. 예를 들어 예상Saxon에서 XHTML을 처리 할 수 ​​있습니까?

xmllint --xpath "//title" --html http://www.w3.org/TR/xslt20/ 2>/dev/null

출력하지만 슨으로 :

java -cp /usr/share/java/saxon9he.jar net.sf.saxon.Query -s:"http://www.w3.org/TR/xslt20/" -qs:"//title"

결과가 없습니다.
HTTP 문서 연결에 대해 실행하면 2 분 후에 다시 설정하고, 로컬 문서에 종료됩니다 w 결과 O를 분 오 부부는 내가 처리 XHTML 문서에 관련된 아무것도 찾을 수 없습니다 색슨 documentation에서

을 처리 한 후/


나는이 질문을 발견

: Saxon Xpath namespace 그리고 더 많은 정보와 질문을 통해 업데이트 : 여기

는 HTML 파서 (NO --html 스위치)를 사용하지 않고 xmllint 예입니다

012 3,516,

xmllint --xpath "//*[local-name()='title'][namespace-uri()='http://www.w3.org/1999/xhtml']" http://www.w3.org/TR/xslt20/

출력한다 : 색슨 사용하여 다시

<title>XSL Transformations (XSLT) Version 2.0</title> 

:

java -cp /usr/share/java/saxon9he.jar net.sf.saxon.Query -s:"http://www.w3.org/TR/xslt20/" -qs:"//*[local-name()='title'][namespace-uri()='http://www.w3.org/1999/xhtml']" 

결과가 없습니다

+0

물론 올바른 형식의 XML (실제로는 유효한 XHTML) 일 수 있습니다. XHTML 요소는 네임 스페이스 (http : // www.w3.org/ 1999/xhtml)에 있습니다. 네임 스페이스를 지정했는지 확인하십시오. –

+0

'http : // www.w3.org/TR/xslt20 /'*은 * XHTML 소스 문서입니다. 그것은 HTML 깔끔한 XML 테스트를 통과하고 그것으로 생성됩니다. 쉽게 확인할 수 있습니다. – theta

+0

붙여 넣은 것을 놓친 것 같아요. 'http : // www.w3.org/1999/xhtml'과 같은 문자열은 아닙니다. 네임 스페이스를 고려하지 않기 때문에'// title'과 아무 것도 match하지 않을 것입니다. –

답변

0

XHTML은 문서 XML 문서는 당신이 그것을 처리 할 수 ​​있도록한다 다른 XML 문서와 같은 방식입니다. XHTML의 경우 대부분의 요소가 네임 스페이스에 포함될 가능성이 있으므로이 점을 고려해야합니다. XHTML 네임 스페이스를 기본 네임 스페이스로 설정하는 것이 유용 할 수 있습니다 (슬프게도 XQuery에서는 출력의 기본 네임 스페이스이기도하지만 XSLT가 더 좋음).

XHTML 문서에 W3C 서버의 XHTML DTD에 대한 참조가 포함되어 있고 지난 1 년 동안 W3C는로드를 처리 할 수 ​​없어이 리소스를 검색하는 요청에 응답하지 않았습니다. 즉, 지연이 오래 걸리고 I/O 오류가 발생할 수 있습니다. 이에 대응하여 Saxon 9.4에는 XHTML DTD의 로컬 복사본이 포함되어 있으며 로컬 복사본의 요청을 충족합니다. 이전 릴리스에서는 OASIS 카탈로그를 사용하여 동일한 효과를 얻을 수 있습니다.

+0

입력 해 주셔서 감사합니다. 로컬 XHTML DTD 복사본의 의미를 해독하려고 시도합니다.) Saxon이 http : // www의 로컬 XHTML 복사본에서 (DevNull 주석이있는 쿼리와 같이) 쿼리를 처리하는 데 너무 오래 걸리는 이유를 설명 할 수 있는지 궁금합니다. .w3.org/TR/xslt20 예를 들면. 나는별로 경험이 없지만 다른 점은 Saxon이 느린 것 같지 않다는 것입니다. – theta

+0

앞서 언급했듯이 XML 파서가 DTD를 제공하도록 XML 파서에 요청하고 있기 때문에 과도한 지연이있는 경우 W3C는 ' 그것을 제공. 색슨은 당신이 기다리는 것처럼 앉아 있습니다. –

관련 문제