XML ve XSD arasındaki fark nedir?


111

Genişletilebilir İşaretleme Dili (XML) ile XML Şeması (XSD) arasındaki fark nedir?

Yanıtlar:


145

Aslında XSD, XML'in kendisidir. Amacı, başka bir XML belgesinin yapısını doğrulamaktır. XSD, herhangi bir XML için zorunlu değildir, ancak XML'in bazı belirli amaçlar için kullanılabileceğini garanti eder. XML yalnızca uygun format ve yapıdaki verileri içerir.


Açıkçası - eğer bir 3. taraf bana aşağıdakilere benzer bir .XSD belgesi göndermişse: <xs: element name = "QuoteRequestID" type = "xs: unsignedLong" minOccurs = "0" /> dahil - bu sadece alanların bir açıklaması değil. Onlardan <QuoteResultID> vb. İle ham XML olabilecek gerçek bir örnek istek istemek makul bir şey mi?
James Wilson

3
Elbette onlara sorabilirsiniz. Bunu sizin için yapabilecek bazı çevrimiçi araçları da kullanabilirsiniz, örneğin bunun gibi - xsd2xml . Sadece xsd'yi yapıştırın ve ona göre örnek bir xml belgesi oluşturacaktır.
2016

@anthares, ile bağlantıyı denedim: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="QuoteRequestID" type="xs:unsignedLong" minOccurs="0" /> </xs:schema> ancak şu hatayı Error!!! The 'minOccurs' attribute cannot be present.
aldım

Bu neden sorun olur?
heretoinfinity

111


Bir örnek al

<root>
  <parent>
     <child_one>Y</child_one>
     <child_two>12</child_two>
  </parent>
</root>

ve bunun için bir xsd tasarlayın:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" 
xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="parent">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="child_one" type="xs:string" />
              <xs:element name="child_two" type="xs:int" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


XSD ile mümkün olmayan şey: liste çok küçük olduğu için önce onu yazmak istersiniz
1) Bir düğümü / özniteliği başka bir düğümün / özniteliğin değerini kullanarak doğrulayamazsınız.
2) Bu bir kısıtlamadır: XSD dosyasında tanımlanan bir eleman yalnızca bir veri türü ile tanımlanmalıdır. [yukarıdaki örnekte, <child_two>başka bir <parent>düğümde görünmek için , veri türü int dışında tanımlanamaz.
3) Elemanların ve özniteliklerin onaylanmasını göz ardı edemezsiniz, yani bir eleman / öznitelik XML'de görünüyorsa, karşılık gelen XSD'de iyi tanımlanmış olmalıdır. Kullanımı <xsd:any>izin verse de kendi kuralları vardır. Doğrulama hatasına yol açan uymak. Benzer bir yaklaşım denedim ve kesinlikle başarılı olamadım, işte Soru-Cevap


