2010-04-14 4 views
2

Каков наилучший способ проверки XML-файла (или его части) на несколько файлов XSD?PHP XML Validation

К примеру, у меня есть следующие схемы для загрузчика конфигурации:

<xsd:schema xmlns="http://www.kauriproject.org/schema/configuration" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.kauriproject.org/schema/configuration" 
    elementFormDefault="qualified"> 

    <xsd:element name="configuration" type="configuration" /> 

    <xsd:complexType name="configuration"> 
     <xsd:choice maxOccurs="unbounded"> 
      <xsd:element name="import" type="import" minOccurs="0" maxOccurs="unbounded" /> 
      <xsd:element name="section" type="section" /> 
     </xsd:choice> 
    </xsd:complexType> 

    <xsd:complexType name="section"> 
     <xsd:sequence> 
      <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" /> 
     </xsd:sequence> 

     <xsd:attribute name="name" type="xsd:string" use="required" /> 
     <xsd:attribute name="type" type="xsd:string" use="required" /> 
    </xsd:complexType> 

    <xsd:complexType name="import" mixed="true"> 
     <xsd:attribute name="resource" type="xsd:string" /> 
    </xsd:complexType> 
</xsd:schema> 

Поскольку класс конфигурации существует сейчас, она позволяет один добавить <section> тег с определить конкретный класс анализатора (так же, как обычаем конфигурации в ASP.NET). Тем не менее, я не уверен, как проверять анализируемый раздел.

Если возможно проверить только этот раздел кода с файлом/строкой XSD, не записывая его обратно в файл?

+0

Вы решили проблему? –

ответ

0

Вместо того, чтобы думать об этом как о одном большом XML-файле, подумайте об этом с точки зрения кусков. Пользовательские разделы XML не являются частью схемы вашего основного файла, ее просто данных. Попытка проверки с помощью этого XSD-файла, тогда при загрузке настраиваемого раздела проверьте этот XML с другим файлом XSD.