Проверяет ли XMLHttpRequest документы XML на соответствие их XSD, если оно существует? - PullRequest
2 голосов
/ 06 июля 2011

Если нет, есть ли способ проверить XML-документ по его XSD?

Ответы [ 2 ]

3 голосов
/ 06 июля 2011

Проверяет ли XMLHttpRequet документы XML на соответствие их XSD, если оно существует?

Нет.

XMLHttpRequest - это просто имя метода, содержимое не обязательно должно быть XML (именно поэтому оно обычно используется с JSON и сериализованными формами).Синтаксический анализатор XML обычно только проверяет, является ли XML допустимым, а не соответствует ли он конкретной схеме или DTD.Я сомневаюсь, что любой синтаксический анализатор XML браузера.

Если вы хотите проверить схему или DTD, вам нужен валидатор XML, такой как в XMLSpy.Как писал Харун, вы можете получить доступ к хост-объекту, который будет выполнять проверку, но, скорее всего, он не будет кросс-браузерным.

2 голосов
/ 06 июля 2011

код JavaScript для проверки XML-файла по xsd,

       <SCRIPT LANGUAGE="JavaScript">

          var strFile=path of xml file;

          function validateFile(strFile)
          {
           // Create a schema cache and add books.xsd to it.               
           var xs = new ActiveXObject("MSXML2.XMLSchemaCache.4.0");


           xs.add("urn:books", "xsd path");

           // Create an XML DOMDocument object.
           var xd = new ActiveXObject("MSXML2.DOMDocument.4.0");

          // Assign the schema cache to the DOMDocument's
          // schemas collection.
           xd.schemas = xs;

          // Load books.xml as the DOM document.
          xd.async = false;
          xd.validateOnParse = true;
          xd.resolveExternals = true;
          xd.load(strFile);

         // Return validation results in message to the user.
         if (xd.parseError.errorCode != 0)
         {
           return("Validation failed on " + strFile +
           "\n=====================" +
           "\nReason: " + xd.parseError.reason +
           "\nSource: " + xd.parseError.srcText +
           "\nLine: " + xd.parseError.line + "\n");
         }
         else
            return("Validation succeeded for " + strFile +
            "\n======================\n" +
            xd.xml + "\n");
        }

      </SCRIPT>

XML-файл,

       <?xml version="1.0"?> 
         <bookstore xmlns="generic"> 
          <book genre="autobiography"> 
           <title>The Autobiography of Benjamin Franklin</title>                 
            <price>89.88</price> 
         </book> 
       <book genre="novel"> 
        <title>The Confidence Man</title>             
        <price>11.99</price> 
       </book> 
      </bookstore> 

XSD-файл (файл схемы),

       <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="generic" elementFormDefault="qualified" targetNamespace="generic"> 
         <xsd:element name="bookstore" type="bookstoreType"/> 
         <xsd:complexType name="bookstoreType"> 
             <xsd:sequence maxOccurs="unbounded"> 
                <xsd:element name="book" type="bookType"/> 
             </xsd:sequence> 
         </xsd:complexType> 
         <xsd:complexType name="bookType"> 
           <xsd:sequence> 
              <xsd:element name="title" type="xsd:string"/>                  
              <xsd:element name="price" type="xsd:decimal"/> 
           </xsd:sequence> 
         <xsd:attribute name="genre" type="xsd:string"/> 
         </xsd:complexType>             
    </xsd:schema> 

Надеюсь, это поможет ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...