Jump to content

xml problem


malbolgia

Recommended Posts

[code]<?php

class Books extends DomDocument {
    function __construct() {
        //has to be called!
        parent::__construct();
    }
    
    function addBook($isbn, $title, $name, $born, $dead, $charname, $charborn, $charqual){
        $root = $this->createElement('library');
        
        $root->setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");    
        $root->setAttribute("xsi:SchemaLocation", "librarysch.xsd");    
        $root = $this->appendChild($root);
        $bookelement = $this->createElement("book");
        $bookelement->setAttribute("id", "b".$isbn);
        $bookelement->setAttribute("available", "true");
        /*isbn*/
        $isbnspace = $this->createElement("isbn");
        $isbnspace->appendChild($this->createTextNode($isbn));        
        $bookelement->appendChild($isbnspace);
        /*title*/
        $titlespace = $this->createElement("title");
        $titlespace->appendChild($this->createTextNode($title));
        $titlespace->setAttribute("lang", "en");
        $bookelement->appendChild($titlespace);
        /*author*/
        $authorspace = $this->createElement("author");
        $temp = explode(" ", $name);
        $authorspace->setAttribute("id", $temp[0]);
        //name
        $namespace = $this->createElement("name");
        $namespace->appendChild($this->createTextNode($name));
        $authorspace->appendChild($namespace);
        //born
        $bornspace = $this->createElement("born");
        $bornspace->appendChild($this->createTextNode($born));
        $authorspace->appendChild($bornspace);
        //dead
        $deadspace = $this->createElement("dead");    
        $deadspace->appendChild($this->createTextNode($dead));
        $authorspace->appendChild($deadspace);  
        $bookelement->appendChild($authorspace);        
        /*Character*/
        $characterspace = $this->createElement("character");
        $characterspace->setAttribute("id", $charname);
        //name
        $namespace = $this->createElement("name");
        $namespace->appendChild($this->createTextNode($charname));
        $characterspace->appendChild($namespace);
        //born
        $bornspace = $this->createElement("born");
        $bornspace->appendChild($this->createTextNode($charborn));
        $characterspace->appendChild($bornspace);
        //qualificatiom
        $qualspace = $this->createElement("qualification");
        $qualspace->appendChild($this->createTextNode($charqual));
        $characterspace->appendChild($qualspace);              
        $bookelement->appendChild($characterspace);
        //$dom->appendChild($bookelement);
        $this->documentElement->appendChild($bookelement);
    }
}
$doc = new DOMDocument('1.0');
$doc->formatOutput = true;
$dom = new Books();

$isbn = stripslashes($_POST['isbn']);
$title = stripslashes($_POST['title']);
$name = stripslashes($_POST['name']);
$born = stripslashes($_POST['born']);
$dead = stripslashes($_POST['dead']);
$charname = stripslashes($_POST['charname']);
$charborn = stripslashes($_POST['charborn']);
$charqual = stripslashes($_POST['charqual']);
$dom->addBook($isbn, $title, $name, $born, $dead, $charname, $charborn, $charqual);
$dom->schemaValidate('librarysch.xsd');
print $dom->save("newfile.xml");
print $dom->saveXML();
?>
[/code]

im making a new xml file from a form submited by a user, everything works fine until i try to add the schema location and name space.

Im trying to do this with this

$root->setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
$root->setAttribute("xsi:SchemaLocation", "librarysch.xsd");

but i get Attribute "xmlns:xsi" not allowed

how can i add schema information to the xml?

and another question how do i add the stylesheet?
Link to comment
https://forums.phpfreaks.com/topic/8483-xml-problem/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.