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

私は同じ問題を解決していましたが、ファイルを単純にマージしました(私の場合は非常に単純なものだったので可能でした)。

リンク: PHP で複数のスキーマに対して XML を検証することは可能ですか?

于 2010-05-06T21:50:31.457 に答える
0

これを 1 つの大きな XML ファイルと考えるのではなく、まとまりとして考えてください。カスタム XML セクションは、メイン ファイルのスキーマの一部ではなく、単なるデータです。この XSD ファイルで検証を試みてから、カスタム セクションをロードするときに、その XML を別の XSD ファイルで検証します。

于 2010-04-14T05:12:58.323 に答える