XML – Das Extensible Markup Language

XML steht für „Extensible Markup Language“ und ist eine von vielen Markup-Sprachen. Doch was macht XML so besonders, und warum hat es sich zu einem Standard in vielen Technologiebereichen entwickelt?

Entstehungsgeschichte

XML wurde 1998 vom World Wide Web Consortium (W3C) als Empfehlung veröffentlicht. Es entstand als vereinfachte Untermenge von SGML (Standard Generalized Markup Language) mit dem Ziel, sowohl menschenlesbare als auch maschinenlesbare Dokumente zu erstellen.

Aufbau und Struktur

XML-Dokumente bestehen aus Textdaten, die durch Start- und End-Tags strukturiert sind. Ein Beispiel:

<person>
    <name>Max Mustermann</name>
    <age>30</age>
</person>

Hier definiert das „person“-Element eine Person, und die inneren Elemente „name“ und „age“ geben Informationen über diese Person.

Versionen

Es gibt hauptsächlich zwei Versionen von XML: XML 1.0 und XML 1.1. XML 1.1 wurde eingeführt, um Charaktermodellierungs- und Zeilenendprobleme zu beheben, fand jedoch nicht so viel Akzeptanz wie XML 1.0.

Anwendungsfälle

  • Datenübertragung: XML wird häufig verwendet, um Daten zwischen einem Client und einem Server in Webanwendungen auszutauschen.
  • Konfigurationsdateien: Viele Softwareanwendungen verwenden XML-Dateien zur Speicherung von Einstellungen und Konfigurationsdaten.
  • Dokumentenspeicherung: Einige Dokumentformate wie Microsoft Office Open XML und OpenDocument verwenden XML.

Vorteile von XML

  • Flexibel: XML lässt sich leicht erweitern und anpassen.
  • Plattformunabhängig: XML-Dokumente können auf jeder Plattform gelesen und geschrieben werden.
  • Selbstbeschreibend: Die Struktur von XML-Dokumenten ist oft intuitiv und leicht zu verstehen.
  • Unterstützung: Da es ein W3C-Standard ist, wird XML von vielen Tools und Technologien unterstützt.

Nachteile von XML

  • Verbosity: XML kann in einigen Fällen aufgebläht sein, insbesondere im Vergleich zu anderen Datenformaten wie JSON.
  • Komplexität: Das Parsen von XML kann komplexer sein als das Parsen von einfachem Text oder JSON.

XML ist eine mächtige und flexible Markup-Sprache, die in vielen Technologiebereichen weit verbreitet ist. Obwohl es einige Kritikpunkte gibt, bleibt XML ein unverzichtbares Werkzeug für viele Anwendungen, von Webdiensten bis hin zu Dokumentenspeicherung und -austausch.

Arbeiten mit XML im Microsoft SQL Server

XML ist eine weit verbreitete Datenrepräsentationsform, die sich ideal für Datenübertragung, Konfiguration und viele andere Anwendungen eignet. Der Microsoft SQL Server bietet eine umfassende Unterstützung für XML, sowohl beim Importieren von Daten als auch bei der Abfrage von XML innerhalb von SQL. In diesem Artikel werden wir die grundlegenden Möglichkeiten und Techniken zur Arbeit mit XML im SQL Server betrachten.

Importieren von XML-Daten

Der SQL Server bietet die Möglichkeit, XML-Daten direkt in Tabellen zu importieren. Die häufigste Methode, dies zu tun, ist die Verwendung des OPENXML-Funktion.

Ein einfaches Beispiel:

Angenommen, Sie haben folgendes XML-Dokument:

<personen> 
    <person> 
        <name>Max Mustermann</name> 
        <alter>30</alter> 
    </person> 
    <person> 
        <name>Lisa Müller</name> 
        <alter>25</alter> 
    </person> 
</personen>

Sie können dieses XML in eine SQL Server Tabelle mit dem folgenden SQL-Befehl importieren:

DECLARE @xmlData XML;
SET @xmlData = '...'; -- Hier Ihr XML-Dokument einfügen

INSERT INTO IhreTabelle(Name, Alter)
SELECT
x.value('(name/text())[1]', 'nvarchar(255)'),
x.value('(alter/text())[1]', 'int')
FROM @xmlData.nodes('/personen/person') AS xt(x);

Abfragen von XML-Daten

Mit der Einführung der XML-Datentyp in SQL Server können Sie auch direkt auf XML-Daten innerhalb Ihrer SQL-Abfragen zugreifen.

Ein Beispiel:

-- Angenommen Sie haben eine Tabelle mit einer XML-Spalte namens 'Daten'
SELECT
Daten.value('(/person/name/text())[1]', 'nvarchar(255)') AS Name,
Daten.value('(/person/alter/text())[1]', 'int') AS Alter
FROM IhreTabelle

Vorteile des Arbeitens mit XML im SQL Server

  • Flexibilität: XML ermöglicht es Ihnen, komplexe Datenstrukturen in einer einzigen Spalte zu speichern, was zu flexibleren Tabellenentwürfen führen kann.
  • Standardkonformität: Da XML ein Industriestandard ist, erleichtert die Verwendung von XML im SQL Server die Integration mit anderen Systemen.

Nachteile und Überlegungen

  • Leistungsüberlegungen: Das Arbeiten mit XML kann langsamer sein als das Arbeiten mit Standarddatentypen.
  • Komplexität: Das Parsen und Abfragen von XML kann komplexer sein als das Arbeiten mit Standarddatentypen.

Der Microsoft SQL Server bietet eine robuste Unterstützung für das Arbeiten mit XML, was es zu einem leistungsstarken Tool für Entwickler macht, die mit XML-Daten arbeiten müssen. Mit den richtigen Techniken und Überlegungen können Sie die Vorteile von XML nutzen und gleichzeitig die potenziellen Nachteile minimieren.

