0


XMLSchema に対して XML を検証していました。 targetnamespace を割り当てると、エラーがスローされます。

私のコードは以下の通りです。


string 
ab="<HostName>Arasanalu</HostName><AdminUserName>Administrator</AdminUserName>
    <AdminPassword>A1234</AdminPassword><PlaceNumber>38</PlaceNumber>"


        try
        {
        XmlReaderSettings settings = new XmlReaderSettings();

        settings.ValidationType = ValidationType.Schema;
        settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
        settings.ValidationFlags |= XmlSchemaValidationFlags.AllowXmlAttributes;
        settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
       // settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);


        //settings.Schemas.Add("http://www.w3.org/2001/XMLSchema","ab1.xml");

        settings.Schemas.Add(null, XmlReader.Create(new StringReader(@"<xs:schema  xmlns:xs=""http://www.w3.org/2001/XMLSchema"" targetNamespace=""root"">
                                                            <xs:element name=""root"" type=""RootElementType""/>
                                                             <xs:complexType name=""RootElementType"">
                                                              <xs:sequence>
                                                             <xs:any  minOccurs=""1"" maxOccurs=""unbounded"" processContents=""lax""/>
                                                            </xs:sequence>
                                                           </xs:complexType>
                                                         </xs:schema>
                                                          <bp:root xmlns:bp=""myNamespace"">
                                                          <parameters>ab</parameters>
                                                           </bp:root>
                                                            </root>")));


          // Create the XmlReader object.
                XmlReader xmlrdr = XmlReader.Create(new StringReader("<root>" + ab+ "</root>"),settings);

                // Parse the file. 
                while (xmlrdr.Read()) ;

それはエラーを投げていました:

  ex = {"Type 'RootElementType' is not declared."}

TargetNamespace を削除すると、任意の要素に processContents=""lax"" を指定すると正常に機能します。

targetnamespace の使用法を正しく機能させる方法を教えてください (特定の名前空間に対してデフォルトの「strict」を使用するため、processContents=""lax"" を削除できるようにします)。

よろしく、
チャンナ

4

1 に答える 1

0

xmlns="root"と の両方に を追加しxs:schemsますxs:element

<xs:schema  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
            targetNamespace="root" 
            xmlns="root">
  <xs:element name="root" type="RootElementType" 
              xmlns="root"/>

次の MS 記事に関連している可能性があります: BUG: Type "###" is not defined in reference to local type of an included XSD Schema file

于 2013-08-07T07:16:46.130 に答える