Esempio n. 1
0
 /**
  * create a start element
  *
  * <code>
  * require_once 'XML/Util.php';
  *
  * // create an XML start element:
  * $tag = Util::createStartElement('myNs:myTag', 
  *     array('foo' => 'bar') ,'http://www.w3c.org/myNs#');
  * </code>
  *
  * @param string $qname          qualified tagname (including namespace)
  * @param array  $attributes     array containg attributes
  * @param string $namespaceUri   URI of the namespace
  * @param bool   $multiline      whether to create a multiline tag where each 
  *                               attribute gets written to a single line
  * @param string $indent         string used to indent attributes (_auto indents
  *                               attributes so they start at the same column)
  * @param string $linebreak      string used for linebreaks
  * @param bool   $sortAttributes Whether to sort the attributes or not
  *
  * @return string XML start element
  * @access public
  * @static
  * @see createEndElement(), createTag()
  */
 public static function createStartElement($qname, $attributes = array(), $namespaceUri = null, $multiline = false, $indent = '_auto', $linebreak = "\n", $sortAttributes = true)
 {
     // if no attributes hav been set, use empty attributes
     if (!isset($attributes) || !is_array($attributes)) {
         $attributes = array();
     }
     if ($namespaceUri != null) {
         $parts = Util::splitQualifiedName($qname);
     }
     // check for multiline attributes
     if ($multiline === true) {
         if ($indent === '_auto') {
             $indent = str_repeat(' ', strlen($qname) + 2);
         }
     }
     if ($namespaceUri != null) {
         // is a namespace given
         if (isset($parts['namespace']) && !empty($parts['namespace'])) {
             $attributes['xmlns:' . $parts['namespace']] = $namespaceUri;
         } else {
             // define this Uri as the default namespace
             $attributes['xmlns'] = $namespaceUri;
         }
     }
     // create attribute list
     $attList = Util::attributesToString($attributes, $sortAttributes, $multiline, $indent, $linebreak);
     $element = sprintf('<%s%s>', $qname, $attList);
     return $element;
 }