私はXMLスキーマを生成し、Python3でデータファイルを生成しています。lxmlで書き直しを使用する
生成されたスキーマには基本スキーマが含まれており、カタログを使用してインクルードURIをローカルファイルに変更します。私はPythonで環境変数 'XML_CATALOG_FILES'を設定しました。
はしかし、私が動作するようには思えないデータファイルで、一般的な位置基準の代わりに、局所的に生成されたスキーマを使用して書き換えるためにrewriteSystemを使用するようにしてください。
ここにカタログがあります。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD XML Catalogs V1.1//EN" "http://www.oasis-open.org/committees/entity/release/1.1/catalog.dtd">
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<!-- S3Model 3.0.0 RM Schema -->
<uri name="https://www.s3model.com/ns/s3m/s3model_3_0_0.xsd" uri="s3model/s3model_3_0_0.xsd"/>
<!-- S3Model DMs -->
<rewriteSystem systemIdStartString="https://dmgen.s3model.com/dmlib/" rewritePrefix="file:///home/tim/DII/Kunteksto/output/"/>
</catalog>
このカタログファイルは、XercesまたはSaxonのいずれかを使用して検証するOxygenで正常に動作します。
XMLファイルの例参照は次のようになります。
xsi:schemaLocation="https://www.s3model.com/ns/s3m/ https://dmgen.s3model.com/dmlib/dm-a42592f1-e8b3-4862-b6e2-ac0e48c138f4.xsd">
任意のアイデアを理由lxmlの(Libxml2は)は、このrewriteSystemを認識していますか?
あなたは「lxml(Libxml2)がこの書き換えを認識しない理由は何ですか?」という意味ですか? – mzjn
あなたはPython 3について言及していますが、質問にはPythonコードはありません。これをどのように再現できますか? – mzjn
質問は特にPythonに関するものではありません。カタログからのリライトを使用しないlxml経由のLibxml2についてです。ですから、lxml経由で(rewriteSystemを使って)XMLカタログを使用しようとすると再現できますが、もちろんPython経由です。 –