2017-04-06 4 views
0

Ich versuche, eine Datei zu lesen, wo der Dateipfad in einem XML ist und dann den Inhalt in dieser Datei zu einem anderen neuen xml unter Verwendung nur xslt unter der Annahme, dass alle Dateien übereinstimmen Mappe.Lesen und Schreiben in eine XML-Datei mit XSLT

Die Anforderung ist, öffnen und lesen Sie die input.xml und finden Sie den Dateipfad in "Dateipfad" -Tag und öffnen Sie und lesen Sie die AddressBook01.xml, die in "Dateipfad" ist und lesen Sie dann "Name" Tag im Adressbuch01 .xml-Datei und schreibe sie in eine Datei wie Name01.xml.

Grundsätzlich wenn ausreichend, um zu wissen, wie man Dateien mit XSLT liest und schreibt.

Ist das möglich? Ich bin neu und jede Hilfe wird sehr geschätzt.

XML-Input-in input.xml

?xml version="1.0" encoding="UTF-8"?> 
<AddressFiles> 
    <AddressFile> 
     <name>AdressBook01</name> 
     <filepath>AddressBook01.xml</filepath> 
    </AddressFile> 
<AddressFiles> 

Inhalt in AddressBook01.xml

?xml version="1.0" encoding="UTF-8"?> 
<ContactDetails> 
    <Contact> 
     <Name>Tom</Name> 
     <Address>Toms Address</Address> 
    </Contact> 
    <Contact> 
     <Name>Peter</Name> 
     <Address>Peters Address</Address> 
    </Contact> 
</ContactDetails> 

in Names01.xml Erwartete Ausgabe

?xml version="1.0" encoding="UTF-8"?> 
<Name>Tom</Name> 
<Name>Peter</Name> 

Antwort

0

Mit einem XSLT 2.0-Prozessor können Sie die Datei mit der doc-Funktion einlesen und ein Ergebnisdokument unter Verwendung von xsl:result-document z.

<xsl:template match="AddressFile"> 
    <xsl:result-document href="Names{replace(name, '[^0-9]+', '')}.xml"> 
    <xsl:copy-of select="doc(filepath)//Contact/Name"/> 
    </xsl:result-document> 
</xsl:template> 

Beachten Sie, dass Ihr erwarteter Ausgang ein Stammelement fehlt mit den Name Elementen, damit es nicht ein wohlgeformtes XML-Dokument ist. Es ist möglich, dieses Ergebnisformat zu erstellen, und mein Vorschlag tut das, aber in den meisten Fällen ist es besser, wohlgeformte XML-Dokumente zu erstellen, da es sonst wenige Möglichkeiten gibt, die erstellte Datei mit XML-Werkzeugen zu lesen/zu verarbeiten.

+0

Was ist, wenn ich XSLT 1.0 verwende? Wie kann ich dann das Gleiche machen? –

+0

Welchen XSLT 1.0-Prozessor verwenden Sie? Einige unterstützen http://exslt.org/exsl/elements/document/index.html, um ein Ergebnisdokument zu erstellen, das Einlesen eines Dokuments kann mit 'document (Dateipfad) // Kontakt/Name' anstelle von' doc (Dateipfad) // Kontakt/Name'. –