Udostępnij za pośrednictwem


Using EXPLICIT Mode

Zgodnie z opisem w temacie, Konstruowanie XML przy użyciu FOR XML, RAW i AUTO tryb nie zapewniają stopniu kontrolować kształt XML generowane na podstawie wyników kwerendy.Jednak JAWNIE tryb zapewnia największą elastyczność przy wytwarzaniu XML, który ma od wyniku kwerendy.

Kwerendę trybu JAWNE musi być napisana w określony sposób, aby uzyskać dodatkowe informacje dotyczące wymaganego XML, takie jak przewidywane zagnieżdżenia w pliku XML, jest jawnie określony jako część tej kwerendy.W zależności od kodu XML na żądanie kwerendy JAWNE trybu pisania może być kłopotliwe.Może się okazać Za pomocą trybu ścieżka z zagnieżdżanie jest prostsze alternatywne w stosunku do zapisywania kwerendy trybu JAWNE.

Ponieważ opisują XML, który ma być jako części kwerendy w trybie jawnych, należy się upewnić, że wygenerowany kod XML jest dobrze sformułowany i prawidłowe.

Przetwarzanie w trybie JAWNE zestawu zestaw wierszy

Tryb JAWNE przekształca zestawu zestaw wierszy, powstały na skutek wykonania kwerendy do dokumentu XML.Aby JAWNIE trybu do utworzenia dokumentu XML zestaw wierszy musi być określony format.Wymaga to, że piszesz kwerendy WYBIERAJĄCEJ do utworzenia zestawu zestaw wierszy, Uniwersalny tabela, z określonego formatu, XML, które mają następnie może prowadzić do logiki przetwarzania.

Po pierwsze kwerendy musi mieć następujące dwie kolumny metadane:

  • Pierwsza kolumna musi podać numer znacznika, liczbę całkowitą typu bieżącego elementu i musi być nazwą kolumny Tag.Kwerendy należy podać numer unikatowy tag dla każdego elementu, który ma być wykonane z zestawu zestaw wierszy.

  • Druga kolumna musi podać numer etykiety elementu nadrzędnego, a ta kolumna musi mieć nazwę Nadrzędny.W ten sposób znacznika i nadrzędny kolumna zawierają informacje o hierarchii.

Te wartości kolumna metadane, wraz z informacjami w nazwach kolumn są używane do utworzenia pliku XML, który ma.Należy zauważyć, że kwerendy musi dostarczyć kolumna nazwy w określony sposób.Należy zwrócić również uwagę, że wartość 0 lub wartość NULL w Nadrzędny kolumna wskazuje, że odpowiedni element ma nadrzędny nie.Element zostanie dodany do pliku XML jako element najwyższego poziom.

Aby zrozumieć sposób przetwarzania tabela uniwersalnej wygenerowanego przez kwerendę do generowania wyników XML, zakłada się, zostały zapisane kwerendy, która daje to uniwersalny tabela:

Sample universal table

Należy uwzględnić następujące informacje w tej tabela uniwersalne:

  • Są dwa pierwsze kolumny Tag and Nadrzędny i są kolumny meta.Te wartości określają hierarchię.

  • kolumna Nazwy są określane w określony sposób, jak to opisano w dalszej części tego tematu.

  • Do generowania kodu XML z tej tabela uniwersalnej, dane znajdujące się w tej tabela jest podzielony na partycje pionowo do kolumna grup.grupowanie jest określana na podstawie Tag wartości i nazw kolumn.Przy tworzeniu XML, logiki przetwarzania wybiera jedną grupę kolumn dla każdego wiersza i konstruuje elementu.Następujące uwagi dotyczą w tym przykładzie:

    • Dla Tag numer kolumna wartości 1 w pierwszym wierszu kolumna, których nazwy zawierają takie same ze znacznikiemOdbiorcy! 1! cid and Odbiorcy! 1! Nazwa, utworzenia grupy. Te kolumny są używane podczas przetwarzania wiersza, a użytkownik może mieć zauważalny się kształt wygenerowany element <Customer id=... name=...>. Format nazwy kolumna jest opisany w dalszej części tego tematu.

    • Dla wierszy za pomocą Tag wartość kolumna 2, kolumna Kolejności! 2! id and Kolejności! 2! data tworzą grupę, która jest następnie używana przy konstruowaniu elementów <Order id=... date=... />.

    • Dla wierszy za pomocą Tag wartość kolumna 3 kolumn OrderDetail! 3! id! id and OrderDetail! 3! pid! idref utworzenia grupy.Każdy z tych wierszy generuje elementu, <OrderDetail id=... pid=...>, z tych kolumn.

  • Należy zauważyć, że do generowania hierarchii XML, wiersze są przetwarzane w kolejności.Hierarchii XML jest określony, jak pokazano poniżej:

    • Określa pierwszy wiersz Tag wartość 1 i Nadrzędny wartości NULL.W związku z tym odpowiedni element, <Customer> element, jest dodawana jako element najwyższego poziom w kodzie XML.

      <Customer cid="C1" name="Janine">
      
    • Identyfikuje drugiego wiersza Tag wartość 2 i Nadrzędny wartość 1.Dlatego elementu <Order> element, jest dodawany jako element podrzędność <Customer> element.

      <Customer cid="C1" name="Janine">
         <Order id="O1" date="1/20/1996">
      
    • Identyfikacja następne dwa wiersze Tag wartość 3 i Nadrzędny wartość 2.Dlatego też dwóch elementów, <OrderDetail> elementy, są dodawane jako obiekty podrzędne <Order> element.

      <Customer cid="C1" name="Janine">
         <Order id="O1" date="1/20/1996">
            <OrderDetail id="OD1" pid="P1"/>
            <OrderDetail id="OD2" pid="P2"/>
      
    • Określa ostatni wiersz, 2, które Tag liczba i 1 jako Nadrzędny numer etykiety.Dlatego też inny <Order> element podrzędność zostanie dodany do <Customer> element nadrzędny.

      <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>
      

Aby podsumować wartości w polach Tag and Nadrzędny meta kolumna s, informacje zawarte w kolumna nazw i poprawne ordering wierszy produkcji ma, gdy używany jest tryb JAWNE XML.

Uniwersalny zamawiania wiersz tabela

Przy tworzeniu pliku XML, wiersze w tabela uniwersalne są przetwarzane w kolejności.W związku z tym w celu pobrania poprawne dzieci wystąpienia skojarzone z ich obiektu nadrzędnego, wiersze w zestawie zestaw wierszy musi zostać zamówiona tak, aby każdy węzeł nadrzędny następuje natychmiast jego elementów podrzędnych.

Określanie nazwy kolumna Universal tabela

Podczas zapisywania kwerendy trybu jawnych, nazwy kolumn w wynikowym zestawie zestaw wierszy musi być określona przy użyciu tego formatu.Zapewniają informacje transformacja, w tym nazwy elementów i atrybut i inne informacje dodatkowe, określony za pomocą dyrektyw.

Jest to ogólny format:

ElementName!TagNumber!AttributeName!Directive

