Aracılığıyla paylaş


AÇıK modunu kullanma

Bu konuda, açıklandığı gibi FOR XML kullanan XML oluşturma, RAW ve AUTO modu bir sorgu sonucu oluşturulan XML şekli üzerinde denetim sağlar.Ancak, AÇıK modu, bir sorgu sonucu istediğiniz XML oluşturma çoğu esneklik sağlar.

Böylece, XML'de, beklenen iç içe geçirme gibi gerekli XML hakkındaki ek bilgileri sorgunun parçası belirtilip AÇıK modu sorgusu, belirli bir şekilde yazılmalıdır.Istediğiniz XML bağlı olarak, yazma AÇıK modu sorgulamalarının hantal olabilir.Bilgisayarınızda bulabilirsiniz yol modunu kullanma ile iç içe geçmiş AÇıK modu sorgulamalarının yazmak için basit bir seçenektir.

Sorguyu AÇıK modunda bir parçası olarak kullanmak istediğiniz XML tanımlamak için oluşturulan XML iyi biçimlendirilmiş ve geçerli olduğundan emin olmalısınız.

Satır kümesi AÇıK Modu'nda işleme

AÇıK modu sorgusu yürütme bir XML belgesine oluşur, satır kümesi dönüştürür.XML belgesi oluşturmak AÇıK modu, satır kümesi kümesi belirli bir biçimde olması gerekir.Bu, satır kümesi oluşturmak için bir SELECT sorgusu yazma gerektirir Evrensel bir tabloişleme mantığı, sonra istediğiniz XML oluşturabilir, böylece belirli bir biçimde.

Önce sorgu, aşağıdaki iki meta veriler sütunları üretmelidir:

  • Ilk sütun sağlamalısınız etiket numarası, geçerli öğenin, tamsayı türü ve sütun adı olması gerekir Etiket.Sorgunuz, satır kümesi ' oluşturulmuş her öğe için benzersiz bir etiket bir sayı girmelisiniz.

  • Ikinci sütun etiketi bir üst öğe sayısını girmeniz gerekir ve bu sütun adı olması gerekir Üst.Bu yolla, etiketi ve üst sütun hiyerarşisi bilgileri sağlar.

Sütun adları, bilgileri ile birlikte, bu meta veriler sütun değerlerini istediğiniz XML üretmek için kullanılır.Sorgunuz sütun adları belirli bir şekilde sağlamalısınız unutmayın.Ayrıca, null ya da 0 Üst sütun, karşılık gelen öğe hiçbir üst olduğunu gösterir.Öğe için XML bir üst düzey öğe olarak eklenir.

Evrensel tablonun bir sorgu tarafından oluşturulan XML sonucu üretme içine nasıl işleneceğini anlamak için , Evrensel Bu tablo üreten sorgu yazdınız kabul edin:

Sample universal table

Aşağıdaki bu evrensel hakkında Not tablo:

  • Ilk iki sütun Etiket and Üst öğeler meta sütunlar.Bu değerler sıradüzeni belirler.

  • Sütun adları bu konunu sonraki bölümlerinde anlatıldığı gibi bir belirli şekilde belirtilmedi.

  • Bu tablodaki verileri, XML Evrensel bu tablodan oluşturmak, dikey sütun gruplara bölümlendirilir.gruplandırma göre belirlenir Etiket değeri ve sütun adları.XML oluşturma, işleme mantığına sütunlarının her satır için bir grup seçer ve bir öğe oluşturur.Bu örnekte, aşağıdakiler uygulanır:

    • Için Etiket Etiket numarası sütun değeri 1, ilk satır, sütun adları aynı içerir.Müşteri! 1! cid and Müşteri! 1! ad, bir grup oluşturur. Bu sütun, satır işlenirken kullanılır ve oluşturulan öğesinin şekli olduğunu etmiş <Customer id=... name=...>. Sütun adı biçimi, bu konunun ilerisinde açıklanmıştır.

    • Satır için Etiket sütunları sütun değeri 2Order! 2! kimliği and Order! 2! tarih sonra öğeleri <Order id=... date=... /> oluştururken kullanılan bir grup oluşturur.

    • Satır için Etiket sütunları sütun değeri 3,OrderDetail! 3! kimliği! kimliği and OrderDetail! 3! pid! idref bir grup oluşturur.Bu satır her bir öğe oluşturur. <OrderDetail id=... pid=...>, bu sütunlarından.

  • XML hiyerarşisi oluşturmak, satırlar sırayla işlenir olduğunu unutmayın.XML hiyerarşisi aşağıdaki gibi belirler:

    • Ilk satırı belirtir. Etiket 1 değerini ve Üst değeri NULL.Bu nedenle, karşılık gelen öğe <Customer> öğe, en üst düzey bir XML öğesi olarak eklenir.

      <Customer cid="C1" name="Janine">
      
    • Ikinci satırdaki tanımlar. Etiket 2 değerini ve Üst 1 değeri.Bu nedenle, öğe <Order> öğe, bir alt öğesi eklenen <Customer> Öğe.

      <Customer cid="C1" name="Janine">
         <Order id="O1" date="1/20/1996">
      
    • Sonraki iki satır belirle Etiket değeri 3 ve Üst 2 değeri.Bu nedenle, iki öğe <OrderDetail> öğeleri, alt eklenen <Order> Öğe.

      <Customer cid="C1" name="Janine">
         <Order id="O1" date="1/20/1996">
            <OrderDetail id="OD1" pid="P1"/>
            <OrderDetail id="OD2" pid="P2"/>
      
    • Son satır, 2 olarak tanımlayan Etiket numarasını ve 1Üst etiket numarası.Bu nedenle, başka bir <Order> öğe alt eklenen <Customer> üst öğe.

      <Customer cid="C1" name="Janine">
         <Order id="O1" date="1/20/1996">
            <OrderDetail id="OD1" pid="P1"/>
            <OrderDetail id="OD2" pid="P2"/>
         </Order>
         <Order id="O2" date="3/29/1997">
      </Customer>
      

