Die XML-Seitenquelle

www.altova.com Alle erweitern/reduzieren Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Tutorials > SOAP Requests >

Die XML-Seitenquelle

Für die für das Design erforderlichen Daten benötigen wir eine XML-Seitenquelle ($XML1). Zu diesem Zweck verwenden wir die XML-Datei CityTimes.xml, die in die folgenden Teile gegliedert ist (siehe Codefragment unten):

 

das Element UTC, das über einen SOAP Request mit der UTC-Zeit aktualisiert wird, wenn der Benutzer auf eine Schaltfläche drückt (siehe Codefragment unten). Mit Hilfe dieses Node wird dem Benutzer die UTC-Uhrzeit angezeigt.
das Element RefreshTime (siehe Codefragment unten), das das Intervall (in Sekunden), in dem die Seite automatisch aktualisiert werden soll, enthält. Der Benutzer kann den Wert dieses Node auswählen.
das Element SelectCity , das die Detailinformationen (Name, TimeZone und Time) zu der vom Benutzer ausgewählten Stadt enthält (siehe Codefragment unten). Wenn der Benutzer aus der Dropdown-Liste der Auswahlliste eine Stadt auswählt, wird das Child-Element Name des Elements SelectCity mit den Namen der ausgewählten Stadt aktualisiert. Das Element SelectCity/TimeZone wird bei Auswahl in der Auswahlliste anhand der Datenbank Cities aktualisiert und das Element SelectCity/TimeZone wird durch den Webservice Response auf den SOAP Request, der bei Auswahl einer Stadt durch den Benutzer gesendet wird, aktualisiert.
Das Element Cities ist eine Datenbank, die die Details (Name, TimeZone und Time) zu den ausgewählten Städten enthält (siehe Codefragment unten). (Sie können auf Wunsch auch mehr Städte hinzufügen.) Der aufgerufene Webservice benötigt die Zeitzone einer Stadt, um die aktuelle Uhrzeit in der ausgewählten Stadt berechnen und zurückgeben zu können. Die Datenbank muss daher die Zeitzoneninformationen enthalten. Das Child-Element Time dieser City-Elemente wird für die aktuelle Uhrzeit einer Stadt verwendet. Diese wird von einem Webservice als Antwort auf einen SOAP Request abgerufen. Wie bei der UTC-Uhrzeit oben wird der SOAP Request gesendet, wenn der Benutzer eine Schaltfläche drückt (oder eine Stadt in der Auswahlliste auswählt).

 

In dieser Kurzversion der XML-Seitenquelle CityTimes.xml sehen Sie die Struktur des Dokuments

 

<CityTime xmlns="http://www.Nanonull.com/TimeService/">

 <UTC>12:00 AM</UTC>

 <RefreshTime>60</RefreshTime>

 <SelectCity>

         <City>

                 <Name>UTC Time</Name>

                 <TimeZone>GMT</TimeZone>

                 <Time>12:00 AM</Time>

         </City>

 </SelectCity>

 <Cities>

         <City>

                 <Name>Beijing</Name>

                 <TimeZone>UTC+8</TimeZone>

                 <Time>12:00 AM</Time>

         </City>

         ...

 </Cities>

 

 

 

Click to expand/collapseVollständiger Code der XML-Seitenquelle CityTimes.xml

Diese Datei befindet sich im Ordner MobileTogether des Ordners (Meine) Dokumente: MobileTogetherDesignerExamples\Tutorials\AltovaProducts.xml.

 

<?xml version="1.0" encoding="UTF-8"?>

<CityTime xmlns="http://www.Nanonull.com/TimeService/">

 <UTC>12:00 AM</UTC>

 <RefreshTime>60</RefreshTime>

 <SelectCity>

         <City>

                 <Name>UTC Time</Name>

                 <TimeZone>GMT</TimeZone>

                 <Time>12:00 AM</Time>

         </City>

 </SelectCity>

 <Cities>

         <City>

                 <Name>Beijing</Name>

                 <TimeZone>UTC+8</TimeZone>

                 <Time>12:00 AM</Time>

         </City>

         <City>

                 <Name>Boston</Name>

                 <TimeZone>UTC-6</TimeZone>

                 <Time>12:00 AM</Time>

         </City>

         <City>

                 <Name>London</Name>

                 <TimeZone>GMT</TimeZone>

                 <Time>12:00 AM</Time>

         </City>

         <City>

                 <Name>Los Angeles</Name>

                 <TimeZone>UTC-8</TimeZone>

                 <Time>12:00 AM</Time>

         </City>

         <City>

                 <Name>Madrid</Name>

                 <TimeZone>UTC+1</TimeZone>

                 <Time>12:00 AM</Time>

         </City>

         <City>

                 <Name>Moscow</Name>

                 <TimeZone>UTC+3</TimeZone>

                 <Time>12:00 AM</Time>

         </City>

         <City>

                 <Name>Paris</Name>

                 <TimeZone>UTC+1</TimeZone>

                 <Time>12:00 AM</Time>

         </City>

         <City>

                 <Name>Sydney</Name>

                 <TimeZone>UTC+11</TimeZone>

                 <Time>12:00 AM</Time>

         </City>

         <City>

                 <Name>Tokyo</Name>

                 <TimeZone>UTC+9</TimeZone>

                 <Time>12:00 AM</Time>

         </City>

         <City>

                 <Name>Vienna</Name>

                 <TimeZone>UTC+1</TimeZone>

                 <Time>12:00 AM</Time>

         </City>

 </Cities>