Poniżej przedstawiono opis elementów formatu.

  • ElementName
    Czy Wynikowy ogólny identyfikator elementu.Na przykład jeśli Klienciokreślony jako ElementName, element > < klienci są generowane.

  • TagNumber
    Unikatową wartość znacznika jest przypisana do elementu.Ta wartość za pomocą dwóch kolumn metadane, Tag and Nadrzędny, określa zagnieżdżenia elementów w wynikowym pliku XML.

  • Nazwa_atrybutu
    Zawiera nazwę atrybut do konstruowania w określonej ElementName.Jeśli jest to zachowanie Dyrektywa nie została określona.

    Jeśli Dyrektywa jest określony i to XML, CDATA, or element, wartość ta jest używana w celu skonstruowania podrzędność elementu ElementName, a wartość kolumna jest dodawany do niej.

    Jeśli określisz Dyrektywa, the Nazwa_atrybutu może być pusta.Na przykład ElementName! TagNumber!!Dyrektywa.W tym przypadek wartość kolumna znajduje się bezpośrednio przez ElementName.

  • Dyrektywa
    Dyrektywa jest opcjonalny, a następnie używać go na dodatkowe informacje o budowie XML.Dyrektywa ma dwóch celach.

    Jest jednym z celów do kodowania wartości jak identyfikator, IDREF i IDREFS.Można określić IDENTYFIKATOR, IDREF, and IDREFS słowa kluczowe Dyrektywy.Dyrektywy te zastępują typy atrybut.Dzięki temu można utworzyć łącza wewnątrz dokumentu.

    Ponadto można użyć Dyrektywa do wskazania sposobu mapowania danych ciąg do formatu XML.The hide, element, elementxsinil, xml, xmltext, and cdata keywords can be used as the Directive.The hide directive hides the node.Jest to przydatne, gdy pobierać wartości tylko w przypadku sortowania celów, ale nie chcesz ich w wynikowym pliku XML.

    The element directive generates a contained element instead of an atrybut.Dane zawarte są kodowane jako obiekt.Na przykład < znak staje się &lt;. W przypadku wartości NULL kolumna żaden element nie jest generowany.Jeśli chcesz, aby element generowane dla wartości kolumna wartość null, można określić elementxsinil dyrektywa.Spowoduje to wygenerowanie element o xsi: nil atrybut = TRUE.

    The xml directive is the same as an element directive, except that no obiekt encoding occurs.Należy zauważyć, że element w dyrektywie można łączyć z IDENTYFIKATOR, IDREF, or IDREFS, dlatego XML w dyrektywie nie jest dozwolone z innych dyrektyw, z wyjątkiem ukrywanie.

    The cdata directive contains the data by wrapping it with a CDATA section.Zawartość nie jest jednostką zakodowane.Oryginalny typ danych musi być typu tekst, na przykład varchar, nvarchar, tekst, or ntext.Tej dyrektywy można używać tylko z ukrywanie.Gdy ta dyrektywa jest używany, Nazwa_atrybutu nie musi być określona.

    Łączenie dyrektyw między tych dwóch grup jest dozwolone w większości przypadków, ale łącząc je między sobą nie jest dozwolone.

    Jeśli Dyrektywa and the Nazwa_atrybutu nie jest określony, na przykład, Odbiorcy! 1, an element w dyrektywie jest implikowane, takie jak Odbiorcy! 1!!element, a kolumna danych są zawarte w ElementName.

    Jeśli XmlText w dyrektywie jest określony, zawartość kolumna jest otoczona pojedynczego tagu, który jest zintegrowany z pozostałej części dokumentu.Ta dyrektywa jest przydatna w pobieranie przepełnienia, unconsumed, przechowywane kolumna OPENXML danych XML.Aby uzyskać więcej informacji zobaczWykonywanie kwerendy za pomocą OPENXML XML.

    Jeśli Nazwa_atrybutu jest określony, nazwa tagu zastępuje określonej nazwie.W przeciwnym razie atrybut jest dołączany do bieżącej listy atrybutów elementów otaczający umieszczając treści na początku zamknięcia bez obiekt kodowania.Kolumna o tej dyrektywy musi być typu tekst, taki jak varchar, nvarchar, CHAR, nchar, tekst, or ntext.Tej dyrektywy można używać tylko z ukrywanie.Ta dyrektywa jest przydatna w pobieranie przepełnienie danych przechowywanych kolumna.Jeśli zawartość nie jest poprawnie sformułowany kod XML, zachowanie jest niezdefiniowane.