1 / 63

Извличане и обработка на информация – XQuery Управление на данни в XML

Извличане и обработка на информация – XQuery Управление на данни в XML. Извличане и обработка на информация. XML документите обобщават релационните данни по разбираем начин :

jirair
Download Presentation

Извличане и обработка на информация – XQuery Управление на данни в XML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Извличане и обработка на информация – XQueryУправление на данни в XML

  2. Извличане и обработка на информация • XML документите обобщават релационните данни по разбираем начин: • Голяма по обем и разнообразна информация се съхранява в XML формат. Необходими са възможности за търсене и промяна на XML документите. релации записи атрибути

  3. Извличане и обработка на информация • Някои съображения за обмен на информация между XML и бази данни: • XML документи, включващи данни, извлечени от различни бази данни. • Използване на XML и XSLT за подходяща форма на извеждане на извлечени данни в отговор на заявка. • Използване на XML за обмен на структурирани данни между две приложения без посредничеството на потребител. • Обработка на голям обем разнородна информация (XML документи, графична, видео...).

  4. Извличане и обработка на информация • Има механизми, които по подразбиращ се начин формират XML документи от съществуващи релационни бази данни. • ADO 2.5 връща множество от записи в XML представяне в т.нар. “плосък вид”. • SQL Server 2000 осигурява директно извличане на свързани структури във вид на XML документ. • Тези технологии не могат да обработят по-сложни ситуации, като отношения много към много, които могат да се представят с IDREF-ID указатели.

  5. Извличане и обработка на информация - XQuery • XQuery осигурява преобразуването на XРath множеството от върхове в XML. • XQuery осигурява променливи за връзка между XРath и XQuery. • XQuery осигурява структури за обединения (joins), агрегати и т.н. • Една проста заявка на XQueryима вида: { XPath израз } <answer> {document(" bib.xml“)//title} </answer> Заявката води до: <answer> <title> . . . </title> . . . </answer>

  6. Извличане и обработка на информация - XQuery • XQuery е хибриден, мощен език с подобна на SQL граматика, но с по-голямо приложение. • XQuery дава възможности за интегриране и трансформиране. • Едно XQuery приложение може да реализира търсене в няколко системи и да интегрира многобройни източници на информация. • XQuery може да трансформира съдържанието и структурата на XML документи. • XQuery изрази могат да се използват като конструктори на елементи и атрибути за да се изрази структурата на резултантния документ.

  7. Извличане и обработка на информация - XQuery • XML търсене: • Документи, които се четат лесноза извличане на информация от индивидуални документи, за осигуряване на динамично индексиране, за извършване на контекстно търсене и за генериране на нови документи • Данново-ориентирани документиза запитвания в XML представени бази данни, за трансформиране на данните в нови XML представяния и за интегриране на данни от различни хетерогенни източници на данни • Документи със смесен моделза запитвания в документи с вградени данни, такива като каталози или бизнес-анализиращи документи

  8. Извличане и обработка на информация - XQuery • Изисквания към езиците за търсене: • XMLсинтаксис • Да бъдат декларативни • XML модел на данни • Да интерпретира механизма на областите от данни • Трябва да координира с XML Schema • Да работи дори ако схемите не са налични • Да подържа simple и complex типове данни • Да подържа операции с йерархични и списъчни документни структури • Трябва да комбинира информация от различни документи • Трябва да подържа възможности за агрегация • Трябва да е в състояние да преобразува и създава XML структури • Трябва да е в състояние да отчита ID указания

  9. Извличане и обработка на информация - XQuery • Понятия: • Запитването (query)в XQuery е израз, който: • Чете последователност от XML фрагменти или отделни стойности • Връща последователност от XML фрагменти или отделни стойности • Основните форми на XQuery изразите са: • Изрази за пътища • Елементни конструктори • FLWOR ("flower") изрази • Списъчни изрази • Условни изрази • Количествени изрази • datatype изрази

  10. Извличане и обработка на информация - XQuery • Понятия: • Изразите се изчисляват спрямо контекста: • Области данни • Променливи • Функции • Дата и време • Контекстен член (текущ връхили отделна стойност) • Контекстна позиция (в обработваната последователност) • Контекстен размер (в обработваната последователност)

  11. Извличане и обработка на информация - XQuery Изрази за пътища • Най-прост вид запитване -XPath 2.0израз като: • Резултат са всички простикомпоненти, използвани за приготвяне на Ricotta Pie в колекцията “recipe”. • Резултатът се получава като списък от XML фрагменти, всеки свързан с елемент-компонент. • Редът на фрагментите е в зависимост от документа (за разлика от SQL) • Началният контекст на израза за пътя се задава от document("recipes.xml") (подобно е заXPointer). • Някои специфични за XQuery разширения на XPath: • Локализиращите стъпки могат да следват нови IDREF axis • произволен XQuery израз може да се използва като локализираща стъпка document("recipes.xml")//recipe[title="Ricotta Pie"]//ingredient[@amount]

  12. Извличане и обработка на информация - XQuery Елементни конструктори • Един XQuery израз може даконструиранов XML елемент: • Изразът може да използва стойности, прикрепени къмпроменливи ($id, $name, $job трябва да са прикрепени към XMLфрагменти или стрингове). <employee empid="12345"> <name>John Doe</name> <job>XML specialist</job> <deptno>187</deptno> <salary>125000</salary> </employee> <employee empid="{$id}"> <name>{$name}</name> {$job} <deptno>{$deptno}</deptno> <salary>{$SGMLspecialist+100000}</salary> </employee>

  13. Извличане и обработка на информация - XQuery FLWOR ("flower") изрази • Основният двигател на XQuery е FLWOR израз. • For-Let-Where-Order-Return • Обобщава SELECT-FROM-HAVING-WHEREот SQL • Примерза избор и филтриране в XQuery • Осъществява достъп до всеки връх от множеството, получено с Xpath израза. for $x in document(“payroll.xml”)//employee where$x/age = “25” return$x/name XPath изрази Множество от върхове Резултат xml

  14. Извличане и обработка на информация - XQuery FLWOR ("flower") изрази • Примерза обединение в XQuery • Осъществява обединението на два xml файла и извлича съответна информация от тях на базата на определени условия. <results> for $x in document(“payroll.xml”)//employee $p in document(“projects.xml”)//project where value-equals ($x/name,$p/manager) return <result> { $x/age } { $p/budget } </result> </results>

  15. Извличане и обработка на информация - XQuery FLWOR ("flower") изрази • Примерза групиране в XQuery • Осъществявагрупиране на определени елементи по зададени условия от единствен документ <answer> for $a in distinct-values(document (“payroll.xml”)//employee/age ) return <age-group> {$a} { for $e in document (“payroll.xml”)//employee where value-equals ($a, $e/age) return $a/name } </age-group> </answer>

  16. Извличане и обработка на информация - XQuery FLWOR ("flower") изрази • Пример с всички компоненти на FLWORизраза for $d in document("depts.xml")//deptno let $e := document("emps.xml")//employee[deptno = $d] where count($e) >= 10 order by avg($e/salary) descending return <big-dept> { $d, <headcount>{count($e)}</headcount>, <avgsal>{avg($e/salary)}</avgsal> } </big-dept>

  17. Извличане и обработка на информация - XQuery FLWOR ("flower") изрази • Пример с всички компоненти на FLWORизраза • Обяснения към примера: • forгенерира подреден списък от прикрепени стойности deptnoкъм$d • letасоциира към всяка прикрепена стойност на следващо прикрепване на списък от елементи empс този номер на департамент към $e • До тук имаме подреден списък от записи от прикрепени елементи ($d,$e) • where филтрира този списък за да се запазят само исканите записи • orderсортира този списък по даден критерии • returnконструира за всеки запис резултантна стойност • Комбинираният резултат е списък от департаменти с поне по 10 служителя, сортиран по средните стойности на заплатите.

  18. Извличане и обработка на информация - XQuery FLWOR ("flower") изрази • Пример с всички компоненти на FLWORизраза • Обяснения към примера: • Общи правила: • forиletмогат да бъдат използвани много пъти и в произволен ред • Разрешава се използването само на единwhere • Могат да се специфицират много критерии за сортиране • Забележете разликата междуforиlet: Генерира списък от прикрепвания на$xкъм всеки елементemployeeвcompany for $x in /company/employee Генерира единствено прикрепване на $x към списък от елементи employee вcompany. let $x := /company/employee

  19. Извличане и обработка на информация - XQuery FLWOR ("flower") изрази • Пример за изчисляване на връзки на документи: for $p IN document("www.irs.gov/taxpayers.xml")//person for $n IN document("neighbors.xml")//neighbor[ssn = $p/ssn] return <person> <ssn> { $p/ssn } </ssn> { $n/name } <income> { $p/income } </income> </person>

  20. Извличане и обработка на информация - XQuery Списъчниизрази • XQuery изразите обработват списъци(lists)от стойности, за които се подържат оператори (operators) като: • Списъци от константи: (7, 9, <thirteen/>) • Обхват на цели: i to j • XPath изрази, като всички именувани наследници на текущия връх node: name • конкатенация: , • Установяващи оператори: | (илиunion - обединение), intersect,except • функции: remove, index-of, count, avg, max, min, sum, distinct-values ... • Когато списъците се разглеждат като множества: • XML върховете се сравняват за идентичност • Дублираните се отстраняват • Редът се запазва

  21. Извличане и обработка на информация - XQuery Списъчниизрази • Пример за запитване и извеждане на информацията за всеки издател и средната цена на книгите му. for $p in distinct-values(document("bib.xml")//publisher) let $a := avg(document("bib.xml")//book[publisher = $p]/price) return <publisher> <name>{ $p/text() }</name> <avgprice>{ $a }</avgprice> </publisher>

  22. Извличане и обработка на информация - XQuery Списъчниизрази • Пример за запитване и извеждане на информацията за списък на издателите с повече от 100 книги. <big-publishers> { for $p in distinct-values(document("bib.xml")//publisher) let $b :=document("bib.xml")//book[publisher = $p] where count ($b) > 100 return $p; } </big-publishers>

  23. Извличане и обработка на информация - XQuery Условниизрази • XQuery подържа конструкциятаif-then-else. • Примерът илюстрира извличане от библиотечен “holding” на заглавията и издатели или автори. for $h in document("library.xml")//holding return <holding> { $h/title, if ($h/@type = "Journal") then $h/editor else $h/author } </holding>

  24. Извличане и обработка на информация - XQuery Количествениизрази • XQuery разрешава използването на изрази, които взимат решение за всички елементи от списъка на базата на свойства на тези елементи. • some-in-satisfies • every-in-satisfies • Пример 1 намира заглавията на всички книги, които споменават, както думата “sailing”, така и“windsurfing” в един и същи параграф. for $b in document("bib.xml")//book where some $p in $b//paragraph satisfies (contains($p,"sailing") AND contains($p,"windsurfing")) return $b/title

  25. Извличане и обработка на информация - XQuery Количествениизрази • Пример 2 намира заглавията на всички книги, които споменават думата “sailing” във всеки параграф. for $b in document("bib.xml")//book where every $p in $b//paragraph satisfies contains($p,"sailing") return $b/title

  26. Извличане и обработка на информация - XQuery Изрази datatype • XQuery подържа всичкиdatatypesот XML Schema, както прости(primitive), така и комплексни(complex). • Константните стойности могат да бъдат записвани като: • Само символни последователности (катоstring, integer, float) • Като функции (true(), date("2001-06-07")) • Като изрични преобразования на типа (cast as xsd:positiveInteger(47)) • Произволни XML Schema документи могат да се включват в заявката за запитване. • Един оператор разрешава валидиране по време на изпълнение на всяка стойност спрямо типа или схемата. • Оператор typeswitchразрешава разклонение(branching), базирано на типа.

  27. Извличане и обработка на информация – XQuery - примери • Дадени са някои примери за XQueryизрази, които извличат информация от колекция recipe. • Пример 1: Извличат се заглавията на всички рецепти от колекцията.Показана е и извлечената информация. for $t in document("recipes.xml")//title return $t <title>Beef Parmesan with Garlic Angel Hair Pasta</title>, <title>Ricotta Pie</title>, <title>Linguine Pescadoro</title>, <title>Zuppa Inglese</title>, <title>Cailles en Sarcophages</title>

  28. Извличане и обработка на информация – XQuery - примери • Пример 2: Извличат се заглавията на всички рецепти от колекцията, които съдържат компонента брашно“flour”.Показана е и извлечената информация. <floury> { for $r in document("recipes.xml")//recipe[.//ingredient[@name="flour"]] return <dish>{$r/title/text()}</dish> } </floury> <floury> <dish>Ricotta Pie</dish> <dish>Zuppa Inglese</dish> <dish>Cailles en Sarcophages</dish> </floury>

  29. Извличане и обработка на информация – XQuery - примери • Пример 3: Извлича се информация за списъка от рецепти, в които е използвана всяка от компонентите.Показана е и извлечената информация. for $i in distinct-values(document("recipes.xml")//ingredient/@name) return <ingredient name="{$i}"> { for $r in document("recipes.xml")//recipe where $r//ingredient[@name=$i] return $r/title } </ingredient> <ingredient name="beef cube steak"> <title>Beef Parmesan with Garlic Angel Hair Pasta</title> </ingredient>, <ingredient name="onion, sliced into thin rings"> <title>Beef Parmesan with Garlic Angel Hair Pasta</title> </ingredient>, ... <ingredient name="butter"> <title>Beef Parmesan with Garlic Angel Hair Pasta</title> <title>Cailles en Sarcophages</title> </ingredient>, ...

  30. Извличане и обработка на информация – XQuery - примери • Пример 4: Извлича се информация за рецептите, които използват някои продукти от друг XML документ, т.нар. fridge.xml. Т.е. илюстрира се връзка между два документа XML. Показана е и извлечената информация. distinct-values( for $r in document("recipes.xml")//recipe for $i in $r//ingredient/@name for $j in document("fridge.xml")//stuff[text()=$i] return $r/title ) <title>Beef Parmesan with Garlic Angel Hair Pasta</title>, <title>Ricotta Pie</title>, <title>Linguine Pescadoro</title>, <?xml version="1.0" encoding="ISO-8859-1" ?> <fridge>   <stuff>eggs</stuff>   <stuff>olive oil</stuff>   <stuff>ketchup</stuff>   <stuff>unrecognizable moldy thing</stuff> </fridge> XML файл fridge.xml

  31. XML и бази данни • DTD за релационна база данни <!DOCTYPE db [ <!ELEMENT db(project | employee)*> <!ELEMENT project (title,budget,managedBy)> <!ELEMENT employee (name,ssn,age)> <!ELEMENT title #PCDATA> . . . ]>

  32. XML и бази данни • Изграждане на приложения, ползвайки съществуващи бази данни (БД) • Логически слоеве на n-слойно приложение • Услуги за данни – пазят се данните за приложението (обикновено БД) • Обекти за данни – за комуникация между БД и бизнес-обектите • Бизнес-обекти – обслужват бизнес-логиката на приложението и комуникациите между представителния слой и слоя данни • Представителен слой – за комуникация между потребителя и слоя на бизнес-логиката • Тези слоеве могат да са разпределени на няколко или на един компютър.

  33. XML и бази данни • Изграждане на приложения, ползвайки съществуващи бази данни (БД) • Предимства на многослойния подход: • По-малка сложност за разработчиците (необходимо е познаване на БД и как комуникират с бизнес-слоя, но не и бизнес-логиката наприложението); • Възможност за промени (налага се модификация само на обектите за данни при промяна на БД, но не и на бизнес-обектите); • Възможност за обслужване на повече клиенти (връзките с БД се споделят между обектите за данни, а не от отделна връзка, както е при клиент-сървър); • Повторна използваемост (обектите за данни могат да се ползват в различни приложения); • По-голяма сигурност (достъпът до данните не е директен, а чрез бизнес-слоя)

  34. XML и бази данни • Изграждане на приложения, ползвайки съществуващи бази данни (БД) • Използване на XML в n-слойно приложение • Обикновено слоят на обектите за данни връща информация на слоя за бизнес-обектите във форма зависеща от данните. Най-често това са обекти ADO. Те се използват за извличане на данни от БД. • Кой ще се използва XML? • Представителния слой, който се мени най-често. • Бизнес-обектите за комуникация с представителния слой и помежду си • Обектите за данни, които да връщат XML вместо групи от записи • При обновяване на БД бизнес-обектите могат да връщат XML на обектите за данни, които ще парсват кода и ще извличат съответните данни за вмъкване в БД.

  35. XML и бази данни • Изграждане на приложения, ползвайки съществуващи бази данни (БД) • Използване на XML в n-слойно приложение • Или всеки път, когато един обект комуникира с друг ще използва XML като общ език. • Съществува независимост от езика за обектите. Някои бизнес-обекти могат да се напишат на Visual Basic, използвайки ADO за извличане на данни, адруги – на Java, използвайки JDBC (Java DataBase Connectivity) за извличане на данни. След което се предава XML на бизнес-обектите. • Получи се независимост от езика, но и от сървъра. Предаваме XML, т.е. текст, могат различните обекти да се поставят на различни сървъри и за предаване на информацията да се използва HTTP.

  36. XML и бази данни • Изграждане на приложения, ползвайки съществуващи бази данни (БД) • Използване на XML в n-слойно приложение Връщане на XML от обект за данни • За създаването на обект за данни, конвертиращ резултатите си в XML ще се използва: 1) Visual Basic - за написване на обекта за данни; 2) ADO за свързване с БД; 3) Парсер MSXML за създаване на XML документ с резултатите. • ADO осигурява обект Connectionза свързване с БД. Dim cnndatabaseConnection As ADODB.Connection Set cnnDatabaseConnection = New ADODB.Connection //свързване с БД Създаване на обект Connection

  37. XML и бази данни • Изграждане на приложения, ползвайки съществуващи бази данни (БД) • Използване на XML в n-слойно приложение Връщане на XML от обект за данни • Използване на SELECT конструкция за изпълнение на операция над БД. • Изпълнение на SQL с ADO чрез извикване на метод Execute()за обект Connection предавайки му SQL конструкция. Dim strSQL As String strSQL=“SELECT last_name FROM Customer WHERE account_number = “1234” Dim rsResults As ADODB.Recordset Set rsResults=cnnDatabaseConnection.Execute(strSQL) Връща обект Recordset с резултатите от заявката

  38. XML и бази данни • Изграждане на приложения, ползвайки съществуващи бази данни (БД) • Използване на XML в n-слойно приложение Връщане на XML от обект за данни • Създаване на XML документ - обект и предаването на този обект на стойностите на SQL посредством DOM Dim objXML As MSXML.DOMDocument Set objXML=New MSXML.DOMDocument objXML.loadXML”<root><LastName/></root> <root> <LastName/> </root> Документът съдържа следния XML код

  39. XML и бази данни • Изграждане на приложения, ползвайки съществуващи бази данни (БД) • Използване на XML в n-слойно приложение Връщане на XML от обект за данни • Получаване на стойността от Recordset и добавянето и към XML документа. • MSXML осигурява свойство на Document обекта, наречено xml, което връща низ, съдържащ XML документа, моделиран от DOM. Обектът за данни трябва да върне текста от това свойство. • Заключение – бяха взети резултатите, получени от БД и бях трансформирани в XML (разбирами от всяко приложение, независимо от езика). objXML.selectSingleNode(“/root/LastName”).Text = rsResults(“last_name”).Value

  40. XML и бази данни • Интегриране на XML в база данни (БД) • Възможно е запазване на цялата информация (лица + поръчки) в една таблица на БД, като полета по които ще се търси да са в отделни колони. В отделна колона ще се пази целия XML за цялата поръчка. • Има един XML, представящ всяка поръчка, то може да се получи всичката информация за цялото приложение от едно поле. • Обновяването на поръчката ще е свързано с модифициране на само едно поле. SELECT order_xml FROM order WHERE order_number=12345

  41. XML и бази данни • Интегриране на XML в база данни (БД) • Използване на БД • Този подход е удачен за междинна БД (изискванията към нея са по-малко). • Данните не са нормализирани, а се пазят като едно цяло. • Много лесно е връщането на данни към приложението (елиминират се съединения и сложни SQL конструкции), но затруднява писането на други приложения, които ще работят с части от данните. • Когато данните ще се местят в реална БД, то обектът за данни ще прочете XML кода от междинната БД, ще създаде с тях INSERTконструкция на SQL и ще ги добави в БД. • Приложението има предимствата от работа с XML данни (при клиента), а при сървъра БД е нормализирана.

  42. Създаване на XML за съществуваща база данни Клиенти + фактури

  43. Създаване на XML за съществуваща база данни • Правило 1: Избор на данни за включване. • На базата на бизнес изискванията, които XML документа ще изпълнява се решава кои таблици и колони да се включат.Например, ако ще се обработва информацията за клиенти и плащания по фактури, ще се включат таблиците: Customer; Month by Total; Monthly Customer Total. • Правило 2: Създаване на коренен елемент. • Добавяне на коренен елемент в DTD и деклариране на атрибути на елемента. • Възможно е добавяне на информация, която не е част на базата данни. Атрибут за състояние (информация за процесора) <!ELEMENT SalesData EMPTY> <!ATTLIST SalesData             Status (NewVersion | UpdatedVersion | CourtesyCopy) #REQUIRED>

  44. Създаване на XML за съществуваща база данни • Правило3: Модел на избраните таблици. • Таблиците съответстват директно на елементи и могат да са: • За съдържание, които съдържат множество записи; • За търсене, които съдържат списък от ID-двойки, използвани за класифициране на информация за ред от таблицата, съхранявайки описание за всяко намерено ID (таблицата ShipMethod). Те ще се моделират като изброими атрибути по-късно; • За връзка – изразяват отношения много към много. Те ще се моделират като таблици за съдържание.

  45. Създаване на XML за съществуваща база данни • Правило3: Модел на избраните таблици. • Прилагайки това правило, ще се добавят елементите: <Invoice>, <Customer>, <Part>, <MonthlyTotal>, <MonthlyCustomerTotal>, <MonthlyPartTotal>, <LineItem>към DTD. За момента те са empty. • Правило 4: Моделиране на колони, които не са ключовекъм други таблици. • Ще се създадат атрибути на елементите, които да съдържат стойностите на колоните. • Всеки атрибут има тип CDATA. Ако колоната не позволява стойност NULL, то атрибутът е #REQUIRED; в противен случай е#IMPLIED.

  46. Създаване на XML за съществуваща база данни • Правило 4: Моделиране на колони, които не са ключовекъм други таблици. <!ELEMENT Invoice EMPTY> <!ATTLIST Invoice              InvoiceNumber CDATA #REQUIRED              TrackingNumber CDATA #REQUIRED              OrderDate CDATA #REQUIRED              ShipDate CDATA #REQUIRED> Например за елемент Invoice, атрибутите са:

  47. Създаване на XML за съществуваща база данни • Правило 5: Добавяне наIDатрибути към елементите. • Добавя се ID атрибут за всеки елемент (с изключение на коренния. Използва се името на елемента следвано от ID и деклариран като #REQUIRED. • Тези атрибути ще позволят премахването на някои от XML структурите при моделирането на връзките. <!ELEMENT Invoice EMPTY> <!ATTLIST Invoice InvoiceID ID #REQUIRED              InvoiceNumber CDATA #REQUIRED              TrackingNumber CDATA #REQUIRED              OrderDate CDATA #REQUIRED              ShipDate CDATA #REQUIRED> Добавяне на атрибут ID за елемент Invoice.

  48. Създаване на XML за съществуваща база данни • Правило 6: Представяне на таблици за търсене. • За всеки външен ключ (връзка към друга таблица), избран за включване в XML: • Създава се атрибут за елемента, представящ таблицата с такъв ключ. • Дава се на атрибута името, което има таблицата, сочена от външния ключ и се дефинира като #REQUIRED, ако ключът не разрешава NULL или #IMPLIED в противен случай. • Направи атрибута от изброим тип. Разрешените стойности описват колоната за всички редове в таблицата за търсене.

  49. Създаване на XML за съществуваща база данни • Правило 6: Представяне на таблици за търсене. • Трябва да се определят отношенията между избраните за включване в XML таблици. • За всяко отношение трябва да се определи: • Дали е търсещо или за съдържание • Дали е съдържание и ако е така – посоката, в която ще седвижи. • Решавайки начина за обхождане на структурата подпомага структурирането. • Ако движението между 2 елемента е двупосочно, трябва да се добави IDREFвъв всеки елемент. Това увеличава времето за създаване на документа и размера му.

  50. Създаване на XML за съществуваща база данни • Правило 6: Представяне на таблици за търсене. • Целта е документа да подържа фактурите и месечната информация за тях. • Т.е. връзките трябва да позволяват движение от фактурите към информацията за тях. Например трябва да има връзка между фактурата и нейните редове (line items), както и към частта, свързана с всеки ред; или от фактурата към клиента, който я е поръчал.

More Related