2

针对多个 XSD 文件验证 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>

由于现在存在 Configuration 类,它允许添加一个<section>带有定义具体解析器类的标记(很像 ASP.NET 中的自定义配置部分)。但是,我不确定如何验证正在解析的部分。

如果可以仅使用 XSD 文件/字符串验证这部分代码而不将其写回文件?

4

2 回答 2

0

与其将其视为一个大型 XML 文件,不如将其视为块。自定义 XML 部分不是主文件架构的一部分,它只是数据。尝试使用此 XSD 文件进行验证,然后在加载自定义部分时使用另一个 XSD 文件验证该 XML。

于 2010-04-14T05:12:58.323 回答
0

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

链接:是否可以针对 PHP 中的多个模式验证 XML?

于 2010-05-06T21:50:31.457 回答