ホームページ  >  記事  >  バックエンド開発  >  スキーマを使用して XML を検証できませんが、から書き込まれたファイルを読み取ることで動作します。

スキーマを使用して XML を検証できませんが、から書き込まれたファイルを読み取ることで動作します。

WBOY
WBOY転載
2024-02-22 12:34:02694ブラウズ

无法使用架构验证 XML,但可以通过从中读取写入的文件来工作

質問の内容

現在 lxml を使用しており、xml コンテンツを検証したいと考えています。

私は rei = etree.element("rei", nsmap={none: 'http://www.rei-c.org/ns/1.0'} から始めました。完全に Python で書かれています。多数の子要素を含む。 p>

ここで、次のコードを使用して、特定の .xsd ファイルを使用して構造が正しいかどうかを確認したいと思います。 リーリー

エラーで false が返されます。

要素 'rei': ルートを検証できる一致するグローバル宣言がありません。

次を使用して XML を記述すると、非常に奇妙なことがわかりました。 リーリー

b= etree.parse('test.xml')

で再度開くと、エラーは発生せず、結果として xmlschema.validate(b) 、XML 構造は有効です XML 構造に何を追加する必要があるかわかりますか?

######編集:### xml

の最初の項目が無効です

有効な XML ファイルの最初の項目

######編集:###### リーリー

正解

https://www.php.cn/link/e1ff36b97044a1c7c73c73e4d27aeba4

を見てください。基本的には

を使用する必要があります。 リーリー

すべての要素に対して以下を実行し、それらが rei 名前空間で作成されていることを確認します。

スキーマに対して有効なメモリ内に作成された要素ツリー (インポートされた w3c xml.xsd をダウンロードした後) は、たとえば

です。 リーリー

以上がスキーマを使用して XML を検証できませんが、から書き込まれたファイルを読み取ることで動作します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。