スキーマをいじってから 3 年が経ちましたが、スキーマが名前空間の接頭辞などに非常にこだわっていたことを覚えています。また、Eclipse で XML エディターを使用する場合 (私は Indigo を使用しています)、展開しないと複雑な型を簡単に解析できないことも覚えています。
XML の専門家であるあなたは、私の XML ファイルを見て、先頭に追加された XSD XML スキーマの何が問題なのかを教えてくれませんか?
ありがとう。
チャオ
+++++
Eclipse は次のように不満を述べています。
ルート要素に続く文書内のマークアップは整形式でなければなりません。
XML を手動で作成し、そこから XML を自動生成したことを指摘しておく必要があります。
http://www.xmlforasp.net/codebank/system_xml_schema/buildschema/buildxmlschema.aspx
(複雑なタイプを分離する:3年前にAmazonのAmazonセラーセントラルXMLファイルを手動で手動で行ったように)
場合によっては ref を使用する必要があるように思えますが、専門家に委ねます。
+++++
<?xml version="1.0" encoding="utf-16"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="idioms" type="idiomsType" />
<xsd:complexType name="idiomsType">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="idiom" type="idiomType" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="idiomType">
<xsd:sequence>
<xsd:element name="phrase" type="xsd:string" />
<xsd:element name="meaning" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
<idioms>
<idiom>
<phrase>A bit much</phrase>
<meaning>Excessive or annoying.</meaning>
</idiom>
<idiom>
<phrase>A bridge too far</phrase>
<meaning>Act of overreaching.</meaning>
</idiom>
</idioms>
はい、更新します。XML にインラインで XSD を含める私の近道は違法です。だから私はそれをXSDファイルに戻しました。また、プレフィックスを xml で開始できないこともわかったので、プレフィックスを 'tc' に変更しました。
XSD は正しいものになりました (Amazon セラーセントラルの XSD を展開したのと同じスタイルで)。
<?xml version="1.0" encoding="utf-16"?>
<xsd:schema xmlns:tcidioms="urn:tcidioms" targetNamespace="urn:tcidioms" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="idioms" type="tcidioms:idiomsType"/>
<xsd:complexType name="idiomsType">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="idiom" type="tcidioms:idiomType" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="idiomType">
<xsd:sequence>
<xsd:element name="phrase" type="xsd:string" />
<xsd:element name="meaning" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
しかし、これを私の XML ファイルに含めようとすると、次のようになります (XML と XSD は同じディレクトリにあります)。
それは不平を言います:ドキュメントの文法制約(DTDまたはXMLスキーマ)が検出されませんでした。
XML ドキュメントの 2 行が正しくないということです。このファイルを含めるためにいくつかの亜種を試しましたが、どれも機能しませんでした。この XML (および XSD) は、http 経由ではなく、ローカル ファイル システムから読み取られることを覚えておいてください。この方法でまだ検証されますか?
<?xml version="1.0" encoding="utf-16"?>
<idioms xmlns:tcidioms="urn:tcidioms" targetNamespace="urn:tcidioms ./EnglishIdioms.xsd">
<idiom>
<phrase>A bit much</phrase>
<meaning>Excessive or annoying.
</meaning>
</idiom>
<idiom>
<phrase>A bridge too far</phrase>
<meaning>Act of overreaching, going too far
and getting into trouble
or
failing.
</meaning>
</idiom>
</idioms>
Visual Studio 2010 (Russian Doll Style スキーマを作成):
XML ファイルは、VS2010 インターフェイスでスキーマを使用するように設定されていますが、コードでそれを示していませんか?
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="idioms">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="idiom">
<xs:complexType>
<xs:sequence>
<xs:element name="phrase" type="xs:string" />
<xs:element name="meaning" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<idioms>
<idiom>
<phrase>A bit much</phrase>
<meaning>Excessive or annoying.</meaning>
</idiom>
<idiom>
<phrase>A bridge too far</phrase>
<meaning>Act of overreaching.</meaning>
</idiom>
<idiom>
<phrase>A chain is no stronger than its weakest link</phrase>
<meaning>The weakest part of an object is it's strength.</meaning>
</idiom>
</idioms>