![]() |
Attribute die ich gar nicht explizit erstellt habe
Hallo zusammen...
Ich erstelle mit MSXML (v5) XML -Dateien, leider habe ich ein kleines Problem... Der Prolog meiner Datei enthält drei Attribute:
XML-Code:
Jetzt zu meinem Problem... das letzte der drei Attribute "xmlns" wird für jedes <?xml version="1.0" encoding="utf-8"?> <subjectData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://innosolv.ch/namespace/isag"> ... Element in der gleichen Ebene übernommen ohne dass ich das explizit angegeben habe, ich kanns auch nicht löschen. Aber der wert wurde nicht übernommen, also xmlns="" statt xmlns="http://innosolv.ch/namespace/isag"> So sieht also die Datei aus... Siehe <PACKAGE> und <SUBJECT EVENT>... dort sollten keine Attribute sein!
XML-Code:
So wird der Prolog mit den Attributen erstellt:<?xml version="1.0" encoding="utf-8" ?> - <subjectData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://innosolv.ch/namespace/isag"> - <package xmlns=""> - <sender> - <user> <userName>sa</userName> </user> <swSystemID>1</swSystemID> <swSystemName>BASIS</swSystemName> </sender> - <receiver> <swSystemID>4700</swSystemID> </receiver> - <transaction> <transactionID>101069</transactionID> <transactionCase>10000</transactionCase> <transactionDate>2007-05-14</transactionDate> <transactionAcknowledge>true</transactionAcknowledge> <transactionDescription>Import subjekt</transactionDescription> </transaction> </package> - <subjectEvent xmlns=""> <mutationType>I</mutationType> <referenceID>101069</referenceID> <referenceType>1</referenceType> <extPosID>101069</extPosID> <eventID /> <redundancyCheck>1</redundancyCheck> - <subject> <name>FakeBetrieb1_TestRaphael</name> <correspondenceLanguage rvcd="1">Schweizerdeutsch</correspondenceLanguage> <mrMrs rvcd="3">Firma</mrMrs> <classOfBusiness rvcd="2001">Verein</classOfBusiness> - <NotNaturalPerson> <legalForm rvcd="11">Einfache Gesellschaft</legalForm> <formationType rvcd="5">Eröffnung</formationType> <formationDate>14.05.07</formationDate> </NotNaturalPerson> - <address> <addressReferenceID>1</addressReferenceID> <addressTypeOf rvcd="1">Silberhornweg</addressTypeOf> <additionalAddress>fam.</additionalAddress> <validFrom>10.05.04</validFrom> <note xsi:nil="true">Dies ist die Notiz zur Adresse!</note> - <place> <street>Silberhornweg</street> <houseNumber>18</houseNumber> - <city> <cityID /> <zipCodeID>1830</zipCodeID> <zipCode>3661</zipCode> <town>Uetendorf</town> <country rvcd="CH">Schweiz</country> <zipCodeAddOn>00</zipCodeAddOn> </city> </place> </address> </subject> </subjectEvent> </subjectData>
Delphi-Quellcode:
Hat da jmd eine Idee warum die Attribute erstellt werden ohne das ich... // Microsoft Document Object Model - Document erstellen xmlDoc := CoDOMDocument40.Create; // (Rootnode) Wurzelelement erzeugen root := xmlDoc.createElement('subjectData'); // Prolog mit Steueranweisungen (Processing instructions) instr := xmlDoc.createProcessingInstruction('xml', 'version="1.0" encoding="utf-8"'); xmlDoc.appendChild(instr); // Wurzelelement dem DOMDocument hinzufügen xmlDoc.appendChild(root); // node := root / nur anders formuliert node := xmlDoc.selectSingleNode('subjectData'); // 1. Attribut für RootNode erzeugen attr := xmlDoc.createAttribute('xmlns:xsd'); attr.value := 'http://www.w3.org/2001/XMLSchema'; node.attributes.setNamedItem(attr); // 2. Attribut für RootNode erzeugen attr := xmlDoc.createAttribute('xmlns:xsi'); attr.value := 'http://www.w3.org/2001/XMLSchema-instance'; node.attributes.setNamedItem(attr); // 3. Attribut für RootNode erzeugen attr := xmlDoc.createAttribute('xmlns'); attr.value := 'http://innosolv.ch/namespace/isag'; node.attributes.setNamedItem(attr); ... das so will¿ Danke für deine Hilfe... LG enemyleft [edit=SirThornberry]Titel korrigiert - Mfg, SirThornberry[/edit] |
Re: Attribute die ich gar nicht explizit erstellt habe¿
Hi,
auf den ersten Blick sieht das richtig aus. Sicher, dass du attrib nicht später nochmal verwendest? Chris |
Re: Attribute die ich gar nicht explizit erstellt habe¿
Liste der Anhänge anzeigen (Anzahl: 1)
Hi CalganX
Danke für deine Antwort... Aber nein, attr wird zwar nochmals verwendet jedoch vorher einen anderen Wert zugewiesen... Ich hab mal das Projekt gepostet, dann kannst du vielleicht den Fehler erruieren?! :cyclops: Ich verwende TEButton statt TEButton, musst sie wohl ersetzen.. sorry oder die Komponente installieren.. Komponente: ![]() Wär froh um deine Hilfe... THX & LG cherry |
Re: Attribute die ich gar nicht explizit erstellt habe¿
Hi,
habe leider im Moment keine Möglichkeit den Code zu kompilieren. Aber warum verwendest du anfangs node? Nimm doch direkt root. Eventuell behebt das schon dein Problem. Chris |
Re: Attribute die ich gar nicht explizit erstellt habe¿
Schade... Danke für deinen Tipp. Das hab ich anfangs so gemacht, also root und nicht node verwendet,
dann hab ichs mal so probiert und mit erhofft das es eben mit node geht... ergibt beides das selbe resultat.. bringt also nichts - habs grade eben nochmals versucht... |
Re: Attribute die ich gar nicht explizit erstellt habe¿
Kann mir keiner weiterhelfen?
|
Re: Attribute die ich gar nicht explizit erstellt habe¿
Hallo,
schalte dazu einfach die DoNameSpaceDecl aus. Ist eine Einstellung unter Options bei deinem XML Dokument, dann sollte dein Problem behoben sein. |
Re: Attribute die ich gar nicht explizit erstellt habe
Hallo Raphael,
die Leerattribute (xmlns="") sind eigentlich ganz einfach zu erklären: Du verwendest Techniken zum Aufbau deines XML-Dokuments, die ab CoXMLDOMDocument40 nur beim Arbeiten ohne Namespaces funktionieren. Sobald du mit Namespaces arbeitest musst du anders vorgehen. Die Methode CreateElement() erzeugt ein neues Element grundsätzlich ohne Namespace, also auch nicht im Default Namespace. Um ein Element im Default (oder einem beliebigen) NameSpace zu erzeugen musst du die Methode CreateNode() verwenden:
Delphi-Quellcode:
Bei der Beschaffung von Knotenreferenzen über XPATH wirst du im Zusammenhang mit dem Default Namespace über ein weiteres Problem stolpern, das
var
nsDef: string; nPackage, nSender, nUser: IXMLDOMNode; begin nsDef := 'http://innosolv.ch/namespace/isag'; // ... nPackage := root.appendChild(xmlDoc.createNode(NODE_ELEMENT, 'package', nsDef)); nSender := nPackage.appendChild(xmlDoc.createNode(NODE_ELEMENT, 'sender', nsDef)); nUser := nSender.appendChild(xmlDoc.createElement('user')); // ... end; ![]() Grüße vom marabu |
Re: Attribute die ich gar nicht explizit erstellt habe
hallo marabu, vielen Dank für deine Antwort. Wenigstens tappe ich jetzt nicht
mehr ganz im Dunkeln. Ich hab mal den Code von dir übernommen und so verändert, dass meiner Meinung nach eine XML Datei geschrieben wird. Das ist mein Code:
Delphi-Quellcode:
Na ja und das Dokument wird auch erstellt, nur ist es komplett leer.
nsDef : String;
nRoot, nPackage, nSender, nUser: IXMLDOMNode; begin nsDef := 'http://innosolv.ch/namespace/isag'; // Microsoft Document Object Model - Document erstellen xmlDoc := CoDOMDocument40.Create; // (Rootnode) Wurzelelement erzeugen root := xmlDoc.createElement('subjectData'); nPackage := root.appendChild(xmlDoc.createNode(NODE_ELEMENT, 'package', nsDef)); nSender := nPackage.appendChild(xmlDoc.createNode(NODE_ELEMENT, 'sender', nsDef)); nUser := nSender.appendChild(xmlDoc.createElement('user')); xmlDooc.Save('C:\HalloWelt.xml'); Wo mach ich da den Überlegungsfehler, ist sicher was peinliches :oops: ... // EDIT: Oops, vergessen root zo appenden! :wall: thx |
Re: Attribute die ich gar nicht explizit erstellt habe
So - Noch ne frage dazu...
xmlns=... wurde übernommen, wie erstelle ich aber die anderen Attribute für den Prolog -> xmlns:xsd und xmlns:xsi ?! mit attribute.setNamedItem(...) oder gibts da auch ne elegantere Variante?? LG |
Re: Attribute die ich gar nicht explizit erstellt habe
Ich würde es wahrscheinlich so machen:
Delphi-Quellcode:
Freundliche Grüße
var
// ... nsDef: string; nPackage, nSender, nUser: IXMLDOMNode; begin nsDef := 'http://innosolv.ch/namespace/isag'; // ... root := xmlDoc.createElement('subjectData'); with root as IXMLDOMElement do begin setAttribute('xmlns:xsd', 'http://www.w3.org/2001/XMLSchema'); setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance'); setAttribute('xmlns', nsDef); end; // ... nPackage := root.appendChild(xmlDoc.createNode(NODE_ELEMENT, 'package', nsDef)); // ... end; |
Re: Attribute die ich gar nicht explizit erstellt habe
@Marabu
VIELEN DANK, hat bestens geklappt. Ich hab meine Datei jetzt so erzeugt, ist das nun Korrekt oder würdest du noch etwas anders machen. Ich werde diese Prozedur dann in eine DLL packen, so dass ich sie später auch für andere Programme verwenden kann...
Delphi-Quellcode:
// XML DATEI ERSTELLEN
procedure TForm1.Act_create_XMLExecute(Sender: TObject; filename: String; vUserName, vSwSystemID, vSwSystemName, vSwSystemID_2, vTransactionID, vTransactionCase, vTransactionDate, vTransactionAcknowledge, vTransactionDescription, vMutationType, vReferenceID, vReferenceID2, vReferenceType, vExtPosID, vEventID, vRedundancyCheck, vName, vLegalForm, aLegalForm, vFormationType, aFormationType, vFormationDate, vAddressReferenceID, vAddressTypeOf, aAddressTypeOf, vAdditionalStreetPosition, vValidFrom, vNote, vStreet, vAdditionalStreet, aAdditionalStreet, vHouseNumber, vAdditionalHouseNumber, aAdditionalHouseNumber, vCityID, vZipCodeID, vZipCode, vTown, vCountry, aCountry, vLocality, aLocality, vZipCodeAddOn: WideString); var xmlDoc : msDOMDocument; instr: IXMLDOMProcessingInstruction; nsDef: WideString; root, nPackage, nSender, nUser, nUserName, nSwSystemID, nSwSystemName, nReceiver, nSwSystemID_2, nTransaction, nTransactionID, nTransactionCase, nTransactionDate, nTransactionAcknowledge, nTransactionDescription, nSubjectEvent, nMutationType, nReferenceID, nReferenceID2, nReferenceType, nExtPosID, nEventID, nRedundancyCheck, nSubject, nName, nNotNaturalPerson, nLegalForm, nFormationType, nFormationDate, nAddress, nAddressReferenceID, nAddressTypeOf, nAdditionalStreetPosition, nValidFrom, nNote, nPlace, nStreet, nAdditionalStreet, nHouseNumber, nAdditionalHouseNumber, nCity, nCityID, nZipCodeID, nZipCode, nTown, nCountry, nLocality, nZipCodeAddOn: IXMLDOMNode; begin nsDef := 'http://innosolv.ch/namespace/isag'; // Microsoft Document Object Model - Document erstellen xmlDoc := CoDOMDocument40.Create; // (Rootnode) Wurzelelement erzeugen root := xmlDoc.createElement('subjectData'); // Prolog mit Steueranweisungen (Processing instructions) instr := xmlDoc.createProcessingInstruction('xml', 'version="1.0" encoding="utf-8"'); xmlDoc.appendChild(instr); // Rootelement mit Namespaces definieren with root as IXMLDOMElement do begin setAttribute('xmlns:xsd', 'http://www.w3.org/2001/XMLSchema'); setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchame-instance'); setAttribute('xmlns', nsDef); end; // Rootelement an Dokument anfügen xmlDoc.appendChild(root); // Nachfolgend wird der ganze Baum mit allen relevanten Namespaces erstellt. nPackage := root.appendChild(xmlDoc.createNode(NODE_ELEMENT,'package',nsDef)); nSender := nPackage.appendChild(xmlDoc.createNode(NODE_ELEMENT,'sender',nsDef)); nUser := nSender.appendChild(xmlDoc.createNode(NODE_ELEMENT,'user',nsDef)); nUserName := nUser.appendChild(xmlDoc.createNode(NODE_ELEMENT,'userName',nsDef)); nUserName.text := vUserName; nSwSystemID := nSender.appendChild(xmlDoc.createNode(NODE_ELEMENT,'swSystemID',nsDef)); nSwSystemID.text := vSwSystemID; nSwSystemName := nSender.appendChild(xmlDoc.createNode(NODE_ELEMENT,'swSystemName',nsDef)); nSwSystemName.text := vSwSystemName; nReceiver := nPackage.appendChild(xmlDoc.createNode(NODE_ELEMENT,'receiver',nsDef)); nSwSystemID_2 := nReceiver.appendChild(xmlDoc.createNode(NODE_ELEMENT,'swSystemID',nsDef)); nSwSystemID_2.text := vSwSystemID_2; nTransaction := nPackage.appendChild(xmlDoc.createNode(NODE_ELEMENT,'transaction',nsDef)); nTransactionID := nTransaction.appendChild(xmlDoc.createNode(NODE_ELEMENT,'transactionID',nsDef)); nTransactionID.text := vTransactionID; nTransactionCase := nTransaction.appendChild(xmlDoc.createNode(NODE_ELEMENT,'transactionCase',nsDef)); nTransactionCase.text := vTransactionCase; nTransactionDate := nTransaction.appendChild(xmlDoc.createNode(NODE_ELEMENT,'transactionDate',nsDef)); nTransactionDate.text := vTransactionDate; nTransactionAcknowledge := nTransaction.appendChild(xmlDoc.createNode(NODE_ELEMENT,'transactionAcknowledge',nsDef)); nTransactionAcknowledge.text := vTransactionAcknowledge; nTransactionDescription := nTransaction.appendChild(xmlDoc.createNode(NODE_ELEMENT,'transactionDescription',nsDef)); nTransactionDescription.text := vTransactionDescription; nSubjectEvent := root.appendChild(xmlDoc.createNode(NODE_ELEMENT,'subjectEvent',nsDef)); nMutationType := nSubjectEvent.appendChild(xmlDoc.createNode(NODE_ELEMENT,'mutationType',nsDef)); nMutationType.text := vMutationType; nReferenceID := nSubjectEvent.appendChild(xmlDoc.createNode(NODE_ELEMENT,'referenceID',nsDef)); nReferenceID.text := vReferenceID; nReferenceID2 := nSubjectEvent.appendChild(xmlDoc.createNode(NODE_ELEMENT,'referenceID2',nsDef)); nReferenceID2.text := vReferenceID; nReferenceType := nSubjectEvent.appendChild(xmlDoc.createNode(NODE_ELEMENT,'referenceType',nsDef)); nReferenceType.text := vReferenceType; nExtPosID := nSubjectEvent.appendChild(xmlDoc.createNode(NODE_ELEMENT,'extPosID',nsDef)); nExtPosID.text := vExtPosID; nRedundancyCheck := nSubjectEvent.appendChild(xmlDoc.createNode(NODE_ELEMENT,'redundancyCheck',nsDef)); nRedundancyCheck.text := vRedundancyCheck; nSubject := nSubjectEvent.appendChild(xmlDoc.createNode(NODE_ELEMENT,'subject',nsDef)); nName := nSubject.appendChild(xmlDoc.createNode(NODE_ELEMENT,'name',nsDef)); nName.text := vName; nNotNaturalPerson := nSubject.appendChild(xmlDoc.createNode(NODE_ELEMENT,'notNaturalPerson',nsDef)); nLegalForm := nNotNaturalPerson .appendChild(xmlDoc.createNode(NODE_ELEMENT,'legalForm',nsDef)); with nLegalForm as IXMLDOMElement do begin text := vLegalForm; setAttribute('rvcd', aLegalForm); end; nFormationType := nNotNaturalPerson .appendChild(xmlDoc.createNode(NODE_ELEMENT,'formationType',nsDef)); with nLegalForm as IXMLDOMElement do begin text := vFormationType; setAttribute('rvcd', aFormationType); end; nFormationDate := nNotNaturalPerson .appendChild(xmlDoc.createNode(NODE_ELEMENT,'formationDate',nsDef)); nFormationDate.text := vFormationDate; nAddress := nSubject.appendChild(xmlDoc.createNode(NODE_ELEMENT,'address',nsDef)); nAddressReferenceID := nAddress.appendChild(xmlDoc.createNode(NODE_ELEMENT,'addressReferenceID',nsDef)); nAddressReferenceID.text := vAddressReferenceID; nAddressTypeOf := nAddress.appendChild(xmlDoc.createNode(NODE_ELEMENT,'addressTypeOf',nsDef)); with nAddressTypeOf as IXMLDOMElement do begin text := vAddressTypeOf; setAttribute('rvcd', aAddressTypeOf); end; nAdditionalStreetPosition := nAddress.appendChild(xmlDoc.createNode(NODE_ELEMENT,'additionalStreetPosition',nsDef)); nAdditionalStreetPosition.text := vAdditionalStreetPosition; nValidFrom := nAddress.appendChild(xmlDoc.createNode(NODE_ELEMENT,'validFrom',nsDef)); nValidFrom.text := vValidFrom; nNote := nAddress.appendChild(xmlDoc.createNode(NODE_ELEMENT,'note',nsDef)); nNote.text := vNote; nPlace := nAddress.appendChild(xmlDoc.createNode(NODE_ELEMENT,'place',nsDef)); nStreet := nPlace.appendChild(xmlDoc.createNode(NODE_ELEMENT,'street',nsDef)); nStreet.text := vStreet; nAdditionalStreet := nPlace.appendChild(xmlDoc.createNode(NODE_ELEMENT,'additionalStreet',nsDef)); with nAdditionalStreet as IXMLDOMElement do begin text := vAdditionalStreet; setAttribute('xsi:nil', aAdditionalStreet); end; nHouseNumber := nPlace.appendChild(xmlDoc.createNode(NODE_ELEMENT,'houseNumber',nsDef)); nHouseNumber.text := vHouseNumber; nAdditionalHouseNumber := nPlace.appendChild(xmlDoc.createNode(NODE_ELEMENT,'additionalHouseNumber',nsDef)); with nAdditionalHouseNumber as IXMLDOMElement do begin text := vAdditionalHouseNumber; setAttribute('xsi:nil', aAdditionalHouseNumber); end; nCity := nPlace.appendChild(xmlDoc.createNode(NODE_ELEMENT,'city',nsDef)); nCityID := nCity.appendChild(xmlDoc.createNode(NODE_ELEMENT,'cityID',nsDef)); nCityID.text := vCityID; nZipCodeID := nCity.appendChild(xmlDoc.createNode(NODE_ELEMENT,'zipCodeID',nsDef)); nZipCodeID.text := vZipCodeID; nZipCode := nCity.appendChild(xmlDoc.createNode(NODE_ELEMENT,'zipCode',nsDef)); nZipCode.text := vZipCode; nTown := nCity.appendChild(xmlDoc.createNode(NODE_ELEMENT,'town',nsDef)); nTown.text := vTown; nCountry := nCity.appendChild(xmlDoc.createNode(NODE_ELEMENT,'country',nsDef)); with nCountry as IXMLDOMElement do begin text := vCountry; setAttribute('rvcd', aCountry); end; nLocality := nCity.appendChild(xmlDoc.createNode(NODE_ELEMENT,'locality',nsDef)); with nLocality as IXMLDOMElement do begin text := vLocality; setAttribute('xsi:nil', aLocality); end; nZipCodeAddOn := nCity.appendChild(xmlDoc.createNode(NODE_ELEMENT,'zipCodeAddOn',nsDef)); // XML - Dokument wird gespeichert. xmlDoc.save(filename); end; Grüsse Cherry |
Re: Attribute die ich gar nicht explizit erstellt habe
Hallo Raphael,
eine Prozedur mit 180 Zeilen Quellcode und einer Signatur mit über 40 Parametern - nein, so würde ich es ganz sicher nicht machen. Die Signatur würde ich durch eine assoziative Liste (TStringList) minimieren und das XML-Dokument würde ich über ein oder mehrere Templates (TPageProducer) generieren. Freundliche Grüße |
Re: Attribute die ich gar nicht explizit erstellt habe
@marabu...
Vielen Dank auch für deine zusätzlichen Tipps... die Parameterübergabe mit TStringList habe ich schon angepasst! ;-) Aber mit der Verwendung von TPageProducer habe ich so meine Bedenken, ich hab noch nie was mit dieser Komponente gemacht, denkst du es wäre wirklich sinnvoll da ich die Dateien nur erstellen und nicht lesen muss. Könntest du mir nich in groben Schritten beschreiben wie genau ich diese Komponenten in Bezug auf mein Problem verwenden muss¿ LG |
Re: Attribute die ich gar nicht explizit erstellt habe
Hallo Raphael,
Zitat:
Hier eine Andeutung für eine mögliche Vorgehensweise:
Delphi-Quellcode:
Im Template steht dann unter anderem so etwas:
procedure TDemoForm.FormCreate(Sender: TObject);
begin Params := TStringList.Create; PageProducer.HTMLDoc.LoadFromFile(fnTemplate); end; procedure TDemoForm.Button1Click(Sender: TObject); begin Params.Clear; Params.Values['userName'] := 'sa'; ShowMessage(PageProducer.Content); end; procedure TDemoForm.PageProducerHTMLTag(Sender: TObject; Tag: TTag; const TagString: String; TagParams: TStrings; var ReplaceText: String); begin case Tag of tgCustom: ReplaceText := Params.Values[TagString]; else ReplaceText := Format('', [TagString]) end; end;
XML-Code:
Das lässt sich nach Belieben verfeinern.
...
<userName><#userName></userName> ... Freundliche Grüße |
Re: Attribute die ich gar nicht explizit erstellt habe
ok sieht auf den ersten Blick etwas kompliziert (ungwohnt) aus, würde ich aber mit angemessenem Aufwand
sicherlich auch irgendwann mal hinkriegen. Sehe ich das aber richtig, damit die Sache einigermassen gut programmiert ist, muss ich das Template als XML - Datei irgendwo abgespeichert haben?! denn sonst wäre es ja irgendwie auch nicht eine schöne Lösung wenn das ganze Zeuchs nur "Virtuell" im Code als Vorlage dient. Verstehst du was ich mit diesem Kauderwelsch sagen will? :lol: Und du persönlich würdes das so machen? Ich denke eifach das eine zusätzliche XML - Datei (Template) irgendwie alles erschwert für eine weitere Verwendung, da ich beschlossen habe für meine XML - Erstellung den Code in eine DLL auszulagern. Die DLL, weil ich noch tonnen weise XMLs mit der genau selben Struktur erstellen muss, nur die Werte ändern, nicht die Tags.. Dein Geheimtipp? :coder: LG |
Re: Attribute die ich gar nicht explizit erstellt habe
Es ist nicht zwingend, dass du ein XML-Template aus einer Datei liest. Du kannst ein solches Template auch aus den Ressourcen der DLL einlesen. Und wenn der Aufbau des XML-Dokuments feststeht, dann ist ein Template ein naheliegender Ansatz. Du darfst dich auch nicht an Details meines Vorschlages klammern. Je nach dem woher deine Daten für die Population des Templates herkommen kann auch ein DB-gestützter Producer interessant sein.
Wahrscheinlich würde ich die Custom Tags das vollständige XML-Element erzeugen lassen - tags und attributes inklusive. In deinem Beispiel habe ich weder Rekursion noch Wiederholung gesehen, aber wenn das benötigt wird, dann würde ich mit verketteten Producern arbeiten. Mache deine Gehversuche nicht am eigentlichen Projekt, sondern erstelle eine Machbarkeitsstudie, mit der du dich auf alle Eventualitäten vorbereitest und die du auch später noch als Testbett verwenden kannst, wenn unbedachte Fälle auftauchen sollten. Freundliche Grüße |
Re: Attribute die ich gar nicht explizit erstellt habe
@marabu ein riesen grosses Dankeschön für dein Engagement.
Ich wünsche noch eine angenehme Woche! THX A LOT |
Re: Attribute die ich gar nicht explizit erstellt habe
Ich benutze nun auf Anraten den Code von marabu.
Innerhalb des Programms werden die Tags auch übersetzt. Wenn ich nun aber den Inhalt in eine HTM-Datei ausgebe, werden die Tags nicht ersetzt. Beispiel: Aus
Code:
soll
</table>
<p align="right"> <font class="font_klein"> Geschrieben mit VPlan v<#version> - [email="svenkan@gmx.de"]Sven Kannenberg[/email]</font></p> </html>
Code:
werden.
</table>
<p align="right"> <font class="font_klein"> Geschrieben mit VPlan v2.0 - [email="svenkan@gmx.de"]Sven Kannenberg[/email]</font></p> </html> Es ist auch deklariert:
Delphi-Quellcode:
Und im Programm (wenn man den Code über ShowMessage ausgeben lässt) funktioniert es auch wunderbar.
Params:=TStringList.Create;
PageProducer.HTMLDoc.LoadFromFile(ExtractFilePath(ParamStr(0))+'templates\vplan_a.vpt'); Params.Clear; Params.Values['schule']:=schule; Params.Values['version']:=version; Muss ich noch etwa spezielles einfügen für die HTML-Ausgabe? |
Re: Attribute die ich gar nicht explizit erstellt habe
Hallo Sven,
ich habe deinen Beitrag leider erst jetzt entdeckt. Hast du dein Problem lösen können? Wenn nein, dann beschreibe bitte wie du die HTML-Ausgabe erstellst. Grüße vom marabu |
Re: Attribute die ich gar nicht explizit erstellt habe
Ah!
Bin heute erst wieder damit angefang, hab die Antwort total übersehen. *g* Also ich bin damals davon ausgegangen, dass bei SaveToFile die 'Variablen' bereits mit den nötigen Informationen gefüttert wurden, also z.B. statt '<#stand>' auch wirklich durch die aktuelle Uhrzeit ersetzt wird. Aber das scheint nicht der Fall zu sein. Deswegen stehe ich heute vor dem gleichen Problem wie damals. |
Re: Attribute die ich gar nicht explizit erstellt habe
So, habs jetzt doch hinbekommen. ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz