On Monday 19 September 2005 06:04 pm, Ken Tozier wrote: Not a bad Idea. You might like this function I made then ;) function createElement($parentNode, $name, $elements=array()) { $node = $this->Dom->createElement($name); for ($x=0; $x < count($elements); $x++) { if ($elements[$x][0] == ".") { $node->nodeValue = $elements[$x][1]; } else { $node->setAttribute($elements[$x][0], $elements[$x][1]); } } $parentNode->appendChild($node); } general all purpose element creator for those of us that hate to call setAttribute a hundred times ;) > Even better, you can just extend the DOMDocument class, which is > perfect, since I'm basically just adding convenience methods. > > Thanks all for your help > > Ken > > > <?php > $x = new MyDom(); > > $x->createScriptElement('howdy.js'); > $x->createCSSLinkElement('howdy.css'); > $x->createStyledDivElement('bugColumnTitle', "I'm a styled piece > of text!"); > > print($x->saveXML()); > > class MyDom extends DOMDocument > { > function createScriptElement($inPath) > { > $new_elem = $this->createElementAndAppend('script', null); > $new_elem->setAttribute('type', 'text/javascript'); > $new_elem->setAttribute('src', $inPath); > } > > function createCSSLinkElement($inPath) > { > $new_elem = $this->createElementAndAppend('link', null); > $new_elem->setAttribute('href', $inPath); > $new_elem->setAttribute('rel', 'stylesheet'); > $new_elem->setAttribute('media', 'screen'); > } > > function createStyledDivElement($inStyle, $inData) > { > $new_elem = $this->createElementAndAppend('div', $inData); > $new_elem->setAttribute('class', $inStyle); > } > > > function createElementAndAppend($inType, $inData) > { > // setting null inData to an empty string forces a close > tag which is what we want > $elem_data = ($inData == null) ? '' : $inData ; > $new_elem = $this->createElement($inType, $elem_data); > $this->appendChild($new_elem); > return $new_elem; > } > } > ?> > > On Sep 19, 2005, at 6:13 PM, Ken Tozier wrote: > > Thanks Jasper > > > > Works perfectly on my Mac now as well. > > > > Ken > > > > On Sep 19, 2005, at 4:58 PM, Jasper Bryant-Greene wrote: > >> <?php > >> $x = new MyDom(); > >> $x->createScriptElement('howdy.js'); > >> print($x->saveXML()); > >> > >> class MyDom { > >> private $dom; > >> > >> /* __construct() = PHP5 constructor */ > >> function __construct() { > >> $this->dom = new DOMDocument('1.0', 'iso-8859-1'); > >> /* No need to return $this from a constructor */ > >> } > >> > >> function createScriptElement($scriptPath) { > >> $script = $this->dom->createElement('script', ''); > >> $script->setAttribute('type', 'text/javascript'); > >> $script->setAttribute('src', $scriptPath); > >> $this->dom->appendChild($script); > >> /* > >> Doesn't make sense for a createScriptElement() > >> method to also print out the XML, so I made a > >> separate method and called that from the > >> mainline code. > >> */ > >> } > >> > >> function saveXML() { > >> return $this->dom->saveXML(); > >> } > >> } > >> ?> > > > > -- > > PHP General Mailing List (http://www.php.net/) > > To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php