are you sure your siebel serverdoesn't do soap... soap allows arbitrary xml to be passed... its just wrapped in some soap xml... so maybe it accepts soap and just has a rigid idea of what can be inside
as a pear enthusiast i will recommend you look at pear.php.net and search for XML_Tree
pear has an XML_Tree object, you make an xml tree, add a node, etc untill you have a dom representation of your object... then ask the Tree object to write itself as an xml string... (this gives you arbitrary flexability in your xml output and doesn't have the soap wrapper)
going the DOM way may be a little overkill for just message passing... but at least you can look over the PEAR XML_Tree object for a good example of how to implement the use of phps built in xml functions
view php's built in [man]xml[/man] functions
you might want to build your own parser and writter yourself
[edit]
problems: what type of info does your sieble server send... if it just sends an xml request or a http request with an xml message somehow posted or gettted...
if it sends straight xml you are stuck writing your own php/xml server outside of your webserver... ick
php comes with full [man]socket[/man]s support so you can just write a standalone php server that exists outside of your web directory... but as i said... ick
if your siebel can send an http request with the xml tragged along you could use your webserver to send/recieve messages... when the page gets called look at the ip address
$_SERVER['REMOTE_ADDR']
and if it is not from your siebel server's address then do nothing... else... if it is from your server, then parse the incoming xml using php, ask databse for stufff, make results into xml, return as body of http response