Genişletilebilir İşaretleme Dili (XML) ile XML Şeması (XSD) arasındaki fark nedir?
Genişletilebilir İşaretleme Dili (XML) ile XML Şeması (XSD) arasındaki fark nedir?
Yanıtlar:
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.
<?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.
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ı ...
<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>.
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:
XSD, XML'e dayanır ve yazılır.
XSD, belgede görünebilecek öğeleri ve yapıları tanımlar, ancak XML bunu yapmaz.
XSD, verilerin düzgün şekilde yorumlanmasını sağlarken XML bunu yapmaz.
Bir XSD belgesi XML olarak doğrulanır, ancak bunun tersi her zaman doğru olmayabilir.
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.
XML tanımlar sözdizimi ait elemanları ve nitelikleri bir yapılanma verileri için de şekillendirilmiş belge.
XSD (XML Şeması aka) , DTD gibi, önce yetkileri e X'in içinde tensibility XML tanımlamak için kullanıcı sağlayarak kelime ve dilbilgisi ait öğeleri ve öznitelikleri bir de geçerli bir XML belgesine.
<school>
<firstname>John</firstname>
<lastname>Smith</lastname>
</school>
<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,
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.
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 .
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.