XSD dosyalarının amacı nedir?


90

XML dosyasında C # (.NET) üzerinden sorgulama yapabildiğimize göre, neden bir XSD dosyasına ihtiyacımız var? Bunun belirli bir XML dosyasının meta veri dosyası olduğunu biliyorum. İlişkileri XSD'de belirtebiliriz, ama peki işleyişi nedir?

XML

<?xml version="1.0" encoding="utf-8" ?>
<Root>
  <Customers>
    <Customer CustomerID="GREAL">
      <CompanyName>Great Lakes Food Market</CompanyName>
      <ContactName>Howard Snyder</ContactName>
      <ContactTitle>Marketing Manager</ContactTitle>
      <Phone>(503) 555-7555</Phone>
      <FullAddress>
        <Address>2732 Baker Blvd.</Address>
        <City>Eugene</City>
        <Region>OR</Region>
        <PostalCode>97403</PostalCode>
        <Country>USA</Country>
      </FullAddress>
    </Customer>
  </Customers>
  <Orders>
    <Order>
      <CustomerID>GREAL</CustomerID>
      <EmployeeID>6</EmployeeID>
      <OrderDate>1997-05-06T00:00:00</OrderDate>
      <RequiredDate>1997-05-20T00:00:00</RequiredDate>
      <ShipInfo ShippedDate="1997-05-09T00:00:00">
        <ShipVia>2</ShipVia>
        <Freight>3.35</Freight>
        <ShipName>Great Lakes Food Market</ShipName>
        <ShipAddress>2732 Baker Blvd.</ShipAddress>
        <ShipCity>Eugene</ShipCity>
        <ShipRegion>OR</ShipRegion>
        <ShipPostalCode>97403</ShipPostalCode>
        <ShipCountry>USA</ShipCountry>
      </ShipInfo>
    </Order>
    <Order>
      <CustomerID>GREAL</CustomerID>
      <EmployeeID>8</EmployeeID>
      <OrderDate>1997-07-04T00:00:00</OrderDate>
      <RequiredDate>1997-08-01T00:00:00</RequiredDate>
      <ShipInfo ShippedDate="1997-07-14T00:00:00">
        <ShipVia>2</ShipVia>
        <Freight>4.42</Freight>
        <ShipName>Great Lakes Food Market</ShipName>
        <ShipAddress>2732 Baker Blvd.</ShipAddress>
        <ShipCity>Eugene</ShipCity>
        <ShipRegion>OR</ShipRegion>
        <ShipPostalCode>97403</ShipPostalCode>
        <ShipCountry>USA</ShipCountry>
      </ShipInfo>
    </Order>
  </Orders>
</Root>

OrderSağlananlara göre öğelerden veri almak istiyorum CustomerID.

Ayrıca : XSD'deki ilişkileri vermenin amacı nedir?


stackoverflow.com/questions/2333998/… , ayrıca başvurulabilir!
AVA

Yanıtlar:


106

XSD dosyaları, XML dosyalarının belirli bir biçime uygun olduğunu doğrulamak için kullanılır.

Bu bakımdan, kendilerinden önce var olan DTD'lere benzerler .

XSD ve DTD arasındaki temel fark, XSD'nin XML olarak yazılması ve okunması ve anlaşılması daha kolay kabul edilmesidir.


teşekkürler, xml dosyasından veri almak için Linq kullanarak c3.net'teki xsd dosyalarında sorgulama yapabilir miyim? Nasıl?
Kırmızı Swan

@Lalit - Linq'in bununla hiçbir ilgisi yok.
Oded

Bir diğer önemli fark da, bir DTD'de XSD'de pek çok şeyi kolayca yapamamanızdır.
mort

Yani veri almak için sadece xml dosyasını kullanabilirim değil mi? Şema dosyasını oluşturmaya ihtiyacım yok. (Şimdilik doğrulamak istemiyorum) Sadece her elemandaki kimlik haritalarına bağlı çeşitli kayıtlara sahip xml verilerini almak istiyorum.
Kırmızı Swan

