Ok。ローカル ドキュメントから dcterms xml 名前空間が検証されるように、問題を修正するために xmllint のカタログ ファイルをセットアップしたいと考えています。私はすべてを正しく行ったと信じていますが、うまく機能していないようです。
私はOSXを実行しています。
ディレクトリ /etc/xml を作成しました
$ mkdir /etc/xml
$ cd /etc/xml
そのディレクトリに dcterms.xsd をダウンロードしました
$ ls -l
-rw-r--r-- 1 ibis wheel 12507 24 Jul 11:42 dcterms.xsd
「カタログ」という名前のファイルを作成しました
$ xmlcatalog --create > catalog
dcterms 名前空間をカタログ ファイルに追加しました
$ xmlcatalog --noout --add uri http://purl.org/dc/elements/1.1/ file:///etc/xml/dc.xsd
$ xmlcatalog --noout --add uri http://purl.org/dc/terms/ file:///etc/xml/dcterms.xsd
$ cat catalog
<?xml version="1.0"?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<uri name="http://purl.org/dc/elements/1.1/" uri="file:///etc/xml/dc.xsd"/>
<uri name="http://purl.org/dc/terms/" uri="file:///etc/xml/dcterms.xsd"/>
</catalog>
作業ディレクトリに、Empty.xsd という名前の単純な xml スキーマを作成しました。
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/Empty" xmlns:tns="http://www.example.org/Empty" elementFormDefault="qualified">
<element name="empty">
<complexType>
<sequence>
<any processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<anyAttribute></anyAttribute>
</complexType>
</element>
</schema>
processcontnts は「厳密」であることに注意してください。
すべての検証をトリガーする XML ファイルを作成しました。
<?xml version="1.0" encoding="UTF-8"?>
<empty xmlns="http://www.example.org/Empty"
xmlns:dcterms="http://purl.org/dc/terms/">
<dcterms:title>A title</dcterms:title>
</empty>
次に、それを検証しようとします。
$ xmllint --noout --valid --schema Empty.xsd Empty.xml
Empty.xml:2: validity error : Validation failed: no DTD found !
y xmlns="http://www.example.org/Empty" xmlns:dcterms="http://purl.org/dc/terms/"
^
Empty.xml:3: element title: Schemas validity error : Element '{http://purl.org/dc/terms/}title': No matching global element declaration available, but demanded by the strict wildcard.
Empty.xml fails to validate
ドキュメントで指定されているようにカタログをセットアップし、ローカルの dcterms スキーマ ファイルを指定しました。xmllint がそれを見つけられないのはなぜですか?