Child XInclude anhängen

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

Startseite >  Benutzerhandbuch und Referenz > Menübefehle > Menü "XML" > Child hinzufügen >

Child XInclude anhängen

ic_add_child_xinclude

Der Befehl XML | Child hinzufügen | XInclude steht nur in der Grid-Ansicht zur Verfügung und fügt ein XInclude-Element  als Child des ausgewählten Datenelements ein. Bei Auswahl dieses Befehl wird das Dialogfeld "XInclude" (Abbildung unten) aufgerufen.

 

dlg_xinclude

Die zu inkludierende XML-Datei wird in das Textfeld href eingegeben (alternativ dazu können Sie die Datei auch über die Durchsuchen-Schaltfläche (...) rechts vom Textfeld eingeben). Der Dateiname wird als Wert des href-Attributs eingegeben. Auch die Attribute parse, xpointer und encoding des Elements XInclude (xi:include) und das Child-Element fallback von xi:include können über das Dialogfeld eingegeben werden. Aktivieren Sie dazu zuerst das entsprechende Kontrollkästchen und wählen Sie anschließend die benötigten Werte aus, bzw. geben Sie sie ein. Im Fall des Elements fallback wird durch das Aktivieren des Kontrollkästchens nur das leere Element eingefügt. Der Inhalt des Elements fallback muss später in einer der Bearbeitungsansichten hinzugefügt werden.

 

Das Attribut parse bestimmt ob das inkludierte Element als XML oder als Text geparst wird. (XML ist die Standardeinstellung und muss daher nicht extra angegeben werden.) Das Attribut xpointer identifiziert ein bestimmtes Fragment des Dokuments, das mit dem Attribute href lokalisiert wird; dieses Element wird inkludiert. Das Attribute encoding definiert die Kodierung des inkludierten Dokuments, damit dieses Dokument (oder der Teil davon, der inkludiert wird) von XMLSpy in die Kodierung des inkludierenden Dokuments transkodiert werden kann. Der Inhalt des Child-Elements fallback ersetzt das Element xi:include wenn das zu inkludierende Dokument nicht auffindbar ist.

 

Hier sehen Sie ein Beispiel für ein XML-Dokument, in dem zum Inkludieren zweier XML-Dokumente XInclude verwendet wird:

 

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

<AddressBook xsi:schemaLocation="http://www.altova.com/sv/myaddresses AddressBook.xsd"

 xmlns="http://www.altova.com/stylevision/tutorials/myaddresses"

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 xmlns:xi="http://www.w3.org/2001/XInclude">

 <xi:include href="BusinessAddressBook.xml"/>

 <xi:include href="PersonalAddressBook.xml"/>

</AddressBook>

 

Beim Parsen dieses Dokuments werden die beiden XInclude-Elemente durch die in den entsprechenden href Attributen definierten Dateien ersetzt.

 

 

xml:base

Wenn der XML-Validator von XMLSpy ein XML-Dokument liest und im XInclude-Namespace auf das Element include trifft (im Folgenden xi:include genannt), ersetzt er dieses Element  (xi:include) durch das im href-Attribut des xi:include-Elements definierte XML-Dokument. Das Dokument-Element (Root-Element) des inkludierten XML-Dokuments (bzw. das durch einen XPointer gekennzeichnete Element) wird mit einem Attribut von xml:base inkludiert, um die Basis-URIs des inkludierten Elements beizubehalten. Wenn das XML-Ergebnisdokument (das das/die inkludierte(n) XML-Dokument(e) oder Baumstruktur-Fragment(e) enthält) dem Schema entsprechend gültig sein muss, so muss das Dokument-Element des inkludierten Dokuments (oder das Element auf oberster Ebene des Baumstrukturfragments) mit einem Content Model erstellt werden, das ein Attribut xml:base zulässt. Wenn das xml:base Attribut laut Schema in diesem Element nicht zulässig ist, ist das Ergebnisdokument ungültig. Eine Anleitung zum Definieren eines xml:base Attributs im Content Model eines Elements in der Schema-Ansicht von XMLSpy finden Sie in dieser Dokumentation im Abschnitt zu Attributen mit dem Präfix xml: des Abschnitts Schema-Ansicht.

 

XPointers

XMLSpy unterstützt XPointers in XInclude. Die relevanten W3C Recommendations dazu sind die XPointer Framework und die XPointer element() Schema Recommendation. Durch die Verwendung eines XPointers in einem XInclude-Element kann ein bestimmter Teil des XML-Dokuments anstatt des gesamten XML-Dokuments inkludiert werden. XPointers werden folgendermaßen in einem XInclude-Element verwendet:

 

 <xi:include href="PersonalAddressBook.xml" xpointer="element(usa)"/>

 <xi:include href="BusinessAddressBook.xml" xpointer="element(/1/1)"/>

 <xi:include href="BobsAddressBook.xml" xpointer="element(usa/3/1)"/>

 <xi:include href="PatsAddressBook.xml" xpointer="element(usa)element(/1/1)"/>

 

Im element() Schema von XPointer kann ein NCName oder eine von Ganzzahlen geleitete Child-Sequenz verwendet werden.

 

Im ersten oben angeführten xi:include Element verwendet das xpointer Attribut das Elementschema mit dem NCName usa. Laut XPointer Framework identifiziert dieser NCName das Element, das die ID usa hat.
Im zweiten oben angeführten xi:include Element identifiziert das xpointer Attribut mit dem Wert element(/1/1) im ersten Schritt das erste Child-Element der Dokument-Root (wobei es sich um das Dokument (oder Root)-Element handelt, wenn das Dokument wohlgeformt ist. Im zweiten Schritt wird das erste Child-Element des im vorherigen Schritt gesuchten Elements gesucht; in unserem Beispiel wäre das das erste Child-Element des Dokument-Elements.
Das xpointer Attribut des dritten oben angeführten xi:include Elements verwendet eine Kombination von NCName und Child-Sequenz. Dieses XPointer-Element sucht  das erste Child-Element des dritten Child-Elements des Elements mit der ID usa.
Wenn Sie nicht sicher sind, ob Ihr erstes XPointer-Element funktioniert, können Sie zur Sicherheit ein zweites verwenden, wie im vierten oben angeführten xi:include Element aufgelistet: xpointer="element(usa)element(/1/1)". Wenn hier kein Element mit der ID usa gefunden wird, definiert der Backup-XPointer, dass das erste Child-Element des Dokument-Elements ausgewählt werden soll. Auch zusätzliche Backups sind zulässig. Einzelne XPointer-Elemente müssen nicht getrennt werden, können aber auch durch ein Leerzeichen getrennt werden wie z.B. in xpointer="element(usa)element(addresses/1) element(/1/1)".

 

Anmerkung:Der Namespace Binding-Kontext wird im element() Schema nicht verwendet, das das element() Schema qualified Names nicht unterstützt.

 

 


© 2019 Altova GmbH