, Değerleri özetlemek için Etiket and Üst meta sütun bilgileri içindeki sütun adlarının sağlanan ve doğru sipariş satırlarının üretmek AÇıK modu kullandığınızda, istediğiniz XML.

Evrensel bir tablo satırı sıralama

XML, Evrensel satır oluşturarak, tablo sırayla işlenir.Her bir üst düğüm, çocuklar tarafından hemen ardından, bu nedenle, doğru alt almak için üst satır satır kümesi ile ilişkili örnek sipariş verilmesi gereken.

Bir Evrensel Tablosu'nda sütun adları belirtme

AÇıK modu sorgulamalarının yazarken, sonuç kümesi sütun adlarında bu biçimi kullanılarak belirtilmeli.Öğe ve öznitelik adları ve yönergeleri kullanarak belirtilen diğer ek bilgileri dahil olmak üzere dönüştürme bilgi sağlarlar.

Bu genel biçim yer almaktadır:

ElementName!TagNumber!AttributeName!Directive

Biçim parçalarını açıklaması aşağıdadır.

  • ElementName
    Sonuçta elde edilen genel öğe tanıtıcısıdır.Örneğin, Müşteriler belirtilirElementName < > Customers öğesi oluşturulur.

  • TagNumber
    Benzersiz bir etiket değeri, bir öğeye atanan.Bu değer, iki meta veriler sütunu yardımıyla Etiket and Üst, iç içe sonuç XML öğelerinin belirler.

  • ÖznitelikAdı
    Belirtilen şekilde oluşturmak için öznitelik adı sağlar. ElementName.Bu davranış olur Yönerge belirtilmedi.

    If Yönerge belirtilmişse ve bu XML, CDATA, or Öğe, bu değer, alt bir öğe oluşturmak için kullanılırElementName ve sütun değeri eklenir için.

    Belirttiğiniz Yönerge, the ÖznitelikAdı boş olabilir.Örneğin, ElementName! TagNumber!!Yönerge.Bu durumda, sütun değeri doğrudan tarafından içeriliyor ElementName.

  • Yönerge
    Yönerge isteğe bağlıdır ve ek bilgi için XML inşaat sağlamak için kullanabilirsiniz.Yönerge iki amacı vardır.

    Amaçları değerleri, KIMLIĞI IDREF ve IDREFS kodlamak için biridir.Belirtebilirsiniz ID, idref, and idrefs anahtar sözcükleriYönergeleri.Bu yönergeleri öznitelik türlerinin üzerine yazma.Bu belge içi bağlantılar oluşturmanıza olanak sağlar.

    Ayrıca, kullanma Yönerge dizesi veri için XML eşleme belirtmek için.The hide, element, elementxsinil, xml, xmltext, and cdata keywords can be used as the Directive.The hide directive hides the node.Yalnızca amaçlı sıralama değerleri alabilir, ancak, bunları sonuç XML içinde istemediğiniz zaman yararlıdır.

    The element directive generates a contained element instead of an öznitelik.Içerilen verileri bir varlık olarak kodlanır.Örneğin, < karakter olur. &lt;. null sütun değerleri için hiçbir öğe oluşturulur.Belirtebileceğiniz null sütun değerleri için oluşturulan bir öğe isterseniz, elementxsinil yönergesi.Bu öznitelik xsi: nil olan bir öğe oluşturur = DOğRU.

    The xml directive is the same as an element directive, except that no varlık encoding occurs.Dikkat Öğe yönergesini de birleştirilebilirID, idref, or idrefs, oysa XML tüm diğer emrinin, dışında yönergesini izin verilmiyorgizleme.

    The cdata directive contains the data by wrapping it with a CDATA section.Içerik, kodlanmış bir varlık değil.Özgün veri türü gibi bir metin türü olmalıdır varchar, nvarchar, Text, or ntext.Bu yönerge, yalnızca kullanılabilir gizleme.Bu yönerge, kullanıldığında ÖznitelikAdı belirtilmemeli.

    Çoğu durumda bu iki grubun arasında yönergeleri birleştirme izin verilir, ancak kendileri arasında birleştirme silmeye izin verilmiyor.

    If the Directive and the AttributeName is not specified, for example, Customer!1, an element directive is implied, such as Customer!1!!element, and sütun data is contained in the ElementName.

    If the xmltext directive is specified, the sütun content is wrapped in a single tag that is integrated with the rest of the document.Taşma unconsumed, alma bu yönerge yararlıdır, XML verileri saklanan bir sütun OPENXML tarafından.Daha fazla bilgi için bkz:OPENXML kullanarak XML sorgulanıyor..

    If ÖznitelikAdı belirtilen, etiket adı tarafından belirtilen ad değiştirilir.Aksi halde, öznitelik, varlık kodlama olmadan içeriği içerik başında yerleştirerek geçerli özniteliklerini kapsayan öğeler listesine eklenir.Bu yönerge ile sütun gibi bir metin türü olmalıdır varchar, nvarchar, Karakter, nchar, Text, or ntext.Bu yönerge, yalnızca kullanılabilir gizleme.Bir sütunda depolanan taşma veri getirilirken bu yönerge yararlıdır.Biçimlendirilmiş bir XML içeriği yoksa tanımlanmamış bir davranıştır.