Hi all.

I am working on implementing a lite export routine from our program to the DDI XML format: http://www.ddialliance.org/Specification/DDI-Lifecycle/3.1/XMLSchema/

A convinient way of working with the DDI format is to prefix elements using common set of prefix'es, but having spent most
of the day trying to I can only make it work with a single prefix.

program project1;
{$mode objfpc}{$H+}

uses
  Classes, DOM, XMLWrite;

var
  XMLDoc: TXMLDocument;
  DDIInstance: TDOMElement;
  Attr: TDOMAttr;

begin
  XMLDoc := TXMLDocument.Create;
  DDIInstance := XMLDoc.CreateElementNS('ddi:instance:3_0', 'DDIInstance');
DDIInstance.Prefix := 'ns1'; // this gives me: <ns1:DDIInstance xmlns:ns1="ddi:instance:3_0"> which is great.

  // now I would like to expand with eg: xmlns:a="ddi:archive:3_0"
  Attr := XMLDoc.CreateAttributeNS('ddi:archive:3_0', 'huh');
  Attr.Prefix := 'a';
DDIInstance.SetAttributeNode(Attr); // but this gives: <ns1:DDIInstance xmlns:ns1="ddi:instance:3_0" xmlns:a="ddi:archive:3_0" a:huh=""/>

  Xmldoc.AppendChild(DDIInstance);

  WriteXMLFile(XMLDOc, '/tmp/test.xml');
end.

How can i get the "xmlns:a="ddi:archive:3_0" without the additional attribute AND maintain the namespace + prefix in later elements?

Kind regards,
Torsten Bonde Christiansen.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to