</CityTime>

 

 

Hinzufügen der XML-Seitenquelle

Zu den Seitenquellen des Designs wurde eine XML-Seitenquelle ($XML1) hinzugefügt, für die CityTimes.xml als Seitenquelle verwendet wird. Die Seitenquelle wurde folgendermaßen hinzugefügt:

 

1.Klicken Sie im Fenster "Seitenquellen" (siehe Abbildung oben) auf die Schaltfläche Seitenquelle hinzufügen. Wählen Sie die Option neue, aus Datei importierte XML-, HTML- oder JSON-Struktur aus. Bestätigen Sie die Einstellungen zur Seitenquelle im nächsten Bildschirm (ohne die Standardeinstellungen zu ändern), indem Sie auf Fertig stellen klicken.

MTDSOAPTutPageSources02XML

2.Daraufhin wird ein Öffnen-Dialogfeld angezeigt. Navigieren Sie zur Datei CityTimes.xml (siehe Pfade) und klicken Sie auf Öffnen. Daraufhin wird die $XML1-Struktur erstellt. Als Standarddatei dafür ist die Datei CityTimes.xml definiert und die XML-Struktur der Seitenquelle ist die der Standarddatei.

 

Namespaces von Nodes in der SOAP Response und der XML-Struktur

Die Nodes in der SOAP Response dieses konkreten Webservice haben kein Präfix und gehören zum Namespace: http://www.Nanonull.com/TimeService/. Eine Methode, um in XPath-Ausdrücke des Designs eingegebene SOAP Response Nodes korrekt zu adressieren ist daher, den XPath-Standard-Namespace auf diesen Namespace zu setzen (Abbildung unten).

MTDSOAPTutPageSources03NS

Wenn Sie diesen Namespace als XPath-Standard-Namespace definieren, bedeutet dies, dass für alle in XPath-Ausdrücke des Designs eingegebenen Nodes ohne Präfix dieser Namespace verwendet wird. Wenn nun die Nodes der XML-Struktur eben falls kein Präfix haben (wie dies in unserer XML-Struktur der Fall ist) und wenn diese Struktur-Nodes in XPath-Ausdrücke ohne Präfixe eingegeben werden, so werden diese Nodes in XPath-Ausdrücken ebenfalls als Nodes im XPath-Standard-Namespace behandelt: http://www.Nanonull.com/TimeService/.

 

Aus diesem Grund weisen wir den Namespace http://www.Nanonull.com/TimeService/ auch den Nodes in der XML-Struktur zu. Wenn Sie einen Blick auf das XML-Codefragment oben werfen, werden Sie sehen, dass das Root-Element des Dokuments dem folgenden Namespace zugewiesen wurde:

 

<CityTime xmlns="http://www.Nanonull.com/TimeService/">

 

Da dieser Namespace für das gesamte XML-Dokument gilt und von keinem Namespace-Mapping für ein untergeordnetes Elemente außer Kraft gesetzt wird, ist der Namespace für das gesamte Dokument gültig
Da die Namespace-Deklaration des Dokuments kein Präfix hat, wird dieser Namespace als Standard-Namespace für das XML-Dokument verwendet. Folglich befinden sich Nodes mit lokalen Namen ohne Präfix in diesem Namespace.

 

Anmerkung:Wenn sich Ihr XML-Dokument in einem anderen Namespace als die SOAP Response Nodes befindet, sollten Sie den Namespace des Dokuments am besten im XML-Dokument mit einem Präfix deklarieren. Stellen Sie anschließend im Design sicher, dass derselbe Präfix:Namespace-Wert in der Namespace-Sammlung des Dokuments korrekt eingetragen wurde. Sie sollten beim Referenzieren von XML-Struktur-Nodes in XPath-Ausdrücken des Designs das deklarierte Präfix verwenden. Alternativ dazu könnten Sie einen Node in XPath-Ausdrücke mit dem Stern-Präfix (z.B. *:NodeName) adressieren. Dadurch würden alle Nodes, die den lokalen Namen NodeName haben, gefunden, egal in welchem Namespace sich der Node befindet.

 


© 2019 Altova GmbH