Я использую PHP xmlreader для проверки и анализа данных XML.Этот xml проверяется с помощью некоторой xsd-схемы из локального файла через функцию XMLReader :: setSchema и удаленной xsd-схемы из http: // через xsd: import / include.Все работает нормально, но он извлекает схему xsd из сети и читает с диска каждый раз при вызове.
Итак, мои вопросы:
Есть ли способ кэширования удаленной схемы xsd в локальной оперативной памяти?Для локальных файлов схемы, я думаю, что tmpfs в Linux будет работать нормально, но есть ли другой способ кэшировать локальные файлы схемы xsd?
Решение
Спасибо VolkerK за указаниесистема xmlcatalog.Он прекрасно работает с libxml / php xmlreader.В Linux просто отредактируйте файл / etc / xml / catalog (это происходит из xml-common, когда вы находитесь в Fedora), добавьте некоторые записи, например (например):
<rewriteURI uriStartString="http://schemas.xmlsoap.org/soap/envelope/" rewritePrefix="/etc/xml/SOAP-Envolope.xsd"/>
<rewriteURI uriStartString="http://schemas.xmlsoap.org/soap/encoding/" rewritePrefix="/etc/xml/SOAP-Encoding.xsd"/>
и схему загрузки вручную (например, http://schemas.xmlsoap.org/soap/encoding/ -> /etc/xml/SOAP-Encoding.xsd), тогда php xmlreader работает, как и ожидалось, при разборе SOAP-сообщений.