4
@Lalit - İlişkileri bu şekilde önemsemiyorsanız ve bir tür kurala (bir XSD'de kodlanmış) uygun olup olmadıklarını kontrol etmeniz gerekmiyorsa, bir XSD kullanmayın ve doğrudan XML'i sorgulayın.
04

48

XML Şeması (XSD dosyası) olmadan bir XML dosyası, nispeten özgür bir öğe ve öznitelik kümesidir. XSD dosyası, hangi öğelere ve özniteliklere hangi sırayla izin verildiğini tanımlar.

Genel olarak XML bir üstdildir. XSD dosyaları, o dil içinde belirli dilleri tanımlar. Örneğin, XSD dosyanız XHTML 1.0 tanımını içeriyorsa, XML dosyanızın başka bir format yerine XHTML 1.0'a uyması gerekir.


19

Sorunuzda C #'dan bahsediyorsunuz, böylece XSD'nin bir C # arayüzüne benzer bir rol oynadığını düşünmek yardımcı olabilir.

XML'in neye benzemesi gerektiğini, benzer bir şekilde, bir arayüzün bir sınıfın neyi uygulaması gerektiğini tanımlamasına benzer şekilde tanımlar.


4
Eğer bir sınıf ve onun uygulaması gereken bir arayüz alırsanız, sınıfın doğru olup olmadığını anlayabilirsiniz. Aynı şekilde, bir xml dosyası alırsanız ve xsd ise, xml'nin doğru olup olmadığını anlayabilirsiniz.
Garry

16

XSD'ler, XML belgelerinin kelime dağarcığını ve yapısını sınırlar.

XML tamamen anlaşmayla ilgilidir ve XSD'ler, anlaşmayı XML'in temel tanımının ötesinde yapılandırmak ve iletmek için araçlar sağlar.


12

Ayrıca sorular şudur: xsd'deki ilişkileri vermenin amacı nedir?

Harici bir tarafın aracı veya benzeri için bir XML oluşturmak istediğinizi varsayalım - hangi yapının kendi araçları için doğru şekilde kullanılmasına izin verildiğini nasıl bilebilirsiniz? bir şemaya yazarsın. Aynı şekilde, başkalarının aracınızı kullanmasını istiyorsanız, onların takip etmesi için bir şema yazarsınız. Kendi XML'nizi doğrulamak için de yararlı olabilir.


8

XSD'yi (XML Şema Tanımı) anlamadan önce açıklamama izin verin;

Şema nedir?

Örneğin; emailID: peter # gmail

@, .Com, .net veya .org olmadığı için yukarıdaki e-posta kimliğinin geçerli olmadığını belirleyebilirsiniz.

E-posta şemasının peter@gmail.com gibi göründüğünü biliyoruz.

Sonuç: Şema veriyi doğrulamaz, yapının geçerliliğini yapar.

XSD, aslında XML Şemasının uygulanmasından biridir. sahip olduğumuz diğerleri

XML verilerini doğrulamak için XSD kullanıyoruz.


7

XSD, bir XML belgesinin nasıl oluşturulacağını belirleyen resmi bir sözleşmedir. Genellikle bir XML belgesini doğrulamak veya.


5

Bir XSD dosyası bir XML Şema Tanımıdır ve belirli bir XML belgesinin beklediğinize uygun olup olmadığını kontrol etmek için standart bir yöntem sağlamak için kullanılır.


5

.Xsd dosyası XML şeması olarak adlandırılır. Bir XML şeması aracılığıyla, belirli bir XML'de belirli bir yapıya ihtiyaç duyabiliriz - hangi öğeler hangi sırayla, kaç kez, hangi niteliklerle, nasıl iç içe geçmişler vb. XML girdimiz için bir şemamız varsa, doğrulayabiliriz. Bir şema doğrulayıcısını çağıran birkaç satırla, içermesi gereken verileri içerdiğini ve başka hiçbir şey içermediğini.


4

Xsd dosyası, xml dosyasının şemasıdır - hangi öğelerin oluşabileceğini ve sınırlamalarını (miktar, sıra, sınırlar, ilişkiler, ...) tanımlar.

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.