正嘗試了解libxml中處理relaxNG的validaion部份。若這個部份可以好好利用,應該可以達成之前所想像的,基於relaxNG的文法,generate出一個parser供程式用來parse相對應的xml檔。在電子書的例子中,就是給幾個epub的relaxNG檔,然後能產生幾個相對應的parser,被reader用來讀取/validate電子書籍的正確性。
libxml中的relaxNG validation是透過API: xmlTextReaderRelaxNGValidate(reader, rng)來呼叫。reader則是透過 API:xmlReaderForFile(xmlfilename, encoding ,parse options)來建立,reader是一個xmlTextReader的data structure,defined in xmlreader.c中。
看來是先將rng轉成一個內部的struct,再以這個struct來parse xml檔。還要再看看。
沒有留言:
張貼留言