Funktion im SQL Server, Informationen aus einer XML-Datenstruktur extrahieren

CREATE FUNCTION [dbo].[ExtendedParseXML]
(
    @XMLData XML
)
RETURNS TABLE
AS
RETURN
(
    SELECT 
        Elements.value('local-name(..)', 'NVARCHAR(100)') AS ParentElementName,
        Elements.value('local-name(.)', 'NVARCHAR(100)') AS ElementName,
        Elements.value('(.)[1]', 'NVARCHAR(MAX)') AS ElementValue,
        Elements.value('../@id', 'NVARCHAR(100)') AS ElementId,
		ElementPosition = ROW_NUMBER() OVER(PARTITION BY Elements.value('local-name(..)', 'NVARCHAR(100)') ORDER BY (SELECT NULL))
    FROM 
        @XMLData.nodes('//*') AS E(Elements)
    WHERE
        E.Elements.exist('*') = 0
);
GO

Die Funktion [dbo].[ExtendedParseXML] ist eine benutzerdefinierte Funktion in SQL Server, die eine XML-Datenstruktur analysiert und eine Tabelle mit den Ergebnissen zurückgibt. Hier ist eine schrittweise Erklärung der Funktion:

  1. Funktionsdefinition:
    • CREATE FUNCTION [dbo].[ExtendedParseXML] (@XMLData XML): Die Funktion wird erstellt und akzeptiert einen Parameter @XMLData vom Typ XML.
  2. Rückgabetyp:
    • RETURNS TABLE: Dies besagt, dass die Funktion als Ergebnis eine Tabelle zurückgeben wird.
  3. Funktionskörper (RETURN Block):
    • Innerhalb des RETURN Blocks wird eine SELECT-Abfrage verwendet, die die Daten, die zurückgegeben werden sollen, definiert.
  4. XML-Knoten-Auswahl:
    • @XMLData.nodes('//*') AS E(Elements): Diese Zeile navigiert durch das XML und wählt jeden Knoten aus (//* bedeutet, alle Elemente auf jeder Ebene im XML-Dokument zu wählen). Jeder ausgewählte Knoten wird als E(Elements) referenziert.
  5. Spaltenauswahl:
    • Elements.value('local-name(..)', 'NVARCHAR(100)') AS ParentElementName: Diese Zeile extrahiert den lokalen Namen des übergeordneten Elements des aktuellen Knotens und benennt die Spalte als ParentElementName.
    • Elements.value('local-name(.)', 'NVARCHAR(100)') AS ElementName: Diese Zeile extrahiert den lokalen Namen des aktuellen Knotens und benennt die Spalte als ElementName.
    • Elements.value('(.)[1]', 'NVARCHAR(MAX)') AS ElementValue: Diese Zeile holt den Textinhalt des aktuellen Knotens und benennt die Spalte als ElementValue.
    • Elements.value('../@id', 'NVARCHAR(100)') AS ElementId: Diese Zeile extrahiert den Wert des id-Attributs vom übergeordneten Element des aktuellen Knotens und benennt die Spalte als ElementId.
  6. ElementPosition:
    • ElementPosition = ROW_NUMBER() OVER(PARTITION BY Elements.value('local-name(..)', 'NVARCHAR(100)') ORDER BY (SELECT NULL)): Hier wird eine eindeutige Nummer für jedes Element innerhalb seiner Gruppe von Geschwisterknoten generiert. PARTITION BY gruppiert diese Nummerierung nach dem übergeordneten Elementnamen. Die ORDER BY (SELECT NULL) Anweisung bedeutet, dass innerhalb jeder Partition keine spezifische Sortierung angewendet wird.
  7. WHERE-Bedingung:
    • WHERE E.Elements.exist('*') = 0: Diese Zeile schließt alle Knoten aus, die Unterknoten haben. Sie fokussiert sich auf Blattknoten (Knoten am Ende einer Verzweigung, die keine weiteren Unterknoten enthalten).
  8. Funktionsende:
    • GO: Dieses Schlüsselwort wird verwendet, um die Anweisung an den SQL Server zu senden, die Funktion zu erstellen oder zu ändern.

Ausführungsbeispiel:

Nehmen wir an, Sie haben folgende XML-Daten:

<Books> 
   <Book id="1"> 
        <Title>SQL Fundamentals</Title> 
        <Author>John Doe</Author> 
  </Book>  
  <Book id="2"> 
        <Title>XML Basics</Title> 
        <Author>Jane Smith</Author> 
   </Book> 
</Books>

Um diese Funktion mit dem obigen XML zu verwenden, würden Sie sie wie folgt aufrufen:

DECLARE @SampleXML XML = '
<Books> 
   <Book id="1"> 
        <Title>SQL Fundamentals</Title> 
        <Author>John Doe</Author> 
  </Book>  
  <Book id="2"> 
        <Title>XML Basics</Title> 
        <Author>Jane Smith</Author> 
   </Book> 
</Books>
';

SELECT * FROM [dbo].[ExtendedParseXML](@SampleXML);

Die Ausgabe sollte so aussehen:

beispiel xml ergebnis

Wie hat dir der Artikel gefallen?

Vielen Dank für dein Feedback!
About Frank 83 Articles

Ich bin Frank, Data Warehouse und BI-Entwickler mit langjähriger Expertise in diesem Bereich. Ich verfüge über mehr als 20 Jahre Berufserfahrung im DWH Umfeld. Das Analysieren und Interpretieren von Zahlen, Daten und Fakten ist meine große Leidenschaft, aus diesem Grunde ist auch diese Seite hier entstanden.

Be the first to comment

Leave a Reply

Your email address will not be published.


*