我正在爲構建Docbook文檔製作SCons文件。爲了跟蹤依賴關係,我想用某種方法將目錄文件查找解析爲文件的絕對路徑。Python LXML目錄查找
所以說我有一點的Docbook XML的:
<book xmlns="http://docbook.org/ns/docbook"
xmlns:xi="http://www.w3.org/2001/XInclude">
<info>
<title>Docbook example document</title>
<xi:include href="file:///common/logo.xml"
xpointer="logo"/>
</info>
<xi:include href="chap1/chap1.xml"/>
<xi:include href="chap2/chap2.xml"/>
<xi:include href="chap3/chap3.xml"/>
<xi:include href="chap4/chap4.xml"/>
</book>
和catalog.xml文件:
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<rewriteURI
uriStartString="file:///stylesheet/"
rewritePrefix="file:///home/kst/svn/TOOLS/Docbook/stylesheet/" />
<rewriteURI
uriStartString="file:///common/"
rewritePrefix="file:///home/kst/svn/TOOLS/Docbook/common/" />
<nextCatalog catalog="/etc/xml/catalog" />
</catalog>
使用LXML獲取XInclude的HREF字符串沒有問題,但我被困那裏。 我需要的是獲取文件的絕對文件名:///common/logo.xml從目錄文件中解析到(在本例中是/home/kst/svn/TOOLS/Docbook/common/logo.xml) 。它需要是某種Python代碼,所以我可以在SConstruct文件中使用它,而不用太麻煩。
任何幫助表示讚賞。
我一直在試圖做到這一點,但我一直未能得到它的工作。請注意,我對驗證文檔不感興趣,但是獲取文檔包含的任何xml文件的文件名,因此取決於。 –
據我所知,它不僅適用於驗證,也適用於xinclude解析。你怎麼試試它?你有沒有得到任何具體的錯誤? – Steven
@凱文Steffensen:我剛剛測試了一個簡單的例子,並且包含目錄的xinclude似乎工作得很好?看起來文件位置或xpointer(它需要一個id爲「logo」的屬性,我在測試中使用了'xml:id =「logo」''''''''''''嘗試不使用xpointer來檢查是否可以先包含整個文檔,然後繼續使用xpointer) – Steven