0

XSDフォーマットについて質問があります。
たとえば、私はXMLドキュメントを持っています

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:media="http://search.yahoo.com/mrss/">
  <entry>
    <title>Examples</title>
    <id>1</id>
    <media:group>
      <media:thumbnail url="http://www.abc.com/image.jpg" />
      <trailer url="http://www.abc.com" />
      <info url="http://www.abc.com/xsd/info.jpg" />
      <media:description>1</media:description>
      <media:content name="video.mp4" type="video" duration="400" repeat="true"/>
    </media:group>
    <menu>
      <item uri="localhost:8080/xyzt" />
    </menu>
  </entry>
</feed>

次に、Webサイトhttp://www.xmlforasp.net/codebank/system_xml_schema/buildschema/buildxmlschema.aspxを使用してXSDファイルに自動変換します(試してみることができます)。ただし、Webサイトhttp://www.xmlforasp.net/schemavalidator.aspxを使用してXSDバリデーターをチェックすると、その時点でXSDフォーマットに関する問題が発生します
。問題:

無効な'name'属性値'media:group':'名前内の位置5にある':'文字、16進値0x3Aを名前に含めることはできません。

    <xsd:element name="entry">
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element name="title" type="xsd:string" />
          <xsd:element name="id" type="xsd:int" />
          <xsd:element name="media:group">             <!-- here -->
            <xsd:complexType>
              <xsd:sequence>

わかりません...xsd:elementの名前に「:」文字を含めることができないのはなぜですか?上記の問題が正しい場合、どうすれば修正できますか。

あなたがそれを知っているなら私を助けてください。
どうもありがとうございます !

4

2 に答える 2

1

別のバリデーターを試してください。私はこのサイトについて何も知りませんが、証拠によると、名前空間を認識しない XML パーサーを使用して XML を解析しています。それはかなり奇妙なことです。

于 2012-11-14T08:29:27.107 に答える
1

「:」の前のテキストは a と呼ばれnamespaceます。たとえば、「media:group」では、名前空間は「media」です。

名前空間で要素を定義するには、期待どおりに言うことはできません<xsd:element name="media:group">

代わりに、targetNamespaceスキーマ全体の として指定する必要があり、そのスキーマで定義されたすべての要素がその名前空間を持ちます。このように (qualified部分は、XML が「メディア」で行うように、XML が名前空間を使用する必要があることを意味します):

<xsd:schema targetNamespace="http://search.yahoo.com/mrss/"
            elementFormDefault="qualified" ...>
  ...
  <xsd:element name="group"> 

を省略し て、要素に名前空間がないスキーマを使用することもできますtargetNamespace

<xsd:schema ...>
  ...
  <xsd:element name="entry"> 

注: 2 つの名前空間で要素を定義するには、2 つのスキーマが必要です。通常、スキーマをimporting1 つずつ別のスキーマに結合できます。しかし、あなたの XML には問題が<entry>あり<media:group>ます<trailer>

申し訳ありませんが、これを解決できません。私の最善の試みでは 3 番目のスキーマ ( を定義<trailer>) を使用しましたが、これはクラッシュxmllintします... 他の誰かが解決できますか?

于 2012-11-14T13:19:53.217 に答える