XSD ile mümkün olanlar:
1) XML düğümlerinin doğru hiyerarşisini test edebilirsiniz. [xsd, hangi çocuğun hangi ebeveynin altına girmesi gerektiğini, vb. tanımlar, hangisi hata olarak sayılır, yukarıdaki örnekte, child_two kökün alt öğesi olamaz, ancak sırayla bir olan "ebeveyn" etiketinin alt öğesidir "kök" düğümün çocuğu, bir hiyerarşi var ..]
2) Düğümlerin değerlerinin Veri tipini tanımlayabilirsiniz. [yukarıdaki örnekte child_two, sayı dışında herhangi bir veriye sahip olamaz] 4) minOccurs ve maxOccurs kullanarak öğelerin oluşumuna kısıtlama koyabilirsiniz, varsayılan değerler 1 ve 1'dir.
3) Ayrıca özel veri_türleri tanımlayabilirsiniz, [örneğin, düğüm <month>için olası veriler 12 aydan biri olabilir .. bu nedenle 12 ayın tamamını tanımlamanız gerekir yeni bir veri türünde tüm 12 ay adlarının numaralandırma değerleri olarak yazılması ..

.. ve daha fazlası ...


1
@ InfantPro'Aravind '"Bir düğümü / özniteliği başka bir düğümün / özniteliğin değerini kullanarak doğrulayamazsınız." İle ne demek istediniz? Neden birisi bunu yapmak istesin?
Geek


"Bir düğümü / özniteliği başka bir düğümün / özniteliğin değerini kullanarak doğrulayamazsınız". Bu ne anlama geliyor
GrowinMan

@ GrowinMan, Koşullu doğrulama (Ebeveyn-Çocuk ilişkisi değil) Ör: Bu sizin xml'niz ise: <root> <A>A</A> <B/> <C/> </root>ve Düğüm <A>ise <A>B</A>, o zaman <B>zorunlu hale getirin, sonra zorunlu <A>C</A>hale getirin <C>.
InfantPro'Aravind '

Yukarıdaki gereksinimi yalnızca XSD
InfantPro'Aravind '

15

XSD:
XSD (XML Şema Tanımı), Genişletilebilir Biçimlendirme Dili (XML) belgesindeki öğelerin resmi olarak nasıl tanımlanacağını belirtir.
Xml:
XML, verileri tanımlamak için tasarlanmıştır . Yazılımdan olduğu kadar donanımdan da bağımsızdır.
Aşağıdakileri geliştirir.
-Bilgi paylaşımı.
-Platform bağımsız.
-Veri kullanılabilirliğini artırmak.

farklılıklar:

  1. XSD, XML'e dayanır ve yazılır.

  2. XSD, belgede görünebilecek öğeleri ve yapıları tanımlar, ancak XML bunu yapmaz.

  3. XSD, verilerin düzgün şekilde yorumlanmasını sağlarken XML bunu yapmaz.

  4. Bir XSD belgesi XML olarak doğrulanır, ancak bunun tersi her zaman doğru olmayabilir.

  5. XSD, hataları yakalamada XML'den daha iyidir.

Bir XSD , kodlanacağı gerçek verilerle ilgili olarak belgelerde kullanılabilen öğeleri tanımlar .
örneğin:
1/12/2010 olarak ifade edilen bir tarih, 12 Ocak veya 1 Aralık anlamına gelebilir. Bir XSD belgesindeki bir tarih veri türü bildirmek, bunun XSD tarafından dikte edilen biçime uymasını sağlar.


İlk ifade her şeyi açıkladı.
Ojonugwa Jude Ochalifu


6

BASİT XML ÖRNEĞİ:

<school>
  <firstname>John</firstname>
  <lastname>Smith</lastname>
</school>

XML YUKARIDAKİ XSD (Açıklandı):

<xs:element name="school">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Buraya:

xs: element : Bir elemanı tanımlar.

xs: dizi : Alt öğelerin yalnızca belirtilen sırada göründüğünü belirtir.

xs: complexType : Başka öğeler içerdiğini belirtir.

xs: simpleType : Başka öğeler içermediklerini belirtir.

tür: dize, ondalık, tamsayı, mantıksal, tarih, saat,

  • Basit bir deyişle , xsd, XML verilerini belirli bir türle temsil etmenin ve doğrulamanın başka bir yoludur.
  • Ekstra özniteliklerin yardımıyla birden fazla işlemi gerçekleştirebiliriz.

  • Xsd üzerinde herhangi bir görevi gerçekleştirmek xml'den daha basittir.


Selam! XSD dosyası oluşturmak için hangi programı kullanmalıyım?
Judith

@ Judith programı? sorunuzu açıklar mısınız? editör veya dil veya araç gibi mi?
shubham1js

1

Temel olarak bir XSD dosyası, XML dosyasının nasıl görüneceğini tanımlar. Bu bir Şema dosyasıXML dosyasının yapısını tanımlayan dosyasıdır. Böylece olası alanların ne olduğunu ve ne büyüklükte olacağını belirtir.

Bir XML dosyası, XSD'de tanımlanan kuralları kullandığı için bir XSD örneğidir .


0

XML, f.ex'ten çok daha geniş bir uygulamaya sahiptir. HTML. İçsel veya varsayılan bir "uygulaması" yoktur. Bu nedenle, web sayfalarının da izin verilenler tarafından yönetildiğini gerçekten umursamayacak olsanız da, yazar tarafından, muhtemelen bir XML belgesinin neleri içerip içermeyeceğini kesin olarak tanımlamak isteyeceksiniz.

Bir veritabanı tasarlamak gibi.

XML teknolojileri ile ilgili olan şey, doğaları gereği metinsel olmalarıdır. XSD ile bu, PHP gibi metin işleme araçlarına "takılabilen" bir veri yapısı tanımlama çerçevesine sahip olduğunuz anlamına gelir. Dolayısıyla, yalnızca verilerin kendisini değiştirmekle kalmaz, aynı zamanda yapıyı kolayca değiştirebilir ve belgeleyebilir ve hatta ön uçları otomatik olarak oluşturabilirsiniz.

Bu şekilde bakıldığında XSD, veri (XML) ve veri işleme araçları arasındaki "yapıştırıcı" veya "ara katman yazılımı" dır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.