Example #1
0
 /**
  * Builds and creates the Atom XML nodes required by this content
  *
  * The element node representing this content is created separately and
  * passed as the first parameter of this method.
  *
  * The text content of this content is created as a CDATA section.
  *
  * @param DOMNode $node the node representing this content. Extra nodes
  *                      should be created and added to this node.
  *
  * @return void
  */
 protected function _buildNode(DOMNode $node)
 {
     $document = $node->ownerDocument;
     $node->setAttributeNS(XML_Atom_Node::NS, 'type', $this->_type);
     $cdata_node = $document->createCDATASection($this->_text);
     $node->appendChild($cdata_node);
 }
 /**
  * Adds the xsi:type to the DOMNode generated from the corresponding object.
  * @param DOMNode $domNode the DOM node corresponding to the object
  * @param $object the object used to determine the xsi:type
  * @access private
  */
 private function AddXsiType(DOMNode $domNode, $object)
 {
     $xsiType = $domNode->getAttributeNS(self::$XSI_NAMESPACE, 'xsi:type');
     if (method_exists($object, 'getXsiTypeName') && method_exists($object, 'getNamespace') && empty($xsiType)) {
         $xsiTypeName = $object->getXsiTypeName();
         if (isset($xsiTypeName) && $xsiTypeName != '') {
             $prefix = $domNode->lookupPrefix($object->getNamespace());
             $domNode->setAttributeNS(self::$XSI_NAMESPACE, 'xsi:type', (isset($prefix) ? $prefix . ':' : '') . $xsiTypeName);
         }
     }
 }
Example #3
0
 /**
  * Builds all the XML information contained inside this link node.
  *
  * @param DOMNode $node the link node that will contain the XML generated
  *                      by this node.
  *
  * @return void
  */
 protected function _buildNode(DOMNode $node)
 {
     $node->setAttributeNS(XML_Atom_Node::NS, 'href', $this->_href);
     if ($this->_rel != '') {
         $node->setAttributeNS(XML_Atom_Node::NS, 'rel', $this->_rel);
     }
     if ($this->_type != '') {
         $node->setAttributeNS(XML_Atom_Node::NS, 'type', $this->_type);
     }
     if ($this->_hreflang != '') {
         $node->setAttributeNS(XML_Atom_Node::NS, 'hreflang', $this->_hreflang);
     }
     if ($this->_title != '') {
         $node->setAttributeNS(XML_Atom_Node::NS, 'title', $this->_title);
     }
     if ($this->_length !== null) {
         $node->setAttributeNS(XML_Atom_Node::NS, 'length', $this->_length);
     }
 }
Example #4
0
 /**
  * Builds all the XML information contained inside this generator node
  *
  * @param DOMNode $node the node that will contain the XML generated
  *                      by this generator node.
  *
  * @return void
  */
 protected function _buildNode(DOMNode $node)
 {
     $document = $node->ownerDocument;
     if ($this->_uri != '') {
         $node->setAttributeNS(XML_Atom_Node::NS, 'uri', $this->_uri);
     }
     if ($this->_version != '') {
         $node->setAttributeNS(XML_Atom_Node::NS, 'version', $this->_version);
     }
     $generator_content = $document->createTextNode($this->_generator);
     $node->appendChild($generator_content);
 }
Example #5
0
File: core.php Project: refo/kohana
	/**
	 * Applies attributes to a node
	 * @param DOMNode $node
	 * @param array  $attributes as key => value
	 * @return DOMNode
	 */
	private function add_attributes(DOMNode $node, $attributes = array())
	{
		$node_name = $this->meta()->alias($node->tagName);

		if ($this->meta()->attributes($node_name))
		{
			$attributes = array_merge($this->meta()->attributes($node_name), $attributes);
		}

		foreach ($attributes as $key => $val)
		{
			// Trim elements
			$key = $this->meta()->alias(trim($key));
			$val = $this->filter($key, trim($val));
			
			// Set the attribute
			// Let's check if the attribute name has a namespace prefix, and if this prefix is defined in our driver
			if ($this->meta()->ns($key))
			{
				list ($ns, $prefix) = $this->meta()->ns($key);
				// Register the prefixed namespace
				$this->dom_node->setAttributeNS("http://www.w3.org/2000/xmlns/" ,"xmlns:$prefix", $ns);
				// Add the prefixed attribute within that namespace
				$node->setAttributeNS($ns, $key, $val);
			}
			else
			{
				// Simply add the attribute
				$node->setAttribute($key, $val);
			}
		}
		return $node;
	}
Example #6
0
 /**
  * Builds all the XML information contained inside this node.
  *
  * @param DOMNode $node the parent node that will contain the XML
  *                      generated by this node.
  *
  * @return void
  */
 protected function _buildNode(DOMNode $node)
 {
     $document = $node->ownerDocument;
     $node->setAttributeNS(XML_Atom_Node::NS, 'term', $this->_term);
     if ($this->_scheme != '') {
         $node->setAttributeNS(XML_Atom_Node::NS, 'scheme', $this->_scheme);
     }
     if ($this->_label != '') {
         $node->setAttributeNS(XML_Atom_Node::NS, 'label', $this->_label);
     }
 }
Example #7
0
 /**
  * Transfer an object value into a target element node. If the object has no properties,
  * the json:type attribute is always set to 'object'. If verbose is not set the json:type attribute will
  * be omitted if the object value has properties.
  *
  * The method creates child nodes for each property. The property name will be normalized to a valid NCName.
  * If the normalized NCName is different from the property name or verbose is TRUE, a json:name attribute
  * with the property name will be added.
  *
  * @param \DOMNode|\DOMElement|\DOMDocumentFragment $target
  * @param object $value
  * @param int $recursions
  */
 private function transferObjectTo(\DOMNode $target, $value, $recursions)
 {
     $properties = is_array($value) ? $value : get_object_vars($value);
     if ($this->_verbose || empty($properties)) {
         $target->setAttributeNS(self::XMLNS, 'json:type', 'object');
     }
     foreach ($properties as $property => $item) {
         $qname = $this->getQualifiedName($property, self::DEFAULT_QNAME);
         $target->appendChild($child = $target->ownerDocument->createElement($qname));
         if ($this->_verbose || $qname != $property) {
             $child->setAttributeNS(self::XMLNS, 'json:name', $property);
         }
         $this->transferTo($child, $item, $recursions);
     }
 }