PHP XML验证

问题描述:

针对多个XSD文件验证XML文件(或其一部分)的最佳方式是什么?PHP XML验证

例如,我有一个配置加载下面的模式:

<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

你解决这个问题? – 2010-05-07 07:41:53

不要将它看作一个大的XML文件,而应该将它看作块。自定义XML部分不是您的主文件架构的一部分,它只是其数据。尝试使用此XSD文件进行验证,然后在加载自定义节时使用另一个XSD文件验证XML。

我正在解决同样的问题,我只是简单地合并文件(这可能在我的情况下,因为它是一个非常简单的)。

链接:Is it possible to validate XML against multiple schemas in PHP?