추출 된 EPUB 파일을보고 루비 코드가 있습니다. OPF 메타 데이터 파일의 위치를 찾아서 반환하십시오. OPF 파일의 경로 (EPUB의 루트와 관련 있음)는 META-INF/container.xml에있는 XML 파일에 으로 기록됩니다. 내가 루트 파일 경로를 추출 LibXML과 XPath를 사용하고Ruby 및 LibXNL을 사용하는 EPUB 컨테이너를 파싱하십시오.
<?xml version="1.0"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
<rootfiles>
<rootfile full-path="content.opf" media-type="application/oebps-package+xml"/>
</rootfiles>
</container>
을 다음과 같이 파일 내용은 입니다. 문제 은 LibXML이 내 XPath 표현식이 유효하지 않다는보고입니다. 동일한 표현식은 Python과 LXML을 사용할 때 작동합니다. 관련 코드는 입니다.
require 'libxml'
include LibXML
container = File.join("META-INF", "container.xml")
tree = XML::Document.file(container)
rootfile = tree.find_first("//{urn:oasis:names:tc:opendocument:xmlns:container}rootfile")['full-path']
모든 의견을 환영합니다.
아마도 LibXML은 이러한 방식으로 기본 네임 스페이스를 처리 할 수 없습니까? ''// rootfile "'을 검색하면 어떻게됩니까? –
@Mathias nil을 반환